pydot-ng
pydot-ng copied to clipboard
[92] Simplify throws NameError, and, as implemented, doesn't work
Reported by [email protected], 2014-06-12T04:30:48Z
What steps will reproduce the problem?
- invoke set_simplify(true) on a graph
- invoke method to_string()
- profit
What is the expected output? What do you see instead?
Extraneous edges removed from dot output
What version of the product are you using? On what operating system?
1.0.2
Please provide any additional information below.
This is a patch which both resolves the NameError and enables the desired behavior:
--- /usr/lib/python2.6/site-packages/pydot.py 2014-06-12 06:22:57.000000000 +0400
+++ virtenv/lib/python2.6/site-packages/pydot.py 2014-06-12 06:28:42.515864719 +0400
@@ -1455,11 +1455,11 @@
edge = Edge(obj_dict=obj)
- if self.obj_dict.get('simplify', False) and elm in edges_done:
+ if self.obj_dict.get('simplify', False) and edge.obj_dict['points'] in edges_done:
continue
-
+
graph.append( edge.to_string() + '\n' )
- edges_done.add(edge)
+ edges_done.add(edge.obj_dict['points'])
else:
Attached pydot_simplify.patch
(view on Gist)
From: https://code.google.com/p/pydot/issues/detail?id=92
Comment by [email protected], 2014-06-11T20:00:14Z
Or if you prefer to retain encapsulation:
--- /usr/lib/python2.6/site-packages/pydot.py 2014-06-12 06:22:57.000000000 +0400
+++ virtenv/lib/python2.6/site-packages/pydot.py 2014-06-12 06:58:20.478835432 +0400
@@ -834,6 +834,11 @@
return False
+ def __hash__(self):
+ if self.get_parent_graph().get_top_graph_type() == 'graph':
+ return hash(min(self.get_source(), self.get_destination())
+ + max(self.get_source(), self.get_destination()))
+ return hash(self.get_source() + self.get_destination())
def parse_node_ref(self, node_str):
@@ -1455,7 +1460,7 @@
edge = Edge(obj_dict=obj)
- if self.obj_dict.get('simplify', False) and elm in edges_done:
+ if self.obj_dict.get('simplify', False) and edge in edges_done:
continue
graph.append( edge.to_string() + '\n' )
Attached pydot_simplify_encpsulated.patch
(view on Gist)