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