Skip to content

Type Validation Silently Fails with Python Optimization Flag (-O) #1191

@kunal-10-cloud

Description

@kunal-10-cloud

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions