Skip to content

Commit aedb752

Browse files
raulcdkou
andauthored
GH-47443: [Python][Packaging] Drop Python 3.9 support (#47478)
### Rationale for this change Python 3.9 is End of Support on 31st October 2025. We can drop support for pyarrow 22.0.0. See: https://endoflife.date/python ### What changes are included in this PR? Remove support for 3.9. Update minimum required Python version and update some CI jobs to use the minimum Python supported version ### 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 * GitHub Issue: #47443 Lead-authored-by: Raúl Cumplido <[email protected]> Co-authored-by: Sutou Kouhei <[email protected]> Signed-off-by: Raúl Cumplido <[email protected]>
1 parent 41ce51b commit aedb752

37 files changed

+101
-143
lines changed

.env

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ NUMBA=latest
7070
NUMBA_CUDA=latest
7171
NUMPY=latest
7272
PANDAS=latest
73-
PYTHON=3.9
74-
PYTHON_IMAGE_TAG=3.9
75-
PYTHON_ABI_TAG=cp39
73+
PYTHON=3.10
74+
PYTHON_IMAGE_TAG=3.10
75+
PYTHON_ABI_TAG=cp310
7676
R=4.5
7777
SPARK=master
7878
TURBODBC=latest

.github/workflows/archery.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ jobs:
6767
- name: Setup Python
6868
uses: actions/[email protected]
6969
with:
70-
python-version: '3.9'
70+
python-version: '3.12'
7171
- name: Install pygit2 binary wheel
7272
run: pip install pygit2 --only-binary pygit2
7373
- name: Install Archery, Crossbow- and Test Dependencies

.github/workflows/cpp.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ jobs:
468468
uses: actions/[email protected]
469469
id: python-install
470470
with:
471-
python-version: 3.9
471+
python-version: '3.12'
472472
- name: Install Google Cloud Storage Testbench
473473
shell: msys2 {0}
474474
env:

.github/workflows/docs_light.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ env:
4141
jobs:
4242

4343
light:
44-
name: AMD64 Conda Python 3.9 Sphinx Documentation
44+
name: AMD64 Conda Python 3.12 Sphinx Documentation
4545
runs-on: ubuntu-latest
4646
if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
4747
timeout-minutes: 60
4848
env:
49-
PYTHON: "3.9"
49+
PYTHON: "3.12"
5050
steps:
5151
- name: Checkout Arrow
5252
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

.github/workflows/python.yml

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -63,41 +63,41 @@ jobs:
6363
matrix:
6464
name:
6565
- conda-python-docs
66-
- conda-python-3.10-nopandas
67-
- conda-python-3.9-pandas-1.1.3
68-
- conda-python-3.11-pandas-latest
69-
- conda-python-3.11-no-numpy
66+
- conda-python-3.11-nopandas
67+
- conda-python-3.10-pandas-1.3.4
68+
- conda-python-3.13-pandas-latest
69+
- conda-python-3.12-no-numpy
7070
include:
7171
- name: conda-python-docs
7272
cache: conda-python-3.10
7373
image: conda-python-docs
7474
title: AMD64 Conda Python 3.10 Sphinx & Numpydoc
7575
python: "3.10"
76-
- name: conda-python-3.10-nopandas
77-
cache: conda-python-3.10
76+
- name: conda-python-3.11-nopandas
77+
cache: conda-python-3.11
7878
image: conda-python
79-
title: AMD64 Conda Python 3.10 Without Pandas
80-
python: "3.10"
81-
- name: conda-python-3.9-pandas-1.1.3
82-
cache: conda-python-3.9
79+
title: AMD64 Conda Python 3.11 Without Pandas
80+
python: "3.11"
81+
- name: conda-python-3.10-pandas-1.3.4
82+
cache: conda-python-3.10
8383
image: conda-python-pandas
84-
title: AMD64 Conda Python 3.9 Pandas 1.1.3
85-
python: 3.9
86-
pandas: "1.1.3"
87-
numpy: 1.19.5
88-
- name: conda-python-3.11-pandas-latest
89-
cache: conda-python-3.11
84+
title: AMD64 Conda Python 3.10 Pandas 1.3.4
85+
python: "3.10"
86+
pandas: "1.3.4"
87+
numpy: "1.21.2"
88+
- name: conda-python-3.13-pandas-latest
89+
cache: conda-python-3.13
9090
image: conda-python-pandas
91-
title: AMD64 Conda Python 3.11 Pandas latest
92-
python: "3.11"
91+
title: AMD64 Conda Python 3.13 Pandas latest
92+
python: "3.13"
9393
pandas: latest
94-
- name: conda-python-3.11-no-numpy
95-
cache: conda-python-3.11
94+
- name: conda-python-3.12-no-numpy
95+
cache: conda-python-3.12
9696
image: conda-python-no-numpy
97-
title: AMD64 Conda Python 3.11 without NumPy
98-
python: "3.11"
97+
title: AMD64 Conda Python 3.12 without NumPy
98+
python: "3.12"
9999
env:
100-
PYTHON: ${{ matrix.python || 3.9 }}
100+
PYTHON: ${{ matrix.python || 3.10 }}
101101
UBUNTU: ${{ matrix.ubuntu || 22.04 }}
102102
PANDAS: ${{ matrix.pandas || 'latest' }}
103103
NUMPY: ${{ matrix.numpy || 'latest' }}

ci/docker/conda-python-cpython-debug.dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717

1818
ARG repo
1919
ARG arch
20-
ARG python=3.9
20+
ARG python=3.10
2121
FROM ${repo}:${arch}-conda-python-${python}
2222

2323
# (Docker oddity: ARG needs to be repeated after FROM)
24-
ARG python=3.9
24+
ARG python=3.10
2525
RUN mamba install -y "conda-forge/label/python_debug::python=${python}[build=*_cpython]" && \
2626
mamba clean --all --yes
2727
# Quick check that we do have a debug mode CPython

ci/docker/conda-python-dask.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
ARG repo
1919
ARG arch=amd64
20-
ARG python=3.9
20+
ARG python=3.10
2121
FROM ${repo}:${arch}-conda-python-${python}
2222

2323
ARG dask=latest

ci/docker/conda-python-hdfs.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
ARG repo
1919
ARG arch=amd64
20-
ARG python=3.9
20+
ARG python=3.10
2121
FROM ${repo}:${arch}-conda-python-${python}
2222

2323
ARG jdk=11

ci/docker/conda-python-jpype.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
ARG repo
1919
ARG arch=amd64
20-
ARG python=3.9
20+
ARG python=3.10
2121
FROM ${repo}:${arch}-conda-python-${python}
2222

2323
ARG jdk=11

ci/docker/conda-python-pandas.dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
ARG repo
1919
ARG arch=amd64
20-
ARG python=3.9
20+
ARG python=3.10
2121
FROM ${repo}:${arch}-conda-python-${python}
2222

2323
ARG pandas=latest

0 commit comments

Comments
 (0)