Skip to content

CI: Have dedicated Python 3.13 job instead of using Python dev #61333

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 17 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 69 additions & 64 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,65 +27,65 @@ jobs:
strategy:
matrix:
platform: [ubuntu-22.04, ubuntu-24.04-arm]
env_file: [actions-310.yaml, actions-311.yaml, actions-312.yaml]
env_file: [actions-313.yaml]
# Prevent the include jobs from overriding other jobs
pattern: [""]
pandas_future_infer_string: ["0"]
include:
- name: "Downstream Compat"
env_file: actions-311-downstream_compat.yaml
pattern: "not slow and not network and not single_cpu"
pytest_target: "pandas/tests/test_downstream.py"
platform: ubuntu-22.04
- name: "Minimum Versions"
env_file: actions-310-minimum_versions.yaml
pattern: "not slow and not network and not single_cpu"
platform: ubuntu-22.04
- name: "Locale: it_IT"
env_file: actions-311.yaml
pattern: "not slow and not network and not single_cpu"
extra_apt: "language-pack-it"
# Use the utf8 version as the default, it has no bad side-effect.
lang: "it_IT.utf8"
lc_all: "it_IT.utf8"
# Also install it_IT (its encoding is ISO8859-1) but do not activate it.
# It will be temporarily activated during tests with locale.setlocale
extra_loc: "it_IT"
platform: ubuntu-22.04
- name: "Locale: zh_CN"
env_file: actions-311.yaml
pattern: "not slow and not network and not single_cpu"
extra_apt: "language-pack-zh-hans"
# Use the utf8 version as the default, it has no bad side-effect.
lang: "zh_CN.utf8"
lc_all: "zh_CN.utf8"
# Also install zh_CN (its encoding is gb2312) but do not activate it.
# It will be temporarily activated during tests with locale.setlocale
extra_loc: "zh_CN"
platform: ubuntu-22.04
- name: "Future infer strings"
env_file: actions-312.yaml
pandas_future_infer_string: "1"
platform: ubuntu-22.04
- name: "Future infer strings (without pyarrow)"
env_file: actions-311.yaml
pandas_future_infer_string: "1"
platform: ubuntu-22.04
- name: "Pypy"
env_file: actions-pypy-39.yaml
pattern: "not slow and not network and not single_cpu"
test_args: "--max-worker-restart 0"
platform: ubuntu-22.04
- name: "Numpy Dev"
env_file: actions-311-numpydev.yaml
pattern: "not slow and not network and not single_cpu"
test_args: "-W error::DeprecationWarning -W error::FutureWarning"
platform: ubuntu-22.04
- name: "Pyarrow Nightly"
env_file: actions-311-pyarrownightly.yaml
pattern: "not slow and not network and not single_cpu"
pandas_future_infer_string: "1"
platform: ubuntu-22.04
# include:
# - name: "Downstream Compat"
# env_file: actions-311-downstream_compat.yaml
# pattern: "not slow and not network and not single_cpu"
# pytest_target: "pandas/tests/test_downstream.py"
# platform: ubuntu-22.04
# - name: "Minimum Versions"
# env_file: actions-310-minimum_versions.yaml
# pattern: "not slow and not network and not single_cpu"
# platform: ubuntu-22.04
# - name: "Locale: it_IT"
# env_file: actions-311.yaml
# pattern: "not slow and not network and not single_cpu"
# extra_apt: "language-pack-it"
# # Use the utf8 version as the default, it has no bad side-effect.
# lang: "it_IT.utf8"
# lc_all: "it_IT.utf8"
# # Also install it_IT (its encoding is ISO8859-1) but do not activate it.
# # It will be temporarily activated during tests with locale.setlocale
# extra_loc: "it_IT"
# platform: ubuntu-22.04
# - name: "Locale: zh_CN"
# env_file: actions-311.yaml
# pattern: "not slow and not network and not single_cpu"
# extra_apt: "language-pack-zh-hans"
# # Use the utf8 version as the default, it has no bad side-effect.
# lang: "zh_CN.utf8"
# lc_all: "zh_CN.utf8"
# # Also install zh_CN (its encoding is gb2312) but do not activate it.
# # It will be temporarily activated during tests with locale.setlocale
# extra_loc: "zh_CN"
# platform: ubuntu-22.04
# - name: "Future infer strings"
# env_file: actions-312.yaml
# pandas_future_infer_string: "1"
# platform: ubuntu-22.04
# - name: "Future infer strings (without pyarrow)"
# env_file: actions-311.yaml
# pandas_future_infer_string: "1"
# platform: ubuntu-22.04
# - name: "Pypy"
# env_file: actions-pypy-39.yaml
# pattern: "not slow and not network and not single_cpu"
# test_args: "--max-worker-restart 0"
# platform: ubuntu-22.04
# - name: "Numpy Dev"
# env_file: actions-311-numpydev.yaml
# pattern: "not slow and not network and not single_cpu"
# test_args: "-W error::DeprecationWarning -W error::FutureWarning"
# platform: ubuntu-22.04
# - name: "Pyarrow Nightly"
# env_file: actions-311-pyarrownightly.yaml
# pattern: "not slow and not network and not single_cpu"
# pandas_future_infer_string: "1"
# platform: ubuntu-22.04
fail-fast: false
name: ${{ matrix.name || format('{0} {1}', matrix.platform, matrix.env_file) }}
env:
Expand Down Expand Up @@ -168,12 +168,12 @@ jobs:
# TODO: Re-enable once Pypy has Pypy 3.10 on conda-forge
if: ${{ matrix.name != 'Pypy' }}

