diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py index fe52616d694aa1c37c0abab4e3cec5e5d65ec8a7..41dcc3cdb76e307bace04f63748373d2d7f9741f 100644 --- a/src/caosadvancedtools/models/parser.py +++ b/src/caosadvancedtools/models/parser.py @@ -25,7 +25,8 @@ import yaml from .data_model import DataModel # Keywords which are allowed in data model descriptions. -KEYWORDS = ["parent", # TODO: can we remove that, see: #36 +KEYWORDS = ["parent", # deprecated, use inherit_from_* instead: + # https://gitlab.com/caosdb/caosdb-advanced-user-tools/-/issues/36 "importance", "datatype", # for example TEXT, INTEGER or REFERENCE "unit", @@ -37,7 +38,8 @@ KEYWORDS = ["parent", # TODO: can we remove that, see: #36 "inherit_from_suggested", "inherit_from_obligatory", "role", - "value", ] + "value", + ] # TODO: check whether it's really ignored # These KEYWORDS are not forbidden as properties, but merely ignored. @@ -112,9 +114,9 @@ def parse_model_from_string(string): class Parser(object): def __init__(self): - """ - Initialize an empty parer object and initialize - the dictionary of entities and the list of treated elements. + """Initialize an empty parser object and initialize the dictionary of entities and the list of + treated elements. + """ self.model = {} self.treated = [] @@ -311,7 +313,25 @@ class Parser(object): raise def _add_to_recordtype(self, ent_name, props, importance): - """Add properties to a RecordType.""" + """Add properties to a RecordType. + + Parameters + ---------- + ent_name : str + The name of the entity to which the properties shall be added. + + props : dict [str -> dict or :doc:`Entity`] + The properties, indexed by their names. Properties may be given as :doc:`Entity` objects + or as dictionaries. + + importance + The importance as used in :doc:`Entity.add_property`. + + Returns + ------- + None + + """ for n, e in props.items(): if n in KEYWORDS: @@ -326,9 +346,10 @@ class Parser(object): if isinstance(e, dict): if "datatype" in e and _get_listdatatype(e["datatype"]) is not None: + # Reuse the existing datatype for lists. datatype = db.LIST(_get_listdatatype(e["datatype"])) else: - # ignore a possible e["datatype"] here if it's not a list + # Ignore a possible e["datatype"] here if it's not a list # since it has been treated in the definition of the # property (entity) already datatype = None diff --git a/unittests/test_parser.py b/unittests/test_parser.py index c3f09462fe0dbf67afa9c2bb9bf17224bd91eef6..01730cdb1690c7c4a917475d10c9035177fb58b7 100644 --- a/unittests/test_parser.py +++ b/unittests/test_parser.py @@ -408,7 +408,7 @@ def test_issue_72(): https://gitlab.indiscale.com/caosdb/src/caosdb-advanced-user-tools/-/issues/72 In some cases, faulty values would be read in for properties without a - secified value. + specified value. """ model = """