Open
Description
Hi @j6k4m8,
There is an issue with grand.Graph
and grand.dialects.NetworkXDialect
.
Since NetworkXDialect is inherited from networkx.Graph
, there happen to be discrepancies between grand.dialects.NetworkXDialect
and networkx.Digraph
which is popagated back to grand.Graph. One of them is the networkx.Graph.edges
returns EdgeView
while networkx.Digraph.edges
returns OutEdgeView
.
Below is one of the test to replicate the issue
def test_nx_edges(self):
G = Graph(directed=True).nx
H = nx.DiGraph()
G.add_edge("1", "2")
G.add_edge("2", "1") # <<< this won't work with EdgeView for G
G.add_edge("1", "3")
H.add_edge("1", "2")
H.add_edge("2", "1") # <<< OutEdgeView returns this for H
H.add_edge("1", "3")
self.assertEqual(dict(G.edges), dict(H.edges))
self.assertEqual(dict(G.edges()), dict(H.edges()))
self.assertEqual(list(G.edges["1", "2"]), list(H.edges["1", "2"]))
The result is
def test_nx_edges(self):
G = Graph(directed=True).nx
H = nx.DiGraph()
# H = nx.Graph()
G.add_edge("1", "2")
G.add_edge("2", "1")
G.add_edge("1", "3")
H.add_edge("1", "2")
H.add_edge("2", "1")
H.add_edge("1", "3")
> self.assertEqual(dict(G.edges), dict(H.edges))
E AssertionError: {('1', '2'): {}, ('1', '3'): {}} != {('1', '2'): {}, ('1', '3'): {}, ('2', '1'): {}}
E - {('1', '2'): {}, ('1', '3'): {}}
E + {('1', '2'): {}, ('1', '3'): {}, ('2', '1'): {}}
E ? ++++++++++++++++
Metadata
Assignees
Labels
No labels
Activity