Skip to content
This repository has been archived by the owner on Nov 19, 2018. It is now read-only.

[92] Simplify throws NameError, and, as implemented, doesn't work #29

Open
prmtl opened this issue Mar 8, 2015 · 1 comment
Open

[92] Simplify throws NameError, and, as implemented, doesn't work #29

prmtl opened this issue Mar 8, 2015 · 1 comment

Comments

@prmtl
Copy link
Contributor

prmtl commented Mar 8, 2015

Reported by [email protected], 2014-06-12T04:30:48Z

What steps will reproduce the problem?
  1. invoke set_simplify(true) on a graph
  2. invoke method to_string()
  3. 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

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant