def constructCaemlObj_fromCaemlDict(aDict: dict) -> caemlBaseObj:
"""Constructs a object of caeml.base from a dict if caeml knows how to contruct, else aDict is returned."""
if not 'caemlType' in aDict:
raise ValueError('aDict must include a CAEMl type')
aClassName = aDict.pop('caemlType')
if not type(aClassName) is list:
aClassName = [aClassName]
logging.getLogger('system').debug('Building object of type' + aClassName[0])
aClass = locate(aClassName[0]) # TODO manager autocomplete, TODO: manager
if (not aClass):
raise Exception('No ctor found for ' + aClassName[0])
try:
if 'name' in aDict:
aObject = aClass(**aDict) # TODO: maybe validate parent<-> child relationships here:
else:
aObject = aClass(**aDict)
return aObject
except Exception as e:
raise Exception('Ctor of {} raised {}'.format(aClassName[0], str(e)))
评论列表
文章目录