diff --git a/src/caoscrawler/semantic_target.py b/src/caoscrawler/semantic_target.py index 818e686aa9e552e88df41f53d855d6dce74118a6..dfd817b932b543990515c86bb8c5a610a0315b9d 100644 --- a/src/caoscrawler/semantic_target.py +++ b/src/caoscrawler/semantic_target.py @@ -23,7 +23,7 @@ A data model class for the semantic data that shall be created by synchronization of the crawler. """ -from typing import Any, List, Optional, Union +from typing import Any, Dict, List, Optional, Union from uuid import uuid4 as uuid import linkahead as db @@ -100,17 +100,17 @@ class SemanticTarget(): def __init__(self, entities: List[db.Entity], identifiableAdapter): self.identifiableAdapter = identifiableAdapter - self._id_look_up: dict[int, SemanticEntity] = {} - self._path_look_up: dict[str, SemanticEntity] = {} - self._identifiable_look_up: dict[str, SemanticEntity] = {} - self._missing: dict[int, SemanticEntity] = {} - self._existing: dict[int, SemanticEntity] = {} + self._id_look_up: Dict[int, SemanticEntity] = {} + self._path_look_up: Dict[str, SemanticEntity] = {} + self._identifiable_look_up: Dict[str, SemanticEntity] = {} + self._missing: Dict[int, SemanticEntity] = {} + self._existing: Dict[int, SemanticEntity] = {} self._remote_missing_counter = -1 # TODO: I guess we can now get rid of this... # create initial set of SemanticEntities from provided Entity list - self.se: list[SemanticEntity] = [] # list of all SemanticEntities + self.se: List[SemanticEntity] = [] # list of all SemanticEntities # TODO do we only need this for creating the initial reference map? Remove it? - self.se_lookup: dict[str, SemanticEntity] = {} # lookup: UUID -> SemanticEntity + self.se_lookup: Dict[str, SemanticEntity] = {} # lookup: UUID -> SemanticEntity entities = self._create_flat_list(entities) self._sanity_check(entities) for el in entities: @@ -257,7 +257,7 @@ class SemanticTarget(): + [id(ent) in self._missing for ent in self.backward_id_referenced_by[se.uuid]]) @ staticmethod - def _sanity_check(entities: list[db.Entity]): + def _sanity_check(entities: List[db.Entity]): for ent in entities: if ent.role == "Record" and len(ent.parents) == 0: raise RuntimeError(f"Records must have a parent.\n{ent}") @@ -271,7 +271,7 @@ class SemanticTarget(): se.fragments = [se.fragments[0]] @ staticmethod - def _create_flat_list(ent_list: list[db.Entity], flat: Optional[list[db.Entity]] = None): + def _create_flat_list(ent_list: List[db.Entity], flat: Optional[List[db.Entity]] = None): """ Recursively adds entities and all their properties contained in ent_list to the output list flat. @@ -348,7 +348,7 @@ class SemanticTarget(): raise RuntimeError("Cannot merge Entities") @ staticmethod - def _create_reference_mapping(flat: list[SemanticEntity], se_lookup): + def _create_reference_mapping(flat: List[SemanticEntity], se_lookup): """ TODO update docstring Create a dictionary of dictionaries of the form: @@ -363,12 +363,12 @@ class SemanticTarget(): to them. """ # TODO we need to treat children of RecordTypes somehow. - forward_references: dict[str, set[SemanticEntity]] = {} - backward_references: dict[str, set[SemanticEntity]] = {} - forward_id_references: dict[str, set[SemanticEntity]] = {} - backward_id_references: dict[str, set[SemanticEntity]] = {} - forward_id_referenced_by: dict[str, set[SemanticEntity]] = {} - backward_id_referenced_by: dict[str, set[SemanticEntity]] = {} + forward_references: Dict[str, set[SemanticEntity]] = {} + backward_references: Dict[str, set[SemanticEntity]] = {} + forward_id_references: Dict[str, set[SemanticEntity]] = {} + backward_id_references: Dict[str, set[SemanticEntity]] = {} + forward_id_referenced_by: Dict[str, set[SemanticEntity]] = {} + backward_id_referenced_by: Dict[str, set[SemanticEntity]] = {} # initialize with empty lists/dict for se in flat: