Summary
Update Python support tooling to Python 3.13 and run a parse-don't-validate cleanup pass over the Python scripts.
Current State
The repository currently supports Python 3.12+ for development scripts. The scripts are typed and checked, but follow-up cleanup should make boundary parsing and validated domain objects more explicit.
Proposed Changes
- Require Python 3.13 for the Python development/tooling environment.
- Update Python version metadata, CI setup, lockfile/tooling configuration, and docs.
- Review CLI args, TOML/JSON/CSV parsing, subprocess output, filesystem paths, and report-generation inputs.
- Parse raw inputs at boundaries into typed, validated objects before computation.
- Prefer stdlib typing tools such as
TypedDict, dataclass(frozen=True, slots=True), Enum, Literal, NewType, and TypeIs where they clarify invariants.
- Avoid adding heavier validation dependencies unless they are already justified.
Benefits
- Gives all Python tooling a modern 3.13 typing baseline.
- Reduces raw
dict[str, Any], string-mode, and optional-field drift.
- Makes Python scripts easier to share or adapt across related crates.
Implementation Notes
- Keep repository-specific script entrypoints local.
- Extract only genuinely reusable helpers after the cleanup proves stable.
- Validate with the repository's Python checks and full CI.
Summary
Update Python support tooling to Python 3.13 and run a parse-don't-validate cleanup pass over the Python scripts.
Current State
The repository currently supports Python 3.12+ for development scripts. The scripts are typed and checked, but follow-up cleanup should make boundary parsing and validated domain objects more explicit.
Proposed Changes
TypedDict,dataclass(frozen=True, slots=True),Enum,Literal,NewType, andTypeIswhere they clarify invariants.Benefits
dict[str, Any], string-mode, and optional-field drift.Implementation Notes