Skip to content

Add support for Python 3.15 - #82

Merged
tsvikas merged 6 commits into
mainfrom
claude/loving-goldberg-2en2cd
Oct 14, 2026
Merged

tsvikas merged 6 commits into
mainfrom
claude/loving-goldberg-2en2cd

Conversation

@tsvikas

@tsvikas tsvikas commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner
  • Bump python_max to 15. This updates the classifiers, .python-version, the CI "highest" and prerelease jobs, weekly CI, and the docs tasks of generated projects.
  • Bump the ctt test targets from 3.14 to 3.15 (test-lowest 3.15, and the python3.15 output with python_min = 15).
  • Raise the minimum uv for generated projects from 0.10.12 to 0.13.0. This covers the template's required-version, the README, and the minimum-uv CI job. uv 0.13.0 is the first release that can download CPython 3.15.0. Older versions install a pre-release instead (0.10.12 gets 3.15.0a7, 0.12.24 gets 3.15.0rc3). Wheels built for 3.15.0 don't load on those, e.g. mypy's librt fails with unknown slot ID 85.

The template repo's own .python-version stays on 3.14, and its own uv floor stays at 0.10.12. Its dev tools aren't 3.15-ready yet: ctt's beartype dependency imports typing.no_type_check_decorator, which 3.15 removed, and pyyaml has no 3.15 wheel. Raising the repo's own uv floor would also break the uv-lock pre-commit hook, which is pinned to uv 0.12.23.

Local checks on CPython 3.15.0:

  • Generated projects pass uv sync, pytest, mypy/dmypy, ruff, black, just test-lowest 3.15 and just build-docs, for both the bare and the Cyclopts CLI variants.
  • With uv 0.13.0 and an empty Python install directory, a generated project gets 3.15.0 and dmypy passes.
  • Forcing 3.15.0a7 reproduces the librt failure.

🤖 Generated with Claude Code

https://claude.ai/code/session_01P1UQo4jmZREtzrWn1xjcDN

- Bump python_max to 15 (classifiers, .python-version, CI, docs tasks).
- Gate the 3.{python_max + 1} prerelease CI entry behind a new hidden
  python_next_in_beta copier variable (default false). Alphas are too
  unstable to be a useful signal; flip it on once 3.16 reaches beta.
- Bump ctt test targets from 3.14 to 3.15.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01P1UQo4jmZREtzrWn1xjcDN
sourcery-ai[bot]
sourcery-ai Bot previously approved these changes Oct 14, 2026

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

tsvikas and others added 2 commits October 14, 2026 12:20
The template's dev tools are not 3.15-ready yet: ctt imports beartype,
which needs typing.no_type_check_decorator (removed in 3.15), and pyyaml
has no 3.15 wheel and fails to build from source under uv 0.10.12.
Generated projects still default to 3.15 via python_max.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01P1UQo4jmZREtzrWn1xjcDN
@sourcery-ai
sourcery-ai Bot dismissed their stale review October 14, 2026 11:38

Sourcery withdrew this approval because the latest commits introduced blocking findings.

uv 0.10.12 only knows 3.15.0a7, so a generated project (pinned to 3.15)
got an alpha interpreter that cannot load wheels built for 3.15.0 final
(mypy's librt: "unknown slot ID 85"). uv 0.12.24 tops out at 3.15.0rc3;
0.13.0 is the first with 3.15.0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01P1UQo4jmZREtzrWn1xjcDN
The repo itself stays on Python 3.14, so it does not need uv 0.13, and
the higher floor broke the uv-lock pre-commit hook (pinned to uv 0.12.23).
Generated projects keep requiring uv >=0.13.0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01P1UQo4jmZREtzrWn1xjcDN
@tsvikas
tsvikas merged commit f2c88ed into main Oct 14, 2026
5 checks passed
@tsvikas
tsvikas deleted the claude/loving-goldberg-2en2cd branch October 14, 2026 19:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants