Skip to content

Modernize CI: wheel runners, Windows wheels, and test matrix (drop 3.9, require 3.14)#690

Open
wbarnha wants to merge 4 commits into
masterfrom
claude/modernize-ci-runners
Open

Modernize CI: wheel runners, Windows wheels, and test matrix (drop 3.9, require 3.14)#690
wbarnha wants to merge 4 commits into
masterfrom
claude/modernize-ci-runners

Conversation

@wbarnha

@wbarnha wbarnha commented Jul 18, 2026

Copy link
Copy Markdown
Member

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_wheels matrix pinned ubuntu-20.04, whose runner image GitHub retired in April 2025 — that job can no longer be scheduled. macos-13 is also deprecating, and pypa/cibuildwheel@v2.10.1 (Sept 2022) predates Python 3.12/3.13 wheels and the newer runner images. This job only runs on release, so the breakage is latent (same class as the dropped-artifact bug fixed in #684).

  • Runners: ubuntu-20.04 → ubuntu-latest; macos-13 → macos-15-intel (x86_64); macos-14 kept (arm64).
  • cibuildwheel: v2.10.1 → v2.21.3.
  • Windows wheels: added windows-2022 → AMD64 CPython wheels. pyproject.toml already declares Windows support and carries a [tool.cibuildwheel] config (build = "cp3*", archs = ["auto64"], before-build = "pip install Cython"); setup.py already handles win32 (links ws2_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's cibw-* download+merge.

Test matrix

  • Add Python 3.14 (with and without Cython) to test-pytest. 3.13 was already present; both now run under the required ✅ Ensure the required checks passing gate. 3.14 is GA (Oct 2025), so no prerelease handling is needed.
  • Drop Python 3.9: bump the PyPy lane pypy3.9 → pypy3.11 (stays non-required / continue-on-error), and remove the 3.9 formatter fallbacks from requirements/test.txt (the black/isort pins 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 on ubuntu-latest with current action versions — no changes needed.

Validation notes

  • YAML/TOML validated; CPython matrix resolves to ['3.10','3.11','3.12','3.13','3.14']; no 3.9 references remain in CI or requirements.
  • 3.14 is now a required check, so if a runtime dependency isn't yet 3.14-ready the gate will flag it here — that's the intended signal.
  • The wheel/publish jobs are gated to release events, 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 manual workflow_dispatch/test tag).

🤖 Generated with Claude Code

wbarnha and others added 2 commits July 18, 2026 20:33
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
@wbarnha wbarnha changed the title Modernize release wheel-build runners Modernize release wheel runners and add Windows wheels Jul 18, 2026
@codecov

codecov Bot commented Jul 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.14%. Comparing base (f3019aa) to head (9ac7ab4).

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

- 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
@wbarnha wbarnha changed the title Modernize release wheel runners and add Windows wheels Modernize CI: wheel runners, Windows wheels, and test matrix (drop 3.9, require 3.14) Jul 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant