Repository navigation
chore: require Python 3.11+, the oldest supported CPython - #15
Merged
Merged
Conversation
3.9 went end-of-life in 2025-10 and 3.10 on 2026-10-01; local development ran on 3.9 while CI ran 3.12, which is how a 3.9-only datetime bug slipped past CI. The floor is now 3.11 (wikilint.MIN_PYTHON), tracking the oldest CPython in security support and bumped each October. - wikilint/__init__.py checks the interpreter before importing the engine, so an older python3 (including via the pre-commit hook) gets a one-line message naming the version found instead of a traceback. - CI runs a 3.11 + 3.14 matrix: the floor and the newest release. - parse_okf_datetime drops its Z/fraction/+HHMM normalization; 3.11's fromisoformat parses those natively. The regression tests stay. - README states the requirement and the macOS /usr/bin/python3 caveat.
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
Standardizes the Python requirement at 3.11+, the oldest CPython still in security support (EOL 2027-10). 3.9 reached end of life in 2025-10 and 3.10 on 2026-10-01. Local development had been running on 3.9 while CI ran 3.12, which is how a 3.9-only datetime bug slipped past CI in #14.
wikilint/__init__.pychecks the interpreter before importing the engine. An olderpython3, including one run by the pre-commit hook, printsScriptorium's lint engine needs Python 3.11+, found 3.9.6. ...and exits 1. The module stays parseable by old interpreters so the message always prints.3.11(the floor) and3.14(the newest release).parse_okf_datetimedrops the normalization added in feat: adopt OKF page-level title, generated, and status keys #14, since 3.11'sfromisoformatparsesZ, any fraction length and+HHMMnatively. The regression tests are kept./usr/bin/python3caveat.Policy: raise
MIN_PYTHONeach October when the oldest supported version reaches end of life (next: 3.12 in 2027-10).Test plan
tests/test_python_floor.py(floor value, message, guard ordering, README, CI matrix) written red first/usr/bin/python3(3.9.6) onlint.py checkprints the one-line message and exits 1