Source code for cadrumo.core.storage_materialization
"""Explicit filesystem materialization for the configured storage topology.Reading :mod:`cadrumo.core.config` is intentionally non-mutating. Callers thatneed the on-disk topology opt into it through this module instead."""from__future__importannotationsfrompathlibimportPathfromstatimportS_ISDIRfromtypingimportFinalfrom.configimportSettings,load_settingsfrom.errors.hierarchyimportCoreValidationErrorSTORAGE_ROOT_MODE:Final[int]=0o700"""Permission mode :func:`ensure_storage_tree` requests on the state root."""
[docs]defensure_storage_tree(settings:Settings|None=None)->Path:"""Validate explicit storage dependencies and materialize owned defaults. This is the sole opt-in topology materialization boundary. Settings and derived-path reads never enter it implicitly. Operator-selected directory overrides must already exist; the application-owned root and derived defaults are provisioned idempotently. """from.storage_taxonomy_locationsimportstorage_tree_targetsresolved=settingsifsettingsisnotNoneelseload_settings()root=Path(resolved.cadrumo_local_storage_root)explicit_targets=storage_tree_targets(resolved,include_derived=False)derived_targets=storage_tree_targets(resolved,include_explicit=False)fortargetinexplicit_targets:_require_directory(target,explicit_override=True)fortargetin(root,*derived_targets):if_require_directory(target,explicit_override=False):continuetry:target.mkdir(parents=True,exist_ok=True)exceptOSErrorasexc:raiseCoreValidationError(translated_message="errors.integrity.integrity_cadrumo_core_validation",context={"state_directory_target":str(target),"occupied_by_file":False,"directory_created":False,"mkdir_error_type":type(exc).__name__,},)fromexcfrom.file_permissionsimportrestrict_directory_permissionsrestrict_directory_permissions(root)returnroot
def_require_directory(target:Path,*,explicit_override:bool)->bool:"""Return whether ``target`` is a directory, refusing invalid dependencies."""try:mode=target.stat().st_modeexceptFileNotFoundError:ifexplicit_override:raiseCoreValidationError(translated_message="errors.integrity.integrity_cadrumo_core_validation",context={"state_directory_target":str(target),"occupied_by_file":False,"directory_created":False,"explicit_override":True,},)fromNonereturnFalseexceptOSErrorasexc:context:dict[str,str|bool]={"state_directory_target":str(target),"occupied_by_file":False,"directory_created":False,"stat_error_type":type(exc).__name__,}ifexplicit_override:context["explicit_override"]=TrueraiseCoreValidationError(translated_message="errors.integrity.integrity_cadrumo_core_validation",context=context,)fromexcifnotS_ISDIR(mode):context={"state_directory_target":str(target),"occupied_by_file":True,"directory_created":False,}ifexplicit_override:context["explicit_override"]=TrueraiseCoreValidationError(translated_message="errors.integrity.integrity_cadrumo_core_validation",context=context,)returnTrue