def get_recursive_node_entities(id_: int, data: list[dict[str, Any]]) \ -> list[dict[str, Any]]: for entity in g.types[id_].get_linked_entities(['P2', 'P89'], inverse=True): data.append(get_node_dict(entity)) for sub_id in g.types[id_].subs: GetNodeEntitiesAll.get_recursive_node_entities(sub_id, data) return data
def get_node(id_: int) -> list[dict[str, Any]]: if id_ not in g.types: raise InvalidSubunitError # pragma: no cover return [ get_node_dict(entity) for entity in g.types[id_].get_linked_entities(['P2', 'P89'], inverse=True) ]
def get_subunits_recursive( entity: Optional[Entity], data: list[dict[str, Any]]) -> list[dict[str, Any]]: structure = get_structure(entity) if structure and structure['subunits']: for subunit in structure['subunits']: data.append(get_node_dict(subunit)) node = get_structure(entity) if node: for sub_id in node['subunits']: GetSubunitHierarchy.get_subunits_recursive(sub_id, data) return data
def get_subunits(id_: int) -> list[dict[str, Any]]: structure = get_structure(get_entity_by_id(id_)) if not structure or not structure['subunits']: raise InvalidSubunitError # pragma: no cover return [get_node_dict(subunit) for subunit in structure['subunits']]