2626 timeout-minutes : 90
2727 strategy :
2828 matrix :
29- platform : [ubuntu-22 .04, ubuntu-24.04-arm]
30- env_file : [actions-310.yaml, actions-311.yaml, actions-312.yaml]
29+ platform : [ubuntu-24 .04, ubuntu-24.04-arm]
30+ env_file : [actions-310.yaml, actions-311.yaml, actions-312.yaml, actions-313.yaml ]
3131 # Prevent the include jobs from overriding other jobs
3232 pattern : [""]
3333 pandas_future_infer_string : ["0"]
@@ -36,11 +36,15 @@ jobs:
3636 env_file : actions-311-downstream_compat.yaml
3737 pattern : " not slow and not network and not single_cpu"
3838 pytest_target : " pandas/tests/test_downstream.py"
39- platform : ubuntu-22 .04
39+ platform : ubuntu-24 .04
4040 - name : " Minimum Versions"
4141 env_file : actions-310-minimum_versions.yaml
4242 pattern : " not slow and not network and not single_cpu"
43- platform : ubuntu-22.04
43+ platform : ubuntu-24.04
44+ - name : " Freethreading"
45+ env_file : actions-313-freethreading.yaml
46+ pattern : " not slow and not network and not single_cpu"
47+ platform : ubuntu-24.04
4448 - name : " Locale: it_IT"
4549 env_file : actions-311.yaml
4650 pattern : " not slow and not network and not single_cpu"
5155 # Also install it_IT (its encoding is ISO8859-1) but do not activate it.
5256 # It will be temporarily activated during tests with locale.setlocale
5357 extra_loc : " it_IT"
54- platform : ubuntu-22 .04
58+ platform : ubuntu-24 .04
5559 - name : " Locale: zh_CN"
5660 env_file : actions-311.yaml
5761 pattern : " not slow and not network and not single_cpu"
@@ -62,30 +66,30 @@ jobs:
6266 # Also install zh_CN (its encoding is gb2312) but do not activate it.
6367 # It will be temporarily activated during tests with locale.setlocale
6468 extra_loc : " zh_CN"
65- platform : ubuntu-22 .04
69+ platform : ubuntu-24 .04
6670 - name : " Future infer strings"
6771 env_file : actions-312.yaml
6872 pandas_future_infer_string : " 1"
69- platform : ubuntu-22 .04
73+ platform : ubuntu-24 .04
7074 - name : " Future infer strings (without pyarrow)"
7175 env_file : actions-311.yaml
7276 pandas_future_infer_string : " 1"
73- platform : ubuntu-22 .04
77+ platform : ubuntu-24 .04
7478 - name : " Pypy"
7579 env_file : actions-pypy-39.yaml
7680 pattern : " not slow and not network and not single_cpu"
7781 test_args : " --max-worker-restart 0"
78- platform : ubuntu-22 .04
82+ platform : ubuntu-24 .04
7983 - name : " Numpy Dev"
8084 env_file : actions-311-numpydev.yaml
8185 pattern : " not slow and not network and not single_cpu"
8286 test_args : " -W error::DeprecationWarning -W error::FutureWarning"
83- platform : ubuntu-22 .04
87+ platform : ubuntu-24 .04
8488 - name : " Pyarrow Nightly"
8589 env_file : actions-311-pyarrownightly.yaml
8690 pattern : " not slow and not network and not single_cpu"
8791 pandas_future_infer_string : " 1"
88- platform : ubuntu-22 .04
92+ platform : ubuntu-24 .04
8993 fail-fast : false
9094 name : ${{ matrix.name || format('{0} {1}', matrix.platform, matrix.env_file) }}
9195 env :
@@ -165,6 +169,9 @@ jobs:
165169 - name : Build Pandas
166170 id : build
167171 uses : ./.github/actions/build_pandas
172+ with :
173+ # xref https://github.com/cython/cython/issues/6870
174+ werror : ${{ matrix.name != 'Freethreading' }}
168175 # TODO: Re-enable once Pypy has Pypy 3.10 on conda-forge
169176 if : ${{ matrix.name != 'Pypy' }}
170177
@@ -188,7 +195,7 @@ jobs:
188195 matrix :
189196 # Note: Don't use macOS latest since macos 14 appears to be arm64 only
190197 os : [macos-13, macos-14, windows-latest]
191- env_file : [actions-310.yaml, actions-311.yaml, actions-312.yaml]
198+ env_file : [actions-310.yaml, actions-311.yaml, actions-312.yaml, actions-313.yaml ]
192199 fail-fast : false
193200 runs-on : ${{ matrix.os }}
194201 name : ${{ format('{0} {1}', matrix.os, matrix.env_file) }}
@@ -220,7 +227,7 @@ jobs:
220227 uses : ./.github/actions/run-tests
221228
222229 Linux-32-bit :
223- runs-on : ubuntu-22 .04
230+ runs-on : ubuntu-24 .04
224231 container :
225232 image : quay.io/pypa/manylinux2014_i686
226233 options : --platform linux/386
@@ -241,12 +248,14 @@ jobs:
241248 fi
242249 - name : Build environment and Run Tests
243250 # https://github.com/numpy/numpy/issues/24703#issuecomment-1722379388
251+ # Note: Pinned to Cython 3.0.10 to avoid numerical instability in 32-bit environments
252+ # https://github.com/pandas-dev/pandas/pull/61423
244253 run : |
245254 /opt/python/cp313-cp313/bin/python -m venv ~/virtualenvs/pandas-dev
246255 . ~/virtualenvs/pandas-dev/bin/activate
247256 python -m pip install --no-cache-dir -U pip wheel setuptools meson[ninja]==1.2.1 meson-python==0.13.1
248257 python -m pip install numpy -Csetup-args="-Dallow-noblas=true"
249- python -m pip install --no-cache-dir versioneer[toml] cython python-dateutil pytest>=7.3.2 pytest-xdist>=3.4.0 hypothesis>=6.84.0
258+ python -m pip install --no-cache-dir versioneer[toml] cython==3.0.10 python-dateutil pytest>=7.3.2 pytest-xdist>=3.4.0 hypothesis>=6.84.0
250259 python -m pip install --no-cache-dir --no-build-isolation -e . -Csetup-args="--werror"
251260 python -m pip list --no-cache-dir
252261 PANDAS_CI=1 python -m pytest -m 'not slow and not network and not clipboard and not single_cpu' pandas --junitxml=test-data.xml
@@ -256,7 +265,7 @@ jobs:
256265 cancel-in-progress : true
257266
258267 Linux-Musl :
259- runs-on : ubuntu-22 .04
268+ runs-on : ubuntu-24 .04
260269 container :
261270 image : quay.io/pypa/musllinux_1_2_x86_64
262271 steps :
@@ -316,7 +325,7 @@ jobs:
316325 # To freeze this file, uncomment out the ``if: false`` condition, and migrate the jobs
317326 # to the corresponding posix/windows-macos/sdist etc. workflows.
318327 # Feel free to modify this comment as necessary.
319- # if: false # Uncomment this to freeze the workflow, comment it to unfreeze
328+ if : false
320329 defaults :
321330 run :
322331 shell : bash -eou pipefail {0}
@@ -325,7 +334,7 @@ jobs:
325334 fail-fast : false
326335 matrix :
327336 # Separate out macOS 13 and 14, since macOS 14 is arm64 only
328- os : [ubuntu-22 .04, macOS-13, macOS-14, windows-latest]
337+ os : [ubuntu-24 .04, macOS-13, macOS-14, windows-latest]
329338
330339 timeout-minutes : 90
331340
@@ -362,48 +371,6 @@ jobs:
362371 - name : Run Tests
363372 uses : ./.github/actions/run-tests
364373
365- python-freethreading :
366- defaults :
367- run :
368- shell : bash -eou pipefail {0}
369- runs-on : ubuntu-22.04
370-
371- timeout-minutes : 90
372-
373- concurrency :
374- # https://github.community/t/concurrecy-not-work-for-push/183068/7
375- group : ${{ github.event_name == 'push' && github.run_number || github.ref }}-python-freethreading-dev
376- cancel-in-progress : true
377-
378- env :
379- PYTEST_WORKERS : " auto"
380- PANDAS_CI : 1
381- PATTERN : " not slow and not network and not clipboard and not single_cpu"
382- PYTEST_TARGET : pandas
383-
384- steps :
385- - uses : actions/checkout@v4
386- with :
387- fetch-depth : 0
388-
389- - name : Set up Python Free-threading Version
390- uses : deadsnakes/action@v3.2.0
391- with :
392- python-version : 3.13-dev
393- nogil : true
394-
395- - name : Build Environment
396- run : |
397- python --version
398- python -m pip install --upgrade pip setuptools wheel numpy meson[ninja]==1.2.1 meson-python==0.13.1
399- python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple cython
400- python -m pip install versioneer[toml] python-dateutil pytz tzdata hypothesis>=6.84.0 pytest>=7.3.2 pytest-xdist>=3.4.0 pytest-cov
401- python -m pip install -ve . --no-build-isolation --no-index --no-deps -Csetup-args="--werror"
402- python -m pip list
403-
404- - name : Run Tests
405- uses : ./.github/actions/run-tests
406-
407374 # NOTE: this job must be kept in sync with the Pyodide build job in wheels.yml
408375 emscripten :
409376 # Note: the Python version, Emscripten toolchain version are determined
@@ -413,7 +380,7 @@ jobs:
413380 # The Node.js version can be determined via Pyodide:
414381 # https://pyodide.org/en/stable/usage/index.html#node-js
415382 name : Pyodide build
416- runs-on : ubuntu-22 .04
383+ runs-on : ubuntu-24 .04
417384 concurrency :
418385 # https://github.community/t/concurrecy-not-work-for-push/183068/7
419386 group : ${{ github.event_name == 'push' && github.run_number || github.ref }}-wasm
0 commit comments