Modernize CI: wheel runners, Windows wheels, and test matrix (drop 3.9, require 3.14)#690
Open
wbarnha wants to merge 4 commits into
Open
Modernize CI: wheel runners, Windows wheels, and test matrix (drop 3.9, require 3.14)#690wbarnha wants to merge 4 commits into
wbarnha wants to merge 4 commits into
Conversation
The build_wheels matrix pinned ubuntu-20.04, whose runner image GitHub retired in April 2025 -- that job can no longer schedule. macos-13 is also on the deprecation path, and pypa/cibuildwheel@v2.10.1 (Sept 2022) predates Python 3.12/3.13 wheel support and newer runner images. This only runs on release, so the breakage is latent. - os matrix: ubuntu-20.04 -> ubuntu-latest; macos-13 -> macos-15-intel (still x86_64), keeping macos-14 for arm64. - pypa/cibuildwheel: v2.10.1 -> v2.21.3, so release wheels cover the same Python range (3.10-3.13) the test matrix already exercises. cibuildwheel honors python_requires (>=3.10), so older interpreters stay skipped. The other workflows (codeql-analysis, gh-pages) already use ubuntu-latest and current action versions; no changes needed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL
Add windows-2022 to the release wheel matrix. pyproject.toml already
declares Windows support and carries a [tool.cibuildwheel] config
(build = cp3*, archs = auto64, before-build installs Cython), and setup.py
already handles the win32 case (links ws2_32, skips the gcc-only warning
flags), so the existing build config applies unchanged -- windows-2022
produces AMD64 CPython wheels for 3.10-3.13.
The per-runner artifact name (cibw-wheels-${{ matrix.os }}) stays unique,
so the publish job's `cibw-*` download+merge picks up the Windows wheels
alongside the Linux/macOS ones.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #690 +/- ##
=======================================
Coverage 94.14% 94.14%
=======================================
Files 104 104
Lines 11136 11136
Branches 1201 1201
=======================================
Hits 10484 10484
Misses 551 551
Partials 101 101 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
- test-pytest matrix: add 3.14 (with and without Cython). 3.13 was already present; both now run under the required `check` gate. Python 3.14 is GA (Oct 2025), so it needs no prerelease handling. - test-pypy: bump pypy3.9 -> pypy3.11 so the project no longer targets 3.9 while keeping a PyPy smoke lane (still non-required / continue-on-error). - requirements/test.txt: drop the 3.9 formatter fallbacks; the pins now install unconditionally since the minimum supported Python is 3.10. - pyproject.toml: add the 3.13 and 3.14 classifiers. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Modernizes
python-package.yml: current GitHub runner images for the release wheel build, Windows wheels, and a refreshed CPython test matrix.Release wheel build
The
build_wheelsmatrix pinnedubuntu-20.04, whose runner image GitHub retired in April 2025 — that job can no longer be scheduled.macos-13is also deprecating, andpypa/cibuildwheel@v2.10.1(Sept 2022) predates Python 3.12/3.13 wheels and the newer runner images. This job only runs onrelease, so the breakage is latent (same class as the dropped-artifact bug fixed in #684).ubuntu-20.04 → ubuntu-latest;macos-13 → macos-15-intel(x86_64);macos-14kept (arm64).v2.10.1 → v2.21.3.windows-2022→ AMD64 CPython wheels.pyproject.tomlalready declares Windows support and carries a[tool.cibuildwheel]config (build = "cp3*",archs = ["auto64"],before-build = "pip install Cython");setup.pyalready handleswin32(linksws2_32, skips gcc-only warning flags), so the existing build config applies unchanged. The per-runner artifact name (cibw-wheels-${{ matrix.os }}) stays unique for the publish job'scibw-*download+merge.Test matrix
test-pytest. 3.13 was already present; both now run under the required✅ Ensure the required checks passinggate. 3.14 is GA (Oct 2025), so no prerelease handling is needed.pypy3.9 → pypy3.11(stays non-required /continue-on-error), and remove the 3.9 formatter fallbacks fromrequirements/test.txt(theblack/isortpins now install unconditionally since the minimum supported Python is 3.10).pyproject.toml: add the 3.13 and 3.14 classifiers.The other two workflows (
codeql-analysis,gh-pages) already run onubuntu-latestwith current action versions — no changes needed.Validation notes
['3.10','3.11','3.12','3.13','3.14']; no3.9references remain in CI or requirements.releaseevents, so this PR's checks don't build wheels; the new runners and first-ever Windows build get exercised at the next release (or a manualworkflow_dispatch/test tag).🤖 Generated with Claude Code