Skip to content

chore: raise Python floor to >=3.12 (CQ-01 / CAL-02) - #72

Open
ChelseaKR wants to merge 2 commits into
mainfrom
chore/requires-python-312
Open

chore: raise Python floor to >=3.12 (CQ-01 / CAL-02)#72
ChelseaKR wants to merge 2 commits into
mainfrom
chore/requires-python-312

Conversation

@ChelseaKR

Copy link
Copy Markdown
Owner

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.

🤖 Generated with Claude Code

ChelseaKR and others added 2 commits July 19, 2026 15:35
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>
@ChelseaKR

Copy link
Copy Markdown
Owner Author

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

  • docs/adr/0001-python-311-floor.md (accepted, backfilled 2026-07-09) states: requires-python = ">=3.11" stands; the floor rises only when a runtime dependency forces it or 3.11 leaves upstream support, and the change gets its own ADR and a minor-version release note. Neither trigger holds today: uv.lock on main still resolves for 3.11 (no dependency forces 3.12), and Python 3.11 security support runs to October 2027. The PR's cited driver — CAL-02 / Python 3.10 EOL (Oct 2026) — does not apply, because the current floor is already 3.11. ADR 0001 is the repo's declared, justified deviation from CODE-QUALITY-STANDARD CQ-01 ("a high floor costs exactly the adopters the tool exists for"), so merging this reverses a documented product decision without superseding it.
  • Sequencing vs. the v0.9.0 hold: v0.9.0 release prep is intentionally held on upstream docs: clarify v2.1.0 conformance requirements MobilityData/transit-operational-data-standard#156 (still open as of 2026-07-31), with the v0.9 gate scope already closed by fix: close v0.9 conformance and release gates #69. Merging now folds a user-facing floor raise into that held release's Unreleased scope. If the raise is wanted, it sequences most cleanly as a deliberate post-v0.9.0 (v0.10.0) item.
  • Incomplete even if approved: no superseding ADR; README.md:37 and CONTRIBUTING.md:10 still say "Requires Python 3.11 or newer"; no CHANGELOG entry for a user-facing support change (ADR 0001 explicitly requires the release note).

Mechanics are otherwise clean (verified today): MERGEABLE, merges clean into main via git merge-tree (branch is 1 docs-only commit behind — #78), all 13 checks green on the branch head 1061eb9 (test matrix correctly reduced to 3.12/3.13), .python-version on main is already 3.12, and Dockerfile/action.yml pin 3.13 so they are unaffected.

If you decide the raise should happen: add a superseding ADR (e.g. docs/adr/000X-python-312-floor.md marking 0001 superseded), update README/CONTRIBUTING/CHANGELOG, rebase, and this becomes merge-ready. I have not made those changes because they presuppose reversing ADR 0001, which is yours to call.

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.

1 participant