Phase 1 Step 3 of PHASE1_RUNBOOK.md. compliance/api/schemas.py is
decomposed into 16 per-domain Pydantic schema modules under
compliance/schemas/:
common.py ( 79) — 6 API enums + PaginationMeta
regulation.py ( 52)
requirement.py ( 80)
control.py (119) — Control + Mapping
evidence.py ( 66)
risk.py ( 79)
ai_system.py ( 63)
dashboard.py (195) — Dashboard, Export, Executive Dashboard
service_module.py (121)
bsi.py ( 58) — BSI + PDF extraction
audit_session.py (172)
report.py ( 53)
isms_governance.py (343) — Scope, Context, Policy, Objective, SoA
isms_audit.py (431) — Finding, CAPA, Review, Internal Audit, Readiness, Trail, ISO27001
vvt.py (168)
tom.py ( 71)
compliance/api/schemas.py becomes a 39-line re-export shim so existing
imports (from compliance.api.schemas import RegulationResponse) keep
working unchanged. New code should import from the domain module
directly (from compliance.schemas.regulation import RegulationResponse).
Deferred-from-sweep: all 28 class Config blocks in the original file
were converted to model_config = ConfigDict(...) during the split.
schemas.py-sourced PydanticDeprecatedSince20 warnings are now gone.
Cross-domain references handled via targeted imports (e.g. dashboard.py
imports EvidenceResponse from evidence, RiskResponse from risk). common
API enums + PaginationMeta are imported by every domain module.
Verified:
- 173/173 pytest compliance/tests/ tests/contracts/ pass
- OpenAPI 360 paths / 484 operations unchanged (contract test green)
- All new files under the 500-line hard cap (largest: isms_audit.py
at 431, isms_governance.py at 343, dashboard.py at 195)
- No file in compliance/schemas/ or compliance/api/schemas.py
exceeds the hard cap
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
40 lines
2.0 KiB
Python
40 lines
2.0 KiB
Python
"""
|
|
compliance.api.schemas — backwards-compatibility re-export shim.
|
|
|
|
Phase 1 Step 3 split the monolithic 1899-line schemas module into per-domain
|
|
sibling modules under ``compliance.schemas``. Every public symbol is
|
|
re-exported here so existing imports
|
|
(``from compliance.api.schemas import RegulationResponse, ...``) continue
|
|
to work unchanged.
|
|
|
|
New code SHOULD import directly from the domain module:
|
|
|
|
from compliance.schemas.regulation import RegulationResponse
|
|
from compliance.schemas.control import ControlResponse
|
|
from compliance.schemas.dsr import ... # (future)
|
|
|
|
During the split, every ``class Config:`` block was converted to the
|
|
Pydantic V2 ``model_config = ConfigDict(...)`` idiom (28 conversions).
|
|
|
|
DO NOT add new classes to this file. Add them to the appropriate domain
|
|
module under ``compliance.schemas/`` and re-export here if you need
|
|
backwards compatibility.
|
|
"""
|
|
|
|
from compliance.schemas.common import * # noqa: F401,F403
|
|
from compliance.schemas.regulation import * # noqa: F401,F403
|
|
from compliance.schemas.requirement import * # noqa: F401,F403
|
|
from compliance.schemas.control import * # noqa: F401,F403
|
|
from compliance.schemas.evidence import * # noqa: F401,F403
|
|
from compliance.schemas.risk import * # noqa: F401,F403
|
|
from compliance.schemas.ai_system import * # noqa: F401,F403
|
|
from compliance.schemas.dashboard import * # noqa: F401,F403
|
|
from compliance.schemas.service_module import * # noqa: F401,F403
|
|
from compliance.schemas.bsi import * # noqa: F401,F403
|
|
from compliance.schemas.audit_session import * # noqa: F401,F403
|
|
from compliance.schemas.report import * # noqa: F401,F403
|
|
from compliance.schemas.isms_governance import * # noqa: F401,F403
|
|
from compliance.schemas.isms_audit import * # noqa: F401,F403
|
|
from compliance.schemas.vvt import * # noqa: F401,F403
|
|
from compliance.schemas.tom import * # noqa: F401,F403
|