GH-50410: [Python][Packaging] Drop Python 3.10 support#50411
Conversation
| {% for python_version, pandas_version, numpy_version, cache_leaf in [("3.10", "1.3.4", "1.21.2", True), | ||
| ("3.11", "latest", "latest", False), | ||
| ("3.12", "latest", "1.26", False), | ||
| {% for python_version, pandas_version, numpy_version, cache_leaf in [("3.11", "1.5.2", "1.21.2", True), |
There was a problem hiding this comment.
Do we have a separate issue open for NumPy 1.x? According to https://endoflife.date/numpy, only NumPy 2+ is currently supported upstream. Removing our support for NumPy 1.x could simplify some things quite a bit.
There was a problem hiding this comment.
There was a problem hiding this comment.
We have one:
I am going to mark all those issues as 26.0.0 to see if we can track them to bump all of them.
|
@github-actions crossbow submit -g python |
|
Revision: b05b2c9 Submitted crossbow builds: ursacomputing/crossbow @ actions-bb925f49f5 |
|
@github-actions crossbow submit test-conda-python-3.13-pandas-latest-numpy-1.26.2 |
|
Revision: 5cbeee1 Submitted crossbow builds: ursacomputing/crossbow @ actions-1a7772d721
|
|
@github-actions crossbow submit test-ubuntu-*-python-3 |
|
|
@github-actions crossbow submit test-ubuntu-*-python-3 |
|
Revision: 554da17 Submitted crossbow builds: ursacomputing/crossbow @ actions-e5f73ed671
|
|
@github-actions crossbow submit test-ubuntu-24.04-python-3 |
|
Revision: acb4527 Submitted crossbow builds: ursacomputing/crossbow @ actions-8c1a26ad8a
|
|
@github-actions crossbow submit -g wheel |
|
Revision: d0b836c Submitted crossbow builds: ursacomputing/crossbow @ actions-b13f71ef32 |
|
@github-actions crossbow submit python-sdist |
|
Revision: c41028a Submitted crossbow builds: ursacomputing/crossbow @ actions-01ee1cf1ce
|
There was a problem hiding this comment.
Pull request overview
Drops Python 3.10 support across PyArrow packaging, documentation, CI, and release verification tooling in preparation for the 26.0.0 release, aligning the repository’s minimum supported Python version to 3.11.
Changes:
- Bumped minimum supported Python version to 3.11 (packaging metadata, Archery tooling, docs, and helper scripts).
- Updated CI/Crossbow/Archery configurations and Docker images to stop using Python 3.10 and to use newer baseline images where needed.
- Updated release verification scripts (shell + Windows batch) and tasks definitions to remove Python 3.10 wheel/sdist testing.
Reviewed changes
Copilot reviewed 32 out of 32 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| r/tests/testthat/test-python.R | Updates reticulate test skips to reflect Python >= 3.11 support. |
| python/pyproject.toml | Raises requires-python and updates classifiers/pyright baseline to 3.11+. |
| python/examples/minimal_build/build_conda.sh | Bumps example conda build Python version to 3.11. |
| docs/source/python/install.rst | Updates stated Python compatibility and optional dependency minimums. |
| docs/source/developers/continuous_integration/crossbow.rst | Updates documented minimum Python version for Crossbow usage. |
| docs/source/developers/continuous_integration/archery.rst | Updates documented minimum Python version for Archery. |
| dev/tasks/tasks.yml | Removes 3.10 wheels/integration variants and refreshes Python/pandas/numpy CI matrices. |
| dev/tasks/python-wheels/github.linux.yml | Shifts Ubuntu wheel test gating from 3.10 to 3.11. |
| dev/tasks/python-sdist/github.yml | Moves sdist test job to Ubuntu 24.04 baseline. |
| dev/release/verify-release-candidate.sh | Removes 3.10 from release-candidate wheel verification. |
| dev/release/verify-release-candidate.bat | Updates Windows RC verification default Python to 3.11. |
| dev/release/verify-release-candidate-wheels.bat | Drops 3.10 wheel verification and adds 3.14. |
| dev/archery/setup.py | Enforces Archery install/runtime minimum Python 3.11. |
| compose.yaml | Updates documented supported PYTHON values for compose images. |
| ci/scripts/r_install_system_dependencies.sh | Updates OpenSUSE Python package/symlinks to 3.11. |
| ci/scripts/install_python.sh | Removes 3.10 from installable versions and refreshes patch versions. |
| ci/docker/python-wheel-windows-vs2022.dockerfile | Updates default Python build ARG to 3.11. |
| ci/docker/python-wheel-windows-test-vs2022.dockerfile | Removes 3.10 handling and updates version pins for 3.11+. |
| ci/docker/python-wheel-musllinux.dockerfile | Switches base Python override to cp311. |
| ci/docker/python-wheel-musllinux-test.dockerfile | Removes special-case logic that only existed for 3.10 constraints. |
| ci/docker/python-wheel-manylinux.dockerfile | Switches base Python override to cp311. |
| ci/docker/cpp-jni.dockerfile | Switches base Python override to cp311. |
| ci/docker/conda-python*.dockerfile | Updates default conda Python ARGs to 3.11 across images. |
| ci/docker/conda-cpp.dockerfile | Switches default Python ARG to 3.11. |
| .github/workflows/python.yml | Updates CI matrix to drop 3.10 and refreshes tested Python/pandas/numpy combos. |
| .env | Updates default PYTHON/PYTHON_IMAGE_TAG/PYTHON_ABI_TAG to 3.11/cp311. |
Rationale for this change
Python 3.10 is End of Support on October 2026. We can drop support on PyArrow 26.0.0.
See: https://endoflife.date/python
What changes are included in this PR?
Remove support for 3.10. Update minimum required Python version and update some CI jobs to use the minimum Python supported version.
Some CI jobs using default Python 3.10 (Ubuntu 20.04) have been bumped.
Are these changes tested?
They will be tested via CI and Archery
Are there any user-facing changes?
Yes in terms of not supporting older versions of Python. This will be a breaking change for some users but not for the API itself