Skip to content
Snippets Groups Projects

Revert "Revert "Merge branch 'f-extend-yaml-model' into 'dev'""

Merged Florian Spreckelsen requested to merge f-extend-yaml-model into dev
1 unresolved thread
2 files
+ 29
8
Compare changes
  • Side-by-side
  • Inline

Files

@@ -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
Loading