Skip to content

chore: require Python 3.12 and later - #45

Merged
joepetjr merged 1 commit into
mainfrom
chore/python-floor-312
Oct 24, 2026
Merged

joepetjr merged 1 commit into
mainfrom
chore/python-floor-312

Conversation

@joepetjr

Copy link
Copy Markdown
Contributor

What

  • pyproject.toml: requires-python = ">=3.12"; classifiers are Python :: 3 and Python :: 3.12 only; mypy python_version = "3.12"; ruff target-version = "py312".
  • README Requirements line and the ARCHITECTURE.md technology table now say Python 3.12+.
  • CHANGELOG [Unreleased] entry.
  • Test: tests/test_dependency_declarations.py::test_python_floor_is_3_12_everywhere_pyproject_states_it reads pyproject.toml with tomllib and asserts the four values (red before the change, green after).
  • Ruff's py312 target adds findings. In tests/ they are fixed mechanically (UP006/UP017/UP035, zip(strict=True) where the lengths are asserted equal, import order; 94 changed lines in total with the rest of the PR). In seo_manager/ they would be about 1,400 changed lines, over the diff cap, so [tool.ruff.lint.per-file-ignores] ignores those seven rules for seo_manager/** with a comment. A follow-up ruff check --fix PR removes the entry.

Why

>=3.8 was false: the code uses tuple[...] annotations and zoneinfo, and CI tests 3.12 only. JP decided on 2026-10-24 (D1) on >=3.12, so no 3.10 floor job and no CI change.

Not touched: [project.scripts], anything blog/twitter (#43, #44).

Verification

  • Full pytest: 1509 passed, 20 xfailed, 2 xpassed, coverage 88.83% (floor 66%). Log: /tmp/claude-1002/-home-dev-workspaces/29076dd1-8147-48d5-882e-0406471621cf/scratchpad/exec/wp-u13-full.log
  • ruff check . and ruff format . --check (0.15.22): clean.
  • mypy . --config-file pyproject.toml: no issues in 3 source files.

requires-python said >=3.8 while CI tests 3.12 only and the code already needs 3.9+ syntax. Set the floor to 3.12 (JP decision D1), trim the classifiers, point mypy and ruff at 3.12, and fix the findings ruff's py312 target adds to tests. The package's own pyupgrade findings stay ignored per-file until a follow-up autofix.
@joepetjr joepetjr added the needs-operator Autoland hard-denied this PR; human merge required label Oct 24, 2026
@joepetjr

Copy link
Copy Markdown
Contributor Author

Hard-denied (hard-deny: protected path family) and ready to merge -- all checks green.

Offending paths:

  • pyproject.toml

Human merge:
sudo gh-merge-approved 45 --repo Back-Road-Creative/waypost --wait --yes

@joepetjr
joepetjr merged commit 041e5c9 into main Oct 24, 2026
4 checks passed
@joepetjr
joepetjr deleted the chore/python-floor-312 branch October 24, 2026 18:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-operator Autoland hard-denied this PR; human merge required

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant