testsAndMisc/python_pkg/code_tutor
Krzysztof kuhy Rudnicki adf2e402df Grade against 3.14 too, not just run on it
`requires-python` and the CI pin already said 3.14, but ruff, mypy and pylint
were still grading `meta/` against 3.10 -- three tools judging an interpreter
nothing runs any more, and ruff withholding the pyupgrade fixes that only
become safe at the newer target. `pin_ci_python.py` rewrites these three knobs.

What the stale target was hiding: `datetime.timezone.utc` where `datetime.UTC`
is now correct (UP017), and ruff's stable formatter applying PEP 758 --
`except (A, B):` becomes `except A, B:`. That makes the source 3.14-only at the
syntax level, which is what `requires-python = ">=3.14"` already promised; kuhy
chose it deliberately over holding ruff a release back (2026-08-29).

Also drops a comment in `wsg_grabber/models.py` that the bump makes false: it
explained why the file used ``str, Enum`` instead of ``StrEnum`` under mypy at
3.10, sitting directly above a ``class Verdict(StrEnum)`` that had already
stopped obeying it.

ruff, ruff-format, mypy --strict and pylint all clean at the new target.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SfnJmxxsZ534AKk16rC2Gr
2026-08-29 11:50:39 +02:00
..
tests Clear the seven over-cap code_tutor test modules 2026-08-16 18:06:38 +02:00
__init__.py Add code_tutor: interactive codebase-learning CLI 2026-07-11 00:15:46 +02:00
_analyzer.py Split the code_tutor import graph and scan tables out of _analyzer 2026-08-16 17:48:32 +02:00
_challenge_flows.py Split the code_tutor challenge flows out of _challenge 2026-08-16 17:42:50 +02:00
_challenge_prompts.py Split the code_tutor challenge flows out of _challenge 2026-08-16 17:42:50 +02:00
_challenge_support.py Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
_challenge.py Split the code_tutor challenge flows out of _challenge 2026-08-16 17:42:50 +02:00
_claude_backend.py Split the Claude backend out of code_tutor/_llm 2026-08-16 18:00:53 +02:00
_cli_checks.py Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
_deps.py Split the code_tutor import graph and scan tables out of _analyzer 2026-08-16 17:48:32 +02:00
_llm.py Split the Claude backend out of code_tutor/_llm 2026-08-16 18:00:53 +02:00
_plan_builder.py Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
_progress.py Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
_pytest_runner.py Split the code_tutor pytest runner and verdict streaming out 2026-08-16 17:33:58 +02:00
_scan_tables.py Split the code_tutor import graph and scan tables out of _analyzer 2026-08-16 17:48:32 +02:00
_session.py Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
_verdict.py Split the code_tutor pytest runner and verdict streaming out 2026-08-16 17:33:58 +02:00
_verifier_support.py Split code_tutor cli and verifier, deleting two lint suppressions 2026-08-16 17:57:38 +02:00
_verifier.py Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
cli.py Split code_tutor cli and verifier, deleting two lint suppressions 2026-08-16 17:57:38 +02:00