From 0ed35ffea7f6fb7c1e566e07d0171b028edae68b Mon Sep 17 00:00:00 2001 From: Peter Kraus Date: Wed, 21 Aug 2024 12:25:46 +0200 Subject: [PATCH] Fix schema updater mess. --- src/yadg/core/__init__.py | 2 +- src/yadg/dgutils/utils.py | 4 ++++ src/yadg/subcommands.py | 3 ++- tests/test_preset.py | 4 ++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/yadg/core/__init__.py b/src/yadg/core/__init__.py index c587cef6..8cb57450 100644 --- a/src/yadg/core/__init__.py +++ b/src/yadg/core/__init__.py @@ -75,11 +75,11 @@ def process_schema(dataschema: DataSchema, strict_merge: bool = False) -> DataTr root.attrs.update(dgutils.get_yadg_metadata()) while hasattr(dataschema, "update"): - dataschema = dataschema.update() if hasattr(dataschema, "metadata"): if hasattr(dataschema.metadata, "version"): if dataschema.metadata.version == "5.0": break + dataschema = dataschema.update() for si, step in enumerate(dataschema.steps): logger.info("Processing step %d:", si) diff --git a/src/yadg/dgutils/utils.py b/src/yadg/dgutils/utils.py index 4cf10b6c..28119e49 100644 --- a/src/yadg/dgutils/utils.py +++ b/src/yadg/dgutils/utils.py @@ -139,6 +139,10 @@ def update_schema(object: Union[list, dict]) -> dict: raise ValueError(f"Supplied object is of incorrect type: {type(object)}") newobj = to_dataschema(**newobj) while hasattr(newobj, "update"): + if hasattr(newobj, "metadata"): + if hasattr(newobj.metadata, "version"): + if newobj.metadata.version == "5.0": + break newobj = newobj.update() return newobj diff --git a/src/yadg/subcommands.py b/src/yadg/subcommands.py index 4a42533c..d40a182a 100644 --- a/src/yadg/subcommands.py +++ b/src/yadg/subcommands.py @@ -66,11 +66,12 @@ def process(args: argparse.Namespace) -> None: logger.info("Loaded dataschema version '%s'", ds.metadata.version) while hasattr(ds, "update"): - ds = ds.update() if hasattr(ds, "metadata"): if hasattr(ds.metadata, "version"): if ds.metadata.version == "5.0": break + ds = ds.update() + logger.debug("Processing schema") datagram = core.process_schema(ds, strict_merge=not args.ignore_merge_errors) diff --git a/tests/test_preset.py b/tests/test_preset.py index a4ab8cf9..409474a1 100644 --- a/tests/test_preset.py +++ b/tests/test_preset.py @@ -23,6 +23,10 @@ def test_preset(input, ts, datadir): schema = to_dataschema(**preset) while hasattr(schema, "update"): + if hasattr(schema, "metadata"): + if hasattr(schema.metadata, "version"): + if schema.metadata.version == "5.0": + break schema = schema.update() ds = yadg.dgutils.schema_from_preset(schema, input)