- name: Test (not single_cpu)
uses: ./.github/actions/run-tests
if: ${{ matrix.name != 'Pypy' }}
env:
# Set pattern to not single_cpu if not already set
PATTERN: ${{ env.PATTERN == '' && 'not single_cpu' || matrix.pattern }}
# - name: Test (not single_cpu)
# uses: ./.github/actions/run-tests
# if: ${{ matrix.name != 'Pypy' }}
# env:
# # Set pattern to not single_cpu if not already set
# PATTERN: ${{ env.PATTERN == '' && 'not single_cpu' || matrix.pattern }}

- name: Test (single_cpu)
uses: ./.github/actions/run-tests
Expand All @@ -184,11 +184,12 @@ jobs:

macos-windows:
timeout-minutes: 90
if: false
strategy:
matrix:
# Note: Don't use macOS latest since macos 14 appears to be arm64 only
os: [macos-13, macos-14, windows-latest]
env_file: [actions-310.yaml, actions-311.yaml, actions-312.yaml]
env_file: [actions-310.yaml, actions-311.yaml, actions-312.yaml, actions-313.yaml]
fail-fast: false
runs-on: ${{ matrix.os }}
name: ${{ format('{0} {1}', matrix.os, matrix.env_file) }}
Expand Down Expand Up @@ -221,6 +222,7 @@ jobs:

Linux-32-bit:
runs-on: ubuntu-22.04
if: false
container:
image: quay.io/pypa/manylinux2014_i686
options: --platform linux/386
Expand Down Expand Up @@ -257,6 +259,7 @@ jobs:

Linux-Musl:
runs-on: ubuntu-22.04
if: false
container:
image: quay.io/pypa/musllinux_1_2_x86_64
steps:
Expand Down Expand Up @@ -316,7 +319,7 @@ jobs:
# To freeze this file, uncomment out the ``if: false`` condition, and migrate the jobs
# to the corresponding posix/windows-macos/sdist etc. workflows.
# Feel free to modify this comment as necessary.
# if: false # Uncomment this to freeze the workflow, comment it to unfreeze
if: false
defaults:
run:
shell: bash -eou pipefail {0}
Expand Down Expand Up @@ -363,6 +366,7 @@ jobs:
uses: ./.github/actions/run-tests

python-freethreading:
if: false
defaults:
run:
shell: bash -eou pipefail {0}
Expand Down Expand Up @@ -406,6 +410,7 @@ jobs:

# NOTE: this job must be kept in sync with the Pyodide build job in wheels.yml
emscripten:
if: false
# Note: the Python version, Emscripten toolchain version are determined
# by the Pyodide version. The appropriate versions can be found in the
# Pyodide repodata.json "info" field, or in the Makefile.envs file:
Expand Down
63 changes: 63 additions & 0 deletions ci/deps/actions-313.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: pandas-dev-313
channels:
- conda-forge
dependencies:
- python=3.13

# build dependencies
- versioneer
- cython>=0.29.33
- meson=1.2.1
- meson-python=0.13.1

# test dependencies
- pytest>=7.3.2
- pytest-cov
- pytest-xdist>=3.4.0
- pytest-localserver>=0.8.1
- pytest-qt>=4.4.0
- boto3

# required dependencies
- python-dateutil
- numpy

# optional dependencies
- beautifulsoup4>=4.12.3
- blosc>=1.21.3
- bottleneck>=1.3.6
- fastparquet>=2024.2.0
- fsspec>=2024.2.0
- html5lib>=1.1
- hypothesis>=6.84.0
- gcsfs>=2024.2.0
- jinja2>=3.1.3
- lxml>=4.9.2
- matplotlib>=3.8.3
- numba>=0.59.0
- numexpr>=2.9.0
- odfpy>=1.4.1
- qtpy>=2.3.0
- pyqt>=5.15.9
- openpyxl>=3.1.2
- psycopg2>=2.9.6
- pyarrow>=10.0.1
- pymysql>=1.1.0
- pyreadstat>=1.2.6
- pytables>=3.8.0
- python-calamine>=0.1.7
- pytz>=2023.4
- pyxlsb>=1.0.10
- s3fs>=2024.2.0
- scipy>=1.12.0
- sqlalchemy>=2.0.0
- tabulate>=0.9.0
- xarray>=2024.1.1, <=2024.9.0
- xlrd>=2.0.1
- xlsxwriter>=3.2.0
- zstandard>=0.22.0

- pip:
- adbc-driver-postgresql>=0.10.0
- adbc-driver-sqlite>=0.8.0
- tzdata>=2022.7
2 changes: 1 addition & 1 deletion ci/run_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export PYTHONHASHSEED

COVERAGE="-s --cov=pandas --cov-report=xml --cov-append --cov-config=pyproject.toml"

PYTEST_CMD="MESONPY_EDITABLE_VERBOSE=1 PYTHONDEVMODE=1 PYTHONWARNDEFAULTENCODING=1 pytest -r fE -n $PYTEST_WORKERS --dist=worksteal $TEST_ARGS $COVERAGE $PYTEST_TARGET"
PYTEST_CMD="MESONPY_EDITABLE_VERBOSE=1 PYTHONDEVMODE=1 PYTHONWARNDEFAULTENCODING=1 pytest -vv -rfE -n $PYTEST_WORKERS --dist=worksteal $TEST_ARGS $COVERAGE $PYTEST_TARGET"

if [[ "$PATTERN" ]]; then
PYTEST_CMD="$PYTEST_CMD -m \"$PATTERN\""
Expand Down
Loading