[mypy] python_version = 3.12 strict = True implicit_reexport = True ignore_missing_imports = True warn_unused_configs = True exclude = (?x)( ^compliance/tests/ | ^compliance/data/ | ^compliance/scripts/ ) # Tests are not type-checked (legacy; will be tightened when TestClient-based # integration tests land in Phase 1 Step 4 follow-up). [mypy-compliance.tests.*] ignore_errors = True # ---------------------------------------------------------------------- # Phase 1 refactor policy: # - compliance.domain / compliance.schemas : fully strict # - compliance.api._http_errors : fully strict # - compliance.services. : strict (list explicitly) # - compliance.repositories.* : strict with ORM arg-type # ignore (see per-file) # - compliance.db.* : loose (ORM models) # - compliance.services. : loose (pre-refactor) # - compliance.api. : loose until Step 4 # ---------------------------------------------------------------------- # Legacy utility services that predate the Phase 1 refactor. Not touched # by the clean-arch extraction. Left loose until their own refactor pass. [mypy-compliance.services.ai_compliance_assistant] ignore_errors = True [mypy-compliance.services.audit_pdf_generator] ignore_errors = True [mypy-compliance.services.auto_risk_updater] ignore_errors = True [mypy-compliance.services.control_generator] ignore_errors = True [mypy-compliance.services.export_generator] ignore_errors = True [mypy-compliance.services.llm_provider] ignore_errors = True [mypy-compliance.services.pdf_extractor] ignore_errors = True [mypy-compliance.services.regulation_scraper] ignore_errors = True [mypy-compliance.services.report_generator] ignore_errors = True [mypy-compliance.services.seeder] ignore_errors = True [mypy-compliance.services.similarity_detector] ignore_errors = True [mypy-compliance.services.license_gate] ignore_errors = True [mypy-compliance.services.anchor_finder] ignore_errors = True [mypy-compliance.services.rag_client] ignore_errors = True # SQLAlchemy ORM layer: models use Column() rather than Mapped[T], so # static analysis sees descriptors as Column[T] while runtime returns T. # Loose for the whole db package until a future Mapped[T] migration. [mypy-compliance.db.*] ignore_errors = True # Route files (Phase 1 Step 4 in progress): only the refactored ones are # checked strictly via explicit extension of the strict scope in CI. # Until each file is refactored, it stays loose. [mypy-compliance.api.*] ignore_errors = True # Refactored route modules under Step 4 — override the blanket rule above. [mypy-compliance.api.audit_routes] ignore_errors = False [mypy-compliance.api.banner_routes] ignore_errors = False [mypy-compliance.api._http_errors] ignore_errors = False