From 9b9d9a149f6372674945bd4623f6e48afbe06ffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Therese=20Natter=C3=B8y?= <61694854+tnatt@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:35:31 +0100 Subject: [PATCH] MAINT: Use validated config as input to case metadata --- src/fmu/dataio/case.py | 30 ++++++++++++++---------- tests/test_units/test_initialize_case.py | 3 ++- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/fmu/dataio/case.py b/src/fmu/dataio/case.py index 52a9155fb..a0282360d 100644 --- a/src/fmu/dataio/case.py +++ b/src/fmu/dataio/case.py @@ -15,7 +15,7 @@ from ._logging import null_logger from ._metadata import CaseMetadataExport from ._model import global_configuration -from ._model.fields import Access, Case, Masterdata, Model, User +from ._model.fields import Case, User logger: Final = null_logger(__name__) @@ -63,12 +63,6 @@ def __post_init__(self) -> None: self._casepath = Path(self.rootfolder) self._metafile = self._casepath / "share/metadata/fmu_case.yml" - # For this class, the global config must be valid; hence error if not - try: - global_configuration.GlobalConfiguration.model_validate(self.config) - except ValidationError as e: - global_configuration.validation_error_warning(e) - raise logger.info("Ran __post_init__ for CreateCaseMetadata") def _establish_metadata_files(self) -> bool: @@ -106,6 +100,16 @@ def generate_metadata(self) -> dict: A dictionary with case metadata or an empty dictionary if the metadata already exists. """ + + # For this class, the global config must be valid; hence error if not + try: + config = global_configuration.GlobalConfiguration.model_validate( + self.config + ) + except ValidationError as e: + global_configuration.validation_error_warning(e) + raise + if not self._establish_metadata_files(): exists_warning = ( "The case metadata file already exists and will not be overwritten. " @@ -116,13 +120,15 @@ def generate_metadata(self) -> dict: warnings.warn(exists_warning, UserWarning) return {} + # TODO: Change to direct use of config.access when version 3.0 is released self._metadata = CaseMetadataExport( - masterdata=Masterdata.model_validate(self.config["masterdata"]), - access=Access.model_validate(self.config["access"]), + masterdata=config.masterdata, + access=fields.Access( + asset=config.access.asset, + classification=config.access.classification, + ), fmu=fields.FMUBase( - model=Model.model_validate( - self.config["model"], - ), + model=config.model, case=Case( name=self.casename, uuid=self._case_uuid(), diff --git a/tests/test_units/test_initialize_case.py b/tests/test_units/test_initialize_case.py index 93302f795..5c6d3a362 100644 --- a/tests/test_units/test_initialize_case.py +++ b/tests/test_units/test_initialize_case.py @@ -169,6 +169,8 @@ def test_create_case_metadata_export_with_norsk_alphabet( monkeypatch.chdir(fmurun) caseroot = fmurun.parent.parent + globalconfig2["masterdata"]["smda"]["field"][0]["identifier"] = "æøå" + icase = CreateCaseMetadata( config=globalconfig2, rootfolder=caseroot, @@ -176,7 +178,6 @@ def test_create_case_metadata_export_with_norsk_alphabet( caseuser="MyUser", description="Søme description", ) - globalconfig2["masterdata"]["smda"]["field"][0]["identifier"] = "æøå" fmu_case_yml = Path(icase.export()) assert fmu_case_yml.exists()