diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index e851aeac1..2c24efa9c 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -68,7 +68,7 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} test-pypy: - name: 'Python pypy3.9/Cython: false' + name: 'Python pypy3.11/Cython: false' runs-on: ubuntu-latest timeout-minutes: 10 continue-on-error: true @@ -80,7 +80,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-python@v5 with: - python-version: pypy3.9 + python-version: pypy3.11 cache: pip cache-dependency-path: requirements/test.txt - name: Install dependencies @@ -183,13 +183,17 @@ jobs: if: github.event_name == 'release' && github.event.action == 'created' strategy: matrix: - os: [ubuntu-20.04, macos-13, macos-14] + # Modern, supported runner images (ubuntu-20.04 was retired in 2025). + # macos-15-intel -> x86_64 wheels, macos-14 -> arm64 wheels, + # windows-2022 -> AMD64 wheels. Build config lives in + # pyproject.toml's [tool.cibuildwheel] (cp3*, auto64, Cython). + os: [ubuntu-latest, macos-15-intel, macos-14, windows-2022] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Build wheels - uses: pypa/cibuildwheel@v2.10.1 + uses: pypa/cibuildwheel@v2.21.3 - uses: actions/upload-artifact@v4 with: name: cibw-wheels-${{ matrix.os }} diff --git a/pyproject.toml b/pyproject.toml index b4b7f923c..23afb32fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,8 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Implementation :: CPython", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", diff --git a/requirements/test.txt b/requirements/test.txt index 832762190..759f5bd62 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,13 +1,9 @@ # Formatters are pinned so `scripts/check` is reproducible: new releases # change formatting output and would fail lint on an otherwise-unchanged # tree. They are lint-only tools, run only by the lint job (PYTHON_LATEST). -# The current pins require Python >= 3.10, so guard them with a marker and -# fall back to an unpinned install on 3.9 (installed there but never run). # Bump the pins deliberately, together with a tree-wide reformat. -black==26.5.1; python_version >= "3.10" -black; python_version < "3.10" -isort==8.0.1; python_version >= "3.10" -isort; python_version < "3.10" +black==26.5.1 +isort==8.0.1 autoflake flake8==5.0.4 # 5.0.4 can be upgraded to 6.0.0+ when we EOL Python 3.7 flake8-bugbear