Repository navigation
feat(python): support and test Python 3.15, pin uv 0.13.1 - #75
Merged
Merged
Conversation
This was referenced Oct 16, 2026
Merged
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.
Summary
Declares and CI-tests Python 3.15 (3.15.0 final shipped 2026-10-09). No code change: the full suite already passes on 3.15.0.
pyproject.toml:Programming Language :: Python :: 3.15classifier.ci.yml/release.yml:"3.15"added to the test matrix.uvpin 0.12.10 → 0.13.1 in everysetup-uvstep (ci.yml,release.yml,audit.yml) and the Dockerfile'sghcr.io/astral-sh/uvCOPY (index digestsha256:4a1f3666…a336, amd64 + arm64).AGENTS.md,CONTRIBUTING.md,CHANGELOG.md[Unreleased].Why the uv bump is required
uv@0.12.10 python install 3.15installs 3.15.0rc2, which I verified. A 3.15 leg on that pin would test a release candidate while reporting "3.15". uv 0.13.0 is the first release that knows 3.15.0 final. 0.13.1 also fixes 0.13.0's rejection of sdists that contain hard links, and that matters because the 3.15 leg builds PyYAML 6.0.3 from its sdist (PyYAML ships no cp315 wheel). setup-uv v10.3.0 verifies a newer uv's checksum throughastral-sh/versions. I checked uv 0.13's breaking changes against this repo and none of them apply: every step pins its interpreter, the Dockerfile setsUV_PYTHON_DOWNLOADS=0, the build backend is hatchling, and the repo has no constraints files and runs nouv build --clear.Deliberately not changed
python:3.14-slim-trixie(owner decision).Verification (local, uv 0.13.1)
uv lock --checkpasses; the lockfile is unchanged.HYPOTHESIS_PROFILE=ci: 855 passed on 3.11, 3.12, 3.13, 3.14 and 3.15.0.ruff format --check,ruff check,mypy src/,banditandpip-auditall pass.release.ymlbuild job, run by hand:uv build, the wheel and sdist smokes on 3.13 and 3.15, and the CycloneDXuv exportall pass. The wheel METADATA carries the 3.15 classifier.uv sync --lockedstages pass and the package imports. A realdocker buildwas not possible locally, so this PR's amd64 docker job is that check.gitleaks: no leaks.