You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Python 3.15.0 final is scheduled for 2026-10-01 (PEP 790; rc1 2026-08-04). actions/setup-python already carries pre-release builds (3.15.0-beta.3 as of July 2026), so the workflow can start testing it any time.
Two-step plan, whichever release picks this up:
Now-ish (any release): add a non-blocking pre-release job to python-package.yml so interpreter breakage surfaces early:
with continue-on-error: true on the matrix entry so a beta-only failure warns without blocking merges.
After 3.15.0 final (October 2026): promote it to a regular blocking matrix entry, add the Programming Language :: Python :: 3.15 classifier, and drop continue-on-error.
Timing note: 3.15 final and Python 3.10 EOL land the same month, so if this coincides with 2.0, step 2 and the #257 floor bump (>=3.11) are one release-prep item — the supported window becomes exactly 3.11–3.15.
No milestone yet — undecided which release takes it.
Step 1 is running on the 2.0 branch (#288, commit a2d88ea): CI now includes a 3.15 pre-release job (allow-prereleases: true), non-blocking via continue-on-error so a beta regression can't turn the branch red while 2.0 is being built.
Current status: 3.15.0b3 is fully green — the complete suite, mypy, ruff, sdist build, twine check, and both Sphinx builds all pass, verified both locally and in CI.
Setting this up surfaced a pre-existing bug worth recording here: the matrix was decorative. uv sync honors the repo's .python-version file over the interpreter actions/setup-python provides, so every matrix job was silently testing the same Python (3.11 on the 2.0 branch — "build (3.14)" ran the suite on CPython 3.11.15, confirmed in the run logs). A job-level UV_PYTHON: ${{ matrix.python-version }} makes the matrix real; the same fix is needed on master, where all jobs currently test 3.10 (will land separately).
Remaining (step 2, when 3.15 goes final 2026-10-01): flip the job to blocking, add the Programming Language :: Python :: 3.15 classifier — pairing with #257's floor bump, which is already on the 2.0 branch.
Step 1 shipped in 2.0.0: 3.15 runs non-blocking with allow-prereleases (plus the UV_PYTHON fix so the matrix interpreter is actually used). Retargeting to v2.1 for step 2 — promote to blocking and add the 3.15 classifier when 3.15 goes final (October 2026).
Activity
Test the real matrix interpreter, and add 3.15 pre-release (#259)
derek73 commentedon Jul 12, 2026
Step 1 is running on the 2.0 branch (#288, commit
a2d88ea): CI now includes a 3.15 pre-release job (allow-prereleases: true), non-blocking viacontinue-on-errorso a beta regression can't turn the branch red while 2.0 is being built.Current status: 3.15.0b3 is fully green — the complete suite, mypy, ruff, sdist build, twine check, and both Sphinx builds all pass, verified both locally and in CI.
Setting this up surfaced a pre-existing bug worth recording here: the matrix was decorative.
uv synchonors the repo's.python-versionfile over the interpreteractions/setup-pythonprovides, so every matrix job was silently testing the same Python (3.11 on the 2.0 branch — "build (3.14)" ran the suite on CPython 3.11.15, confirmed in the run logs). A job-levelUV_PYTHON: ${{ matrix.python-version }}makes the matrix real; the same fix is needed on master, where all jobs currently test 3.10 (will land separately).Remaining (step 2, when 3.15 goes final 2026-10-01): flip the job to blocking, add the
Programming Language :: Python :: 3.15classifier — pairing with #257's floor bump, which is already on the 2.0 branch.derek73 commentedon Jul 28, 2026
Step 1 shipped in 2.0.0: 3.15 runs non-blocking with
allow-prereleases(plus theUV_PYTHONfix so the matrix interpreter is actually used). Retargeting to v2.1 for step 2 — promote to blocking and add the 3.15 classifier when 3.15 goes final (October 2026).derek73 commentedon Sep 29, 2026
also consider wether we should use 3.15 for generating coverage for codecov
Run the ja-extra job on 3.15 after a lock bump (#259)
Run ja-extra at the floor too; state rules, not snapshots (#259 review)
Promote Python 3.15 to a blocking CI target (#259) (#642)