From 1f9479d4576142e4f19effa8312fd1f025c94a5c Mon Sep 17 00:00:00 2001 From: Arthur Pastel Date: Tue, 12 May 2026 20:09:57 -0700 Subject: [PATCH 1/6] build: enable free-threaded wheels in cibuildwheel cibuildwheel does not build free-threaded CPython wheels by default, even when the build pattern matches cp*. As a result, users on 3.13t/3.14t/3.15t installed pure-Python wheels with no native extension and saw: Failed to load instrument hooks library: cannot import name 'dist_instrument_hooks' from 'pytest_codspeed.instruments.hooks' Opt in via `enable = ["cpython-freethreading"]` so the cp31{3,4,5}t wheels ship the compiled dist_instrument_hooks extension. Co-Authored-By: Claude --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 26cea97..6100b94 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -103,6 +103,7 @@ push = false [tool.cibuildwheel] build = "cp*{manylinux,macosx}*" +enable = ["cpython-freethreading"] test-extras = ["build", "test", "compat"] test-command = "pytest -v --ignore={project}/tests/benchmarks {project}/tests" From 618383f841f77140f70462fd9674b3b5b0b617fe Mon Sep 17 00:00:00 2001 From: Arthur Pastel Date: Tue, 12 May 2026 20:13:13 -0700 Subject: [PATCH 2/6] ci: bump pypa/cibuildwheel from v3.2.1 to v3.4.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v3.2.1 predates CPython 3.14/3.15 support in cibuildwheel. Bumping unlocks free-threaded 3.14t/3.15t wheel builds (which no longer need the cpython-freethreading enable flag — only 3.13t does). Co-Authored-By: Claude --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5355e8b..3d15ad3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,7 @@ jobs: with: submodules: true - name: Build wheels - uses: pypa/cibuildwheel@v3.2.1 + uses: pypa/cibuildwheel@v3.4.1 env: CIBW_ARCHS: ${{ matrix.platform.arch }} with: From 3aed11c6c948612635ddd287d51d6cec174c2779 Mon Sep 17 00:00:00 2001 From: Arthur Pastel Date: Tue, 12 May 2026 20:15:46 -0700 Subject: [PATCH 3/6] build: enable cpython-prerelease wheels in cibuildwheel CPython 3.15 is still in beta, so cibuildwheel will not build cp315 / cp315t wheels without the cpython-prerelease opt-in. Add it alongside cpython-freethreading so prerelease wheels (regular + free-threaded) ship for users testing on 3.15. Co-Authored-By: Claude --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6100b94..c53561a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -103,7 +103,7 @@ push = false [tool.cibuildwheel] build = "cp*{manylinux,macosx}*" -enable = ["cpython-freethreading"] +enable = ["cpython-freethreading", "cpython-prerelease"] test-extras = ["build", "test", "compat"] test-command = "pytest -v --ignore={project}/tests/benchmarks {project}/tests" From 8e83a20e8f3007f8181e7460a2c286c505f58861 Mon Sep 17 00:00:00 2001 From: Arthur Pastel Date: Tue, 12 May 2026 20:17:46 -0700 Subject: [PATCH 4/6] chore: advertise Python 3.15 support in classifiers Add the trove classifier for 3.15 now that cibuildwheel ships cp315 / cp315t wheels. Co-Authored-By: Claude --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index c53561a..0f4ba4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Topic :: Software Development :: Testing", "Topic :: System :: Benchmark", "Topic :: Utilities", From 862b9cb4da67fc028423715a6544346aafc4931e Mon Sep 17 00:00:00 2001 From: Arthur Pastel Date: Tue, 12 May 2026 20:20:46 -0700 Subject: [PATCH 5/6] ci: pin cibuildwheel to a main commit with CPython 3.15 support v3.4.1 does not yet include cp315 in its bundled build-platforms.toml, so the cpython-prerelease enable flag has nothing to act on. Pin to commit ec0977e (post-#2833 "add CPython 3.15 beta 1") to unblock cp315 / cp315t wheel builds. Drop the pin back to a tagged release once cibuildwheel ships 3.15 metadata. Co-Authored-By: Claude --- .github/workflows/release.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3d15ad3..055d57a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,9 @@ jobs: with: submodules: true - name: Build wheels - uses: pypa/cibuildwheel@v3.4.1 + # Pinned to main past v3.4.1 for CPython 3.15 beta support (PR #2833). + # Revisit once the next tagged release ships 3.15 metadata. + uses: pypa/cibuildwheel@ec0977e5f64e2ec8c1276eea62083c103613b756 env: CIBW_ARCHS: ${{ matrix.platform.arch }} with: From 8b581dd5dab29425b272e975b3721410ff707758 Mon Sep 17 00:00:00 2001 From: Arthur Pastel Date: Tue, 12 May 2026 20:22:11 -0700 Subject: [PATCH 6/6] build: drop cpython-freethreading enable group The cibuildwheel commit we pin (post-#2684) no longer recognizes cpython-freethreading: 3.13t support was dropped and free-threading is the default for 3.14+. Keeping the value triggers: cibuildwheel: Failed to parse enable group. Unknown enable group: cpython-freethreading. Only cpython-prerelease is still needed (for cp315 / cp315t while 3.15 is in beta). Co-Authored-By: Claude --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0f4ba4a..661a1f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -104,7 +104,7 @@ push = false [tool.cibuildwheel] build = "cp*{manylinux,macosx}*" -enable = ["cpython-freethreading", "cpython-prerelease"] +enable = ["cpython-prerelease"] test-extras = ["build", "test", "compat"] test-command = "pytest -v --ignore={project}/tests/benchmarks {project}/tests"