Add support for Python 3.15 - #504
Merged
Merged
Conversation
CPython 3.15.0rc1 is out, and cibuildwheel 4.2.0 is the first release to build cp315 wheels by default (rc1 is ABI-compatible with the final 3.15 release, so these wheels are safe to publish). NumPy 2.5.2 shipped cp315 and cp315t wheels on 2026-08-09, so 3.15 can be tested like any other supported version rather than being treated as experimental. - Bump the cibuildwheel pin from >=3.0,<4 to >=4.2,<5. - Add cp315/cp315t wheel builds, mirroring the existing cp314 coverage: macOS arm64, Windows x86_64, and manylinux x86_64/aarch64. - Add Python 3.15 to the test and Address Sanitizer matrices, and pass allow-prereleases to actions/setup-python so it can resolve an rc. - Floor NumPy at 2.5.2 on 3.15 in test-requirements.txt, so pip can't quietly fall back to building an older NumPy from source there. - Add the 3.15 classifier to pyproject.toml and setup.py. cibuildwheel 4.0 also made delvewheel the default repair step on Windows. Pedalboard links statically, so this pins the Windows repair-wheel-command back to empty to keep wheel contents unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ND3oQGgms3aXVsoBikUr93
Ruff 0.16.0 (2026-07-23) enables 413 rules by default, up from 59. This repo doesn't set `lint.select` in pyproject.toml, so CI's unpinned `pip install ruff` silently picked up the wider default set and started reporting 90 pre-existing findings across pedalboard/. None of those findings relate to Python 3.15 support; they're all pre-existing code that the older default rule set never flagged. Pinning restores a reproducible lint and keeps this PR to one subject. Adopting Ruff 0.16 is worth doing separately: 72 of the 90 findings are auto-fixable via `ruff check --fix` (7 more with --unsafe-fixes). The alternative is to pin the rule set instead of the tool, by setting `[tool.ruff.lint] select = ["E4", "E7", "E9", "F"]` to make the old implicit default explicit. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ND3oQGgms3aXVsoBikUr93
psobot
marked this pull request as ready for review
August 10, 2026 13:45
cjacoby-sptfy
approved these changes
Aug 10, 2026
Collaborator
Author
|
Thanks @cjacoby-sptfy! FYI releasing this as a new version to actually deploy Python 3.15 support requires two more things, in order:
I'll see if I can put up a small PR to automate this a bit more, so we don't need to update three separate files and then click buttons in the GitHub UI. |
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.
Testing Py 3.15 wheels now that NumPy ships 3.15 support.