Skip to content

ci: upgrade cibuildwheel 4.1.0 -> 4.3.1 - #1

Open
pylaterreur wants to merge 1 commit into
zydo:python-3.15from
pylaterreur:cibuildwheel-4.3.1
Open

pylaterreur wants to merge 1 commit into
zydo:python-3.15from
pylaterreur:cibuildwheel-4.3.1

Conversation

@pylaterreur

@pylaterreur pylaterreur commented Oct 16, 2026 •

Copy link
Copy Markdown

For indygreg#357: with cibuildwheel 4.1.0, the macOS and Windows cp315/cp315t wheels are built against CPython 3.15.0b2, the prerelease that 4.1.0 pins. From your fork's run of this branch:

  • macos (cp315, arm64): Python 3.15.0b2 (v3.15.0b2:94a64bbc6ce, Jun 2 2026, 11:57:29) [Clang 21.0.0 (clang-2100.1.1.101)]
  • windows (cp315, win_amd64): Python 3.15.0b2 (tags/v3.15.0b2:94a64bb, Jun 2 2026, 15:56:22) [MSC v.1951 64 bit (AMD64)]

cibuildwheel advises against distributing wheels built against a 3.15 beta, because the ABI could still change before RC1. 4.2.0 moved to 3.15.0rc1, and 4.3.1, the latest release, to the final 3.15.0. The Linux jobs aren't affected: they use the :latest manylinux and musllinux images, which already have 3.15.0.

This is what each version pins, per cibuildwheel.platforms.macos/windows (I checked it locally):

cibuildwheel 4.1.0 cibuildwheel 4.3.1
cp315/cp315t macOS (x86_64, arm64) python-3.15.0b2-macos11.pkg python-3.15.0-macos11.pkg
cp315/cp315t Windows (win32, win_amd64, win_arm64) NuGet 3.15.0-b2 NuGet 3.15.0

The releases from 4.1.1 to 4.3.1 don't change anything this config relies on. With this pyproject.toml and the workflow's CIBW_* settings, --print-build-identifiers selects the same builds under both versions. The image digests that 4.1.1 pins don't apply here, because the workflow sets its own :latest images. A run on my fork, limited to the cp315/cp315t jobs, confirms it (see the comment below).

Prepared with the help of Claude Code.

🤖 Generated with Claude Code

cibuildwheel 4.1.0 builds the macOS and Windows CPython 3.15 wheels
against its pinned 3.15.0b2, and cibuildwheel advises against
distributing wheels built before 3.15.0rc1 because the ABI could still
change. 4.2.0 moved to 3.15.0rc1 and 4.3.1 to the final 3.15.0. Linux
is unaffected: the jobs use the latest manylinux and musllinux images,
which already have 3.15.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN
@pylaterreur

Copy link
Copy Markdown
Author

I verified this on my fork. I ran this commit with the wheel matrix cut down to the 14 cp315/cp315t jobs, and all 14 pass. The macOS and Windows wheels are now built and tested against the final 3.15.0:

  • macos (cp315, arm64): Python 3.15.0 (v3.15.0:d220409a13b, Oct 9 2026, 08:17:44) [Clang 21.0.0 (clang-2100.1.1.101)], installed from python-3.15.0-macos11.pkg
  • windows (cp315, win_amd64): Python 3.15.0 (tags/v3.15.0:d220409, Oct 9 2026, 11:55:56) [MSC v.1951 64 bit (AMD64)]
  • the cp315t jobs: Python 3.15.0 free-threading build (...), e.g. (tags/v3.15.0:d220409, Oct 9 2026, 11:48:16) [MSC v.1951 64 bit (AMD64)] on win_amd64

Each job's tests passed: 248 passed and 44 skipped for the C backend, 224 passed and 68 skipped for CFFI.

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