Skip to content

Add support for Python 3.15 - #504

Merged
cjacoby-sptfy merged 2 commits into
masterfrom
add-python-3.15
Aug 10, 2026
Merged

Add support for Python 3.15#504
cjacoby-sptfy merged 2 commits into
masterfrom
add-python-3.15

Conversation

@psobot

@psobot psobot commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Testing Py 3.15 wheels now that NumPy ships 3.15 support.

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
@psobot psobot added the Also Test Wheels Trigger wheel creation on all platforms via GitHub Actions. label Aug 10, 2026
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
psobot marked this pull request as ready for review August 10, 2026 13:45
@cjacoby-sptfy
cjacoby-sptfy merged commit f7f0175 into master Aug 10, 2026
77 checks passed
@cjacoby-sptfy
cjacoby-sptfy deleted the add-python-3.15 branch August 10, 2026 16:52
@psobot

psobot commented Aug 10, 2026

Copy link
Copy Markdown
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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Also Test Wheels Trigger wheel creation on all platforms via GitHub Actions.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants