Skip to content

Add Python 3.15 to the test workflow #259

Description

@derek73

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:

  1. Now-ish (any release): add a non-blocking pre-release job to python-package.yml so interpreter breakage surfaces early:

    - uses: actions/setup-python@v5
      with:
        python-version: "3.15"
        allow-prereleases: true

    with continue-on-error: true on the matrix entry so a beta-only failure warns without blocking merges.

  2. 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.

Activity

self-assigned this
on Jul 6, 2026
added this to the v2.0 milestone on Jul 12, 2026

derek73 commented on Jul 12, 2026

@derek73
OwnerAuthor

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.

modified the milestones: v2.0, v2.1 on Jul 28, 2026

derek73 commented on Jul 28, 2026

@derek73
OwnerAuthor

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).

removed this from the v2.1 milestone on Jul 30, 2026

derek73 commented on Sep 29, 2026

@derek73
OwnerAuthor

also consider wether we should use 3.15 for generating coverage for codecov

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

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions