Conversation
Add cp314 to the cibuildwheel build patterns and a 3.14 classifier, and update cibuildwheel from v2.22 to v4.2.1 (v2.22 predates 3.14 support). PyPy 3.9 and 3.10 are now behind cibuildwheel's pypy-eol flag, so enable it to keep building those wheels. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add cp315 to the cibuildwheel build patterns on Linux, macOS and Windows, a 3.15 classifier, and py314/py315 to the tox envlist (py314 was missing from the list). cibuildwheel >= 4.2.0 builds CPython 3.15 by default (no "cpython-prerelease" opt-in needed), and the release candidates have a frozen ABI, so the wheels remain valid for the final 3.15.0. Co-Authored-By: Claude <noreply@anthropic.com>
This branch has not been deployed
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.
Summary
Build Python 3.15 wheels, as requested by @shauneccles on #229.
This PR is stacked on #229 (Python 3.14 wheels, by @cpmpercussion) and contains
one commit on top of it,
ci: build Python 3.15 wheels. The diff is only meaningfulonce #229 is in: the first commit shown here is #229's. If #229 merges first, this
rebases to a single commit with no conflicts.
Changes (
pyproject.toml,tox.inionly):cp315to the[tool.cibuildwheel.linux],.macosand.windowsbuildpatternsProgramming Language :: Python :: 3.15classifierpy314andpy315to thetox.inienvlist (py314was missing after ci: build Python 3.14 wheels #229; withskip_missing_interpreters = Truethis is harmless where an interpreter is absent)No workflow changes are needed, and no
cpython-prereleaseopt-in: #229 already movescibuildwheel to v4.2.1, and cibuildwheel 4.2.0 and later build CPython 3.15 by default
("CPython 3.15 wheels are now built by default - without the
cpython-prereleaseenableset"; v4.2.1 bundles 3.15.0rc2).Python 3.15 status (as of 2026-10-05)
no ABI changes from that point on and that wheels built against 3.15 release candidates
will work with later 3.15 releases, so the wheels are safe to upload now and stay valid
for the final release.
and the
cpython.arraydeclarations were adapted for 3.15), meson-python 0.22.1, meson 1.12.1.pyproject.tomlleavescythonunpinned, so a build today gets 3.3.0.trove-classifiersalready knows the 3.15 classifier.
Sources: peps.python.org/pep-0790, python.org release pages for 3.15.0rc1 and rc3,
cibuildwheel changelog (v4.2.0, v4.2.1, v4.3.0), Cython
CHANGES.rstfor 3.3.0,meson-python
CHANGELOG.rst.Verification
This repo's PR workflow, on GitHub Actions.
pr_to_master.ymlwas run unchanged against this branch from a separate repo; only the checkout target and the artifact names differed. Every job passed: sdist,ubuntu-latest,ubuntu-24.04-arm,macos-latestandwindows-latest, with cibuildwheel's tests run as configured. It builtcp315wheels formanylinux_x86_64,manylinux_aarch64,macosx_10_15_x86_64,macosx_11_0_arm64andwin_amd64, alongside #229'scp314ones (41 wheels in total).Also done locally (Linux x86_64, Fedora host):
cibuildwheel --print-build-identifiers(4.2.1) with thispyproject.tomlselectscp315on all three platforms, in addition to everything ci: build Python 3.14 wheels #229 selects:
cp315-manylinux_x86_64cp315-macosx_x86_64,cp315-macosx_arm64cp315-win_amd64It selects no
cp315t(free-threaded) identifiers.Built and tested with cibuildwheel 4.2.1 under podman, using the configured
before-all,repair-wheel-commandandtest-command(pytest -v -m ci {package}/tests):cp315-manylinux_x86_64->python_rtmidi-1.6.0-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl(CPython 3.15.0rc2 in the image; 8 passed, 2 skipped)
cp314-manylinux_x86_64for comparison -> the matchingcp314wheel (8 passed, 2 skipped)Built and installed from source on a python-build-standalone CPython 3.15.0rc3 with
Cython 3.3.0, meson-python 0.22.1 and meson 1.12.1 (
pip install --no-build-isolation .),then ran the full test suite against real ALSA: 38 passed, 2 skipped, 1 failed. The failure
is
test_ci_wheels.py::test_linux_supports_jack, expected on a machine without JACK(the same test passes in the cibuildwheel container, which builds JACK in
before-all).pyproject.toml, the three workflow files andtox.iniparse cleanly.Not verified:
toxand did not touch theblacktarget-versionlist inpyproject.toml(it stops at
py313, and ci: build Python 3.14 wheels #229 did not extend it for 3.14 either).CHANGELOG.mdentry: it only has per-release sections, and ci: build Python 3.14 wheels #229 does not add one.Happy to add a line if you want it.
Notes
fine for the ABI reasons above, so I did not bump it here.
cp314t/cp315t) are deliberately not part of this PR; they dependon the free-threading support in Support free-threaded Python, and fix instance lifetime and threading bugs #230 and will be proposed separately.
🤖 Generated with Claude Code