Source code for cadrumo.entrypoints.tui.modelo.installed_workspace
"""Production handoff from admitted Declarations rows to Modelo workspace pages.The installed workbench captures its Declarations and Modelo projections beforeit mounts the Declarations destination. This module joins those immutablefacts without resolving persistence, registry, or network authority again."""from__future__importannotationsfromcollections.abcimportMappingfromtextual.screenimportScreenfrom....application.modelo.declarations_workspaceimportDeclarationsWorkspaceDeclarationRefV1from....application.modelo.workspace_modelsimportModeloWorkspaceProjectionV1from....core.errors.hierarchyimportCadrumoErrorfrom....core.identity.bucketimportBucketIdfrom..declarations.modelsimportModeloWorkspaceScreenFactoryV1from.routesimportWORKSPACE_SELECTION_OUTCOME,resolve_destinationfrom.view.controllerimportModeloWorkspaceReadSession,open_workspace_read_session
[docs]classModeloWorkspaceDeclarationAdmissionError(CadrumoError):"""An installed declaration cannot open a workspace from this generation."""
[docs]defcompose_installed_modelo_workspace_factory(*,bucket_id:BucketId,declarations:tuple[DeclarationsWorkspaceDeclarationRefV1,...],projections:tuple[ModeloWorkspaceProjectionV1,...],)->ModeloWorkspaceScreenFactoryV1:"""Bind one generation's admitted declarations to canonical read sessions. A declaration reaches the existing Modelo pages only when one captured workspace projection names its exact hidden work identity and visible address. The relation is deliberately total in both directions: a stale declaration, an unrelated projection, or a duplicate target is refused before any Textual screen is constructed. """declaration_by_work_unit=_admitted_declarations(declarations)session_by_work_unit=_admitted_sessions(bucket_id=bucket_id,declarations=declaration_by_work_unit,projections=projections,)defcreate(declaration:DeclarationsWorkspaceDeclarationRefV1,/)->Screen[None]:admitted=declaration_by_work_unit.get(declaration.work_unit_id)ifadmitted!=declaration:raiseModeloWorkspaceDeclarationAdmissionError("the declaration target is not admitted by this Modelo workspace generation")try:session=session_by_work_unit[declaration.work_unit_id]exceptKeyErroraserror:raiseModeloWorkspaceDeclarationAdmissionError("the admitted declaration has no canonical Modelo workspace session")fromerrorreturnresolve_destination(WORKSPACE_SELECTION_OUTCOME)(session)returncreate
def_admitted_declarations(declarations:tuple[DeclarationsWorkspaceDeclarationRefV1,...],)->Mapping[str,DeclarationsWorkspaceDeclarationRefV1]:rows={str(declaration.work_unit_id):declarationfordeclarationindeclarations}iflen(rows)!=len(declarations):raiseModeloWorkspaceDeclarationAdmissionError("the generation carries duplicate declaration work identities")returnrowsdef_admitted_sessions(*,bucket_id:BucketId,declarations:Mapping[str,DeclarationsWorkspaceDeclarationRefV1],projections:tuple[ModeloWorkspaceProjectionV1,...],)->Mapping[str,ModeloWorkspaceReadSession]:sessions:dict[str,ModeloWorkspaceReadSession]={}forprojectioninprojections:target=projection.targetwork_unit_id=target.work_unit_idiftarget.bucket_id!=bucket_idorwork_unit_idisNoneortarget.work_stateisNone:raiseModeloWorkspaceDeclarationAdmissionError("a Modelo workspace projection does not name one current declaration target")declaration=declarations.get(str(work_unit_id))ifdeclarationisNoneor(target.modelo,target.filing_year,target.period,target.work_state,)!=(declaration.modelo,declaration.filing_year,declaration.period,declaration.state,):raiseModeloWorkspaceDeclarationAdmissionError("a Modelo workspace projection contradicts its admitted declaration target")ifwork_unit_idinsessions:raiseModeloWorkspaceDeclarationAdmissionError("the generation carries duplicate Modelo workspace targets")sessions[str(work_unit_id)]=open_workspace_read_session(projection)returnsessions__all__=["ModeloWorkspaceDeclarationAdmissionError","compose_installed_modelo_workspace_factory"]