Description
The codebase uses 19 assert isinstance() statements for runtime type validation. When Python runs with optimization flags (python -O), assertions are stripped entirely, causing type validation to disappear silently. Invalid inputs pass through undetected, resulting in cryptic downstream errors instead of clear type validation failures.
Root Cause
Python's assert statement is a debugging tool—it disappears with the -O flag. Using it for production input validation is unreliable:
assert isinstance(region, Region) # ✓ Works normally
# python -O script.py
# → Assertion stripped, validation gone
Impact
- Type validation silently disappears in optimized environments
- Invalid types pass through undetected
- Downstream code crashes with cryptic errors (
AttributeError, KeyError)
- Users see confusing error messages far from the actual problem
Reproduction
# Normal mode - validation works
python3 script.py
# Optimized mode - validation silently disappears
python3 -O script.py
PYTHONOPTIMIZE=1 python3 script.py # Docker environments
Result: Invalid types accepted without error. Downstream code crashes with confusing AttributeError instead of clear TypeError.
Solution
Replace all 19 assert isinstance() with explicit raise TypeError() that persists regardless of Python optimization flags:
# Before
assert isinstance(region, Region)
# After
if not isinstance(region, Region):
raise TypeError(f"Expected region: Region, got {type(region).__name__}")
This ensures reliable type validation in all environments: development, testing, and production.
Description
The codebase uses 19
assert isinstance()statements for runtime type validation. When Python runs with optimization flags (python -O), assertions are stripped entirely, causing type validation to disappear silently. Invalid inputs pass through undetected, resulting in cryptic downstream errors instead of clear type validation failures.Root Cause
Python's
assertstatement is a debugging tool—it disappears with the-Oflag. Using it for production input validation is unreliable:Impact
AttributeError,KeyError)Reproduction
Result: Invalid types accepted without error. Downstream code crashes with confusing
AttributeErrorinstead of clearTypeError.Solution
Replace all 19
assert isinstance()with explicitraise TypeError()that persists regardless of Python optimization flags:This ensures reliable type validation in all environments: development, testing, and production.