Skip to content

Commit d0c3409

Browse files
authored
Merge pull request #4 from yeger00/support-graph-labels
Support graph labels
2 parents 925ee3e + 36303f1 commit d0c3409

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

graphdiff/graphdiff.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,26 +95,45 @@ def generate_diff_graph(first_graph, second_graph):
9595
graph.nodes.add(node)
9696

9797
for removed_edge in removed_edges:
98-
graph.edges.add(Edge(removed_edge.src, removed_edge.dest, "-del"))
98+
graph.edges.add(Edge(removed_edge.src, removed_edge.dest, "-" + removed_edge.label))
9999
for added_edge in added_edges:
100-
graph.edges.add(Edge(added_edge.src, added_edge.dest, "+add"))
100+
graph.edges.add(Edge(added_edge.src, added_edge.dest, "+" + added_edge.label))
101101
for edge in edges:
102102
graph.edges.add(edge)
103103

104104
return graph
105105

106106

107+
def remove_quotes(pydot_graph):
108+
""" For some reason, some pydot graph data is with quotes ('"name"', '"label"').
109+
This function removes it."""
110+
111+
for node in pydot_graph.get_nodes():
112+
node.set_label(node.get_label().replace('"', ''))
113+
114+
for edge in pydot_graph.get_edges():
115+
edge.set_label(edge.get_label().replace('"', ''))
116+
107117
def from_dot(pydot_graph):
108118
"""Generated a graph from pydot graph."""
119+
remove_quotes(pydot_graph)
109120
graph = Graph()
110121

111122
for node in pydot_graph.get_nodes():
112-
graph.nodes.add(node.get_name())
123+
graph.nodes.add(node.get_label())
113124

114125
for edge in pydot_graph.get_edges():
115-
graph.edges.add(Edge(edge.get_source(), edge.get_destination()))
116-
graph.nodes.add(edge.get_source())
117-
graph.nodes.add(edge.get_destination())
126+
source_label = edge.get_source()
127+
source_nodes = pydot_graph.get_node(source_label)
128+
if source_nodes:
129+
source_label = source_nodes[0].get_label()
130+
dest_label = edge.get_destination()
131+
dest_nodes = pydot_graph.get_node(dest_label)
132+
if dest_nodes:
133+
dest_label = dest_nodes[0].get_label()
134+
graph.edges.add(Edge(source_label, dest_label, edge.get_label()))
135+
graph.nodes.add(source_label)
136+
graph.nodes.add(dest_label)
118137
return graph
119138

120139

0 commit comments

Comments
 (0)