Skip to content
Snippets Groups Projects
Commit 1f058cd8 authored by Alexander Schlemmer's avatar Alexander Schlemmer
Browse files

MAINT: compressed some code for readability

parent d5809fd3
No related branches found
No related tags found
2 merge requests!178FIX: #96 Better error output for crawl.py script.,!167Sync Graph
Pipeline #51526 passed with warnings
...@@ -504,7 +504,10 @@ class SyncGraph: ...@@ -504,7 +504,10 @@ class SyncGraph:
def _mark_entities_with_path_or_id(self): def _mark_entities_with_path_or_id(self):
"""A path or an ID is sufficiently identifying. Thus, those entities can be marked as """A path or an ID is sufficiently identifying. Thus, those entities can be marked as
checked""" checked
Last review by Alexander Schlemmer on 2024-05-29.
"""
for node in list(self.nodes): for node in list(self.nodes):
if node.id is not None: if node.id is not None:
eq_node = self.get_equivalent(node) eq_node = self.get_equivalent(node)
...@@ -533,16 +536,16 @@ class SyncGraph: ...@@ -533,16 +536,16 @@ class SyncGraph:
def _merge_into(self, source: SyncNode, target: SyncNode): def _merge_into(self, source: SyncNode, target: SyncNode):
"""tries to merge source into target and performs the necessary updates: """tries to merge source into target and performs the necessary updates:
- update the membervariables of target using source (``target.update(source)``). - update the member variables of target using source (``target.update(source)``).
- replaces reference values to source by target - replaces reference values to source by target
- updates the reference map - updates the reference map
- updates lookup tables - updates lookup tables
- removes source from node lists - removes source from node lists
- marks target as missing/existing if source was marked that way - marks target as missing/existing if source was marked that way
- adds an identifiable if now possible (e.g. merging based on ID might allow create an - adds an identifiable if now possible (e.g. merging based on ID might allow create an
identifiable when none of the two nodes hand the sufficient properties on its own before) identifiable when none of the two nodes had the sufficient properties on its own before)
- check whether dependent nodes can now get and identifiable (the merge might have set the - check whether dependent nodes can now get an identifiable (the merge might have set the
ID such that dependen nodes can now create an identifiable) ID such that dependent nodes can now create an identifiable)
""" """
# sanity checks # sanity checks
if source is target: if source is target:
...@@ -569,32 +572,17 @@ class SyncGraph: ...@@ -569,32 +572,17 @@ class SyncGraph:
) )
# update reference mappings # update reference mappings
for node in self.forward_references.pop(id(source)): for setA, setB in (
self.forward_references[id(target)].add(node) (self.forward_references, self.backward_references),
self.backward_references[id(node)].remove(source) (self.backward_references, self.forward_references),
self.backward_references[id(node)].add(target) (self.forward_references_id_props, self.backward_references_id_props),
for node in self.backward_references.pop(id(source)): (self.backward_references_id_props, self.forward_references_id_props),
self.backward_references[id(target)].add(node) (self.forward_references_backref, self.backward_references_backref),
self.forward_references[id(node)].remove(source) (self.backward_references_backref, self.forward_references_backref),):
self.forward_references[id(node)].add(target) for node in setA.pop(id(source)):
setA[id(target)].add(node)
for node in self.forward_references_id_props.pop(id(source)): setB[id(node)].remove(source)
self.forward_references_id_props[id(target)].add(node) setB[id(node)].add(target)
self.backward_references_id_props[id(node)].remove(source)
self.backward_references_id_props[id(node)].add(target)
for node in self.backward_references_id_props.pop(id(source)):
self.backward_references_id_props[id(target)].add(node)
self.forward_references_id_props[id(node)].remove(source)
self.forward_references_id_props[id(node)].add(target)
for node in self.forward_references_backref.pop(id(source)):
self.forward_references_backref[id(target)].add(node)
self.backward_references_backref[id(node)].remove(source)
self.backward_references_backref[id(node)].add(target)
for node in self.backward_references_backref.pop(id(source)):
self.backward_references_backref[id(target)].add(node)
self.forward_references_backref[id(node)].remove(source)
self.forward_references_backref[id(node)].add(target)
# remove unneeded SyncNode # remove unneeded SyncNode
self.nodes.remove(source) self.nodes.remove(source)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment