Skip to content

update to adj assertions, remove _rev concept #37

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Aug 21, 2024
21 changes: 13 additions & 8 deletions nx_arangodb/classes/dict/adj.py
Original file line number Diff line number Diff line change
Expand Up @@ -1555,9 +1555,13 @@ def set_edge_graph(
edge_attr_dict: EdgeAttrDict
edge_attr_dict = adjlist_inner_dict._create_edge_attr_dict(edge)

adjlist_inner_dict.data[dst_node_id] = edge_attr_dict
if dst_node_id not in adjlist_inner_dict.data:
adjlist_inner_dict.data[dst_node_id] = edge_attr_dict
else:
existing_edge_attr_dict = adjlist_inner_dict.data[dst_node_id]
existing_edge_attr_dict.data.update(edge_attr_dict.data)

return edge_attr_dict
return adjlist_inner_dict.data[dst_node_id] # type: ignore # false positive

def set_edge_multigraph(
src_node_id: str, dst_node_id: str, edges: dict[int, dict[str, Any]]
Expand All @@ -1571,8 +1575,14 @@ def set_edge_multigraph(
edge_key_dict.FETCHED_ALL_IDS = True

for edge in edges.values():
edge_attr_dict: EdgeAttrDict
edge_attr_dict = adjlist_inner_dict._create_edge_attr_dict(edge)
edge_key_dict.data[edge["_id"]] = edge_attr_dict

if edge["_id"] not in edge_key_dict.data:
edge_key_dict.data[edge["_id"]] = edge_attr_dict
else:
existing_edge_attr_dict = edge_key_dict.data[edge["_id"]]
existing_edge_attr_dict.data.update(edge_attr_dict.data)

adjlist_inner_dict.data[dst_node_id] = edge_key_dict

Expand Down Expand Up @@ -1618,11 +1628,6 @@ def propagate_edge_directed_symmetric(
for src_node_id, inner_dict in edges_dict.items():
for dst_node_id, edge_or_edges in inner_dict.items():

if not self.is_directed:
if src_node_id in self.data:
if dst_node_id in self.data[src_node_id].data:
continue # can skip due not directed

self.__set_adj_inner_dict(self, src_node_id)
self.__set_adj_inner_dict(self, dst_node_id)
edge_attr_or_key_dict = set_edge_func( # type: ignore[operator]
Expand Down
38 changes: 31 additions & 7 deletions tests/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,10 +402,15 @@ def test_edge_adj_dict_update_existing_single_collection_graph_and_digraph(
# Check if the extraValue attribute was added to each document in the local cache
for from_doc_id, target_dict in local_edges_dict.items():
for to_doc_id, edge_doc in target_dict.items():
assert "extraValue" in G_1._adj[from_doc_id][to_doc_id]
assert G_1.adj[from_doc_id][to_doc_id][
"extraValue"
] == extract_arangodb_key(edge_doc["_id"])
key = extract_arangodb_key(edge_doc["_id"])
assert "extraValue" in G_1._adj.data[from_doc_id].data[to_doc_id].data
assert G_1.adj[from_doc_id][to_doc_id]["extraValue"] == key
if G_1.is_directed():
assert "extraValue" in G_1._pred.data[to_doc_id].data[from_doc_id].data
assert G_1.pred[to_doc_id][from_doc_id]["extraValue"] == key
else:
assert "extraValue" in G_1._adj.data[to_doc_id].data[from_doc_id].data
assert G_1.adj[to_doc_id][from_doc_id]["extraValue"] == key


@pytest.mark.parametrize(
Expand Down Expand Up @@ -455,10 +460,29 @@ def test_edge_adj_dict_update_existing_single_collection_MultiGraph_and_MultiDiG
for from_doc_id, target_dict in local_edges_dict.items():
for to_doc_id, edge_dict in target_dict.items():
for edge_id, edge_doc in edge_dict.items():
assert "extraValue" in G_1._adj[from_doc_id][to_doc_id][edge_id]
assert G_1.adj[from_doc_id][to_doc_id][edge_id][
key = extract_arangodb_key(edge_doc["_id"])
assert (
"extraValue"
] == extract_arangodb_key(edge_doc["_id"])
in G_1._adj.data[from_doc_id].data[to_doc_id].data[edge_id].data
)
assert G_1.adj[from_doc_id][to_doc_id][edge_id]["extraValue"] == key
if G_1.is_directed():
assert (
"extraValue"
in G_1._pred.data[to_doc_id]
.data[from_doc_id]
.data[edge_id]
.data
)
assert (
G_1.pred[to_doc_id][from_doc_id][edge_id]["extraValue"] == key
)
else:
assert (
"extraValue"
in G_1._adj.data[to_doc_id].data[from_doc_id].data[edge_id].data
)
assert G_1.adj[to_doc_id][from_doc_id][edge_id]["extraValue"] == key


def test_edge_dict_update_multiple_collections(load_two_relation_graph: Any) -> None:
Expand Down