chore: raise Python floor to >=3.12 (CQ-01 / CAL-02) - #72
Conversation
|
BLOCKED — conflicts with accepted ADR 0001 and with the held v0.9.0 release scope; also incomplete as a floor change. Owner: @ChelseaKR (maintainer decision). Why blocked (policy, not mechanics):
Mechanics are otherwise clean (verified today): If you decide the raise should happen: add a superseding ADR (e.g. |
1061eb9 to
3dbea49
Compare
Bumps requires-python to >=3.12 ahead of Python 3.10 EOL (Oct 2026, STANDARDS dated obligation CAL-02) per CODE-QUALITY-STANDARD CQ-01. Aligns ruff target-version / mypy python_version / classifiers / CI matrix, and regenerates uv.lock for the new floor. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rebasing onto main picked up #128's pip 26.2.1 bump; re-running `uv lock` after the Python floor change keeps both together and drops a leftover numpy build now unreachable at the >=3.12 floor.
3dbea49 to
57fb242
Compare
#72 (raise Python floor to >=3.12) merged without the three things a 2026-07-31 review said it needed first: a superseding ADR for 0001 (which still said the floor stays 3.11 unless dependency-forced or 3.11 leaves support), and updated README.md/CONTRIBUTING.md (both still said "Requires Python 3.11 or newer" against a pyproject.toml that now requires >=3.12). Adds docs/adr/0006-python-312-floor.md, marks 0001 superseded, syncs README/CONTRIBUTING, adds a CHANGELOG Unreleased entry, and updates CONFORMANCE-GAPS.md's CQ-01 note (closed directly against the standard now, not via 0001's declared deviation). Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
v0.9.1 was tagged and signed (commit edd2ea1) but its GitHub Release object was never created, so pypi-publish.yml never ran: PyPI's latest published version stayed 0.9.0 (#136). Sixteen PRs landed on main after that tag, including validator-behavior changes (fail-closed unreadable-file handling in TODS-E301/E303 and companion-GTFS reference checks, diff/batch coverage- manifest fixes, a new TODS-E207 rule) and a Python floor raise to >=3.12 (#72), so re-publishing the number 0.9.1 would misdescribe what ships. 0.10.0, not 1.0.0: the repo is still Beta (README, pyproject classifiers) and docs/v1-contract-audit.md reserves v1.0.0 for a conformance-only release after the contract snapshot has gone unchanged for a full cycle -- this release adds a rule and changes coverage-manifest behavior, so it does not qualify. Per REL-05 (pre-1.0 SemVer may break in MINOR), the Python floor bump alone justifies the MINOR bump over a PATCH. Bumps pyproject.toml, CITATION.cff, uv.lock, the two stale @v0.9.1 pins in README.md, and the .pre-commit-hooks.yaml example pin. Converts CHANGELOG's Unreleased section into a dated v0.10.0 section explaining the version jump. Updates WVR-002's project_version to 0.10.0 so the playground-pin waiver keeps naming the exact, current gap (pin stays 0.9.0 until the follow-up PR repins it post-publish); the waiver itself is retired once this release is confirmed on PyPI, not in this PR. v0.9.1's tag is left signed and unmoved; it is simply not the version anyone should install. Signed-off-by: Chelsea Kelly-Reif <3114598+ChelseaKR@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Bumps
requires-pythonto >=3.12 ahead of Python 3.10 EOL (Oct 2026, STANDARDS dated obligation CAL-02) per CODE-QUALITY-STANDARD CQ-01. Aligns rufftarget-version/ mypypython_version/ classifiers / CI matrix, and regeneratesuv.lockfor the new floor.🤖 Generated with Claude Code