Summary
After completing #249 (Pyright basic mode with 0 errors), upgrade to strict mode for comprehensive type safety enforcement.
Context
#249 adopts Pyright in basic mode which catches:
- None safety (
reportOptionalMemberAccess)
- Argument type mismatches (
reportArgumentType)
- Attribute access on wrong types (
reportAttributeAccessIssue)
- Invalid calls (
reportCallIssue)
Strict mode additionally enforces:
- All function parameters must have type annotations
- All return types must be declared
- No implicit
Any types
- No unknown member accesses
- Stricter generic type checking
Prerequisites
Implementation
- Switch
pyrightconfig.json from "typeCheckingMode": "basic" to "strict"
- Audit new errors — likely hundreds of missing annotations, especially in:
- Test files (most functions unannotated)
- Callback parameters
- Dynamic patterns in
config.py
- Fix incrementally or use
# type: ignore where annotation burden outweighs value
- Consider per-directory strict vs basic via
pyrightconfig.json executionEnvironments
Acceptance criteria
Summary
After completing #249 (Pyright basic mode with 0 errors), upgrade to strict mode for comprehensive type safety enforcement.
Context
#249 adopts Pyright in basic mode which catches:
reportOptionalMemberAccess)reportArgumentType)reportAttributeAccessIssue)reportCallIssue)Strict mode additionally enforces:
AnytypesPrerequisites
Implementation
pyrightconfig.jsonfrom"typeCheckingMode": "basic"to"strict"config.py# type: ignorewhere annotation burden outweighs valuepyrightconfig.jsonexecutionEnvironmentsAcceptance criteria
pyrightconfig.jsonset to strict mode