Repository navigation
Support Python 3.13 and 3.14, drop Python 3.8 - #71
Conversation
- Test on Python 3.9-3.14 in CI and update the README to match - Remove the numpy <2 cap: numpy 1.x has no wheels for Python 3.13+, and the tests pass on numpy 2.0-2.5 - Declare python_requires >= 3.9 and per-version classifiers - Exclude SciPy 1.15.x for Python 3.10 on macOS: its wheels fail to load on macOS 27 (malformed __thread_bss section in _spropack), and SciPy 1.16+ requires Python 3.11+, so 3.10 falls back to 1.14.1 - Change requirements.txt from exact pins (which had no wheels for Python 3.11+) to lower bounds matching setup.cfg; keep pytest >= 9.0.3 (CVE-2025-71176 fix) where available, with 8.4.2 for Python 3.9 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Why 3.9–3.14?The top of the range covers every current CPython release that our dependencies publish wheels for. 3.15.0 was scheduled for 1 Oct 2026 and can follow in a later PR. The bottom of the range follows the default Python on operating systems that still receive security updates. Vendors backport security fixes, so these versions stay in real use after upstream EOL.
* The Command Line Tools are installed separately from macOS, on first use of Ubuntu 25.10 (9-month interim support) and Debian 11 (LTS ended 31 Aug 2026) are omitted. Debian 11 has third-party ELTS, which would also be covered by 3.9.
Sources: Python versions · Apple security releases · Apple forums: CLT Python · Windows 10 ESU · Python on Windows · Ubuntu release cycle · Ubuntu python3-defaults · Debian releases · Debian python3 · Debian LTS · RHEL life cycle · RHEL Application Streams · RHEL 10 Python · RHEL 9 Python · RHEL 8 Python · RHEL 7 ELS · RHEL 7.7 Python 3 All rows checked against the linked vendor sources on 2 Oct 2026. |
|
A definitely-human comment from the real @elvum here - Claude Code has done a great job of the (exceedingly mechanical) work here, and I have high confidence in its results. The changes look reasonable and well-justified, and the CI runs in my fork all passed successfully. Note that GitHub's It would be nice if Apple started shipping a version of Python that wasn't EoLed almost a year ago... |
|
Good stuff, thank you! |
Summary
The tool was last confirmed compatible with a new Python release in May 2024 (3.12). Since then 3.13 and 3.14 have been released and 3.8 has reached end-of-life. This PR updates the supported range to Python 3.9–3.14.
<2cap. numpy 1.x has no wheels for Python 3.13+, so the cap made those versions uninstallable. Tests pass on numpy 2.0 through 2.5.python_requires = >=3.9and per-version classifiers._spropackhas a malformed__DATA/__thread_bsssection that the new dyld rejects). SciPy 1.16+ fixes it but requires Python 3.11+, soscipy != 1.15.*is excluded for Python 3.10 on macOS only, which resolves to 1.14.1. No upstream SciPy issue found; see e.g. build(deps): bump scipy floor for macOS 27 dyld compatibility Kiln-AI/Kiln#1771 for the same problem elsewhere.numpy==1.22.3) had no wheels for Python 3.11+, so the file was already uninstallable there. It now uses lower bounds matchingsetup.cfg. pytest stays at>=9.0.3(CVE-2025-71176 fix) where available; Python 3.9 can't run pytest 9, so it gets>=8.4.2.Testing
Run locally on macOS 27.0.1 (arm64):
Also checked that
pip install -r requirements.txtresolves with binary wheels on every version, and that the built wheel's metadata carries the environment markers correctly.Notes for reviewers
🤖 Generated with Claude Code