Skip to content
Snippets Groups Projects

ENH: JsonSchemaExporter accepts do_not_create parameter.

Merged Daniel Hornung requested to merge f-more-jsonschema-export into dev
5 unresolved threads
Files
5
@@ -262,3 +262,37 @@ class DataModel(dict):
all_ents[prop.name] = prop
return list(all_ents.values())
def get_deep(self, name: str, visited: set = None):
"""Attempt to resolve references for the given ``name``.
This methods only uses data which is available in this datamodel, which acts kind of like a
cache pool.
Note that this may change this data model (subsequent "get" like calls may also return deep
content.)
"""
entity = self.get(name)
if not entity:
return entity
if not visited:
visited = set()
# new_props = []
for prop in list(entity.get_properties()): # Make a change-resistant list copy.
if prop.name in visited:
continue
visited.add(prop.name)
if prop.name in self:
deep_prop = self.get_deep(prop.name, visited=visited)
linked_prop = entity.get_property(prop)
if not linked_prop.datatype:
if deep_prop.role == "Property":
linked_prop.datatype = deep_prop.datatype
elif deep_prop.role == "RecordType":
linked_prop.datatype = deep_prop
if deep_prop.description:
linked_prop.description = deep_prop.description
else:
print(f"Referenced property \"{prop.name}\" not found in data model.")
return entity
Loading