From 4c3cd343700e110a8e34a1bc838699cf28538ac5 Mon Sep 17 00:00:00 2001 From: Daniel <d.hornung@indiscale.com> Date: Fri, 24 Nov 2023 12:57:00 +0100 Subject: [PATCH] FIX: YAML parser: Descriptions are honored now for list properties. --- src/caosadvancedtools/models/parser.py | 11 ++++++++--- unittests/test_yaml_model_parser.py | 7 +++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py index cda51d91..37f34e7b 100644 --- a/src/caosadvancedtools/models/parser.py +++ b/src/caosadvancedtools/models/parser.py @@ -533,9 +533,13 @@ debug : bool, optional if not isinstance(definition, dict): return - if ("datatype" in definition - and definition["datatype"].startswith("LIST")): + # These definition items must be handled even for list props. + for prop_name, prop in definition.items(): + if prop_name == "description": + self.model[name].description = prop + # For lists, everything else is not needed at this level. + if ("datatype" in definition and definition["datatype"].startswith("LIST")): return if name in self.treated: @@ -553,7 +557,8 @@ debug : bool, optional self.model[name].value = prop elif prop_name == "description": - self.model[name].description = prop + # Handled above + continue elif prop_name == "recommended_properties": self._add_to_recordtype( diff --git a/unittests/test_yaml_model_parser.py b/unittests/test_yaml_model_parser.py index ae90a903..1019a93a 100644 --- a/unittests/test_yaml_model_parser.py +++ b/unittests/test_yaml_model_parser.py @@ -21,7 +21,7 @@ from datetime import date from tempfile import NamedTemporaryFile from pytest import deprecated_call, raises, mark -import caosdb as db +import linkahead as db from caosadvancedtools.models.parser import (TwiceDefinedException, YamlDefinitionError, parse_model_from_string, @@ -302,10 +302,12 @@ A: def test_reference_property(self): """Test correct creation of reference property using an RT.""" - modeldef = """A: + modeldef = """ +A: recommended_properties: ref: datatype: LIST<A> + description: new description """ model = parse_model_from_string(modeldef) self.assertEqual(len(model), 2) @@ -315,6 +317,7 @@ A: elif key == "ref": self.assertTrue(isinstance(value, db.Property)) self.assertEqual(value.datatype, "LIST<A>") + assert value.description == "new description" class ExternTest(unittest.TestCase): -- GitLab