chitralverma opened a new issue, #7816:
URL: https://github.com/apache/opendal/issues/7816
## Feature Description
Raise the minimum supported Python version for the `opendal` Python binding
from 3.10 to at least 3.12. Concretely:
- `bindings/python/pyproject.toml`: `requires-python = ">=3.10"` → `">=3.12"`
- Drop the dedicated cp310 wheel build leg and make the `abi3` (currently
`abi3-py311`) wheel the single non-free-threaded artifact, bumped to
`abi3-py312`. (Free-threaded builds, which landed in Python 3.13, stay
as-is:
`3.13t`, `3.14t`.)
- Update CI to stop testing on 3.10/3.11, thereby dropping support for them.
## Problem and Solution
**Problem**
Python release/EOL timeline (from https://endoflife.date/python):
| Version | Released | EOL |
| ------- | -------- | --- |
| 3.9 | 2020-10 | 2025-10-31 (past) |
| 3.10 | 2021-10 | 2026-10-31 |
| 3.11 | 2022-10 | 2027-10-31 |
| 3.12 | 2023-10 | 2028-10-31 |
| 3.13 | 2024-10 | 2029-10-31 |
The binding's declared floor (`>=3.10`) targets versions that are at or near
end of life, and keeping 3.10 carries concrete maintenance overhead:
- The abi3 floor is already `pyo3/abi3-py311` (`bindings/python/Cargo.toml`),
with the standing comment *"we build cp311-abi3 and cp310 wheels now, move
this to pyo3 after we drop cp310."* 3.10 therefore needs a **separate,
non-abi3 wheel** in `release_python.yml` (`-i python3.10`) in addition to
the
abi3-py311 wheel — an extra build/release leg solely for the oldest
interpreter.
**Solution**
Bump to `>=3.12` and consolidate the wheel matrix:
- One abi3 wheel (`abi3-py312`) covering 3.12+, plus the existing
free-threaded
builds (3.13t, 3.14t).
- Remove the cp310 build leg and the "drop cp310" FIXME.
- Update `requires-python`, CI test interpreters (currently `python3.10` in
`test_behavior_binding_python.yml` and `python3.11` in
`ci_bindings_python.yml`), and any `Programming Language :: Python`
metadata.
Benefits:
- Fewer wheels to build/test/publish per release; simpler matrix.
- Drops interpreters that are at or near EOL.
- Lets the binding use 3.12-era language/stdlib features without guards.
## Additional Context
This surfaced while investigating the Python binding's stub generation, but
it
is independent of that work and warrants its own change.
## Are you willing to contribute?
Yes, I can raise a PR for this.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]