Older versions of graphviz (tested on version 2.26.3 (20100126.1600))
complains when an attribute is empty without quotes. [label=] fails but
[label=""] works, so the quote_if_necessary function has been updated to
accommodate this.
-Fixed issue 55 regarding unicode handling.
-Fixed issue 50 where an ending colon in a node name was understood as a port separator. Colons as the last character of node names will be left as-is.
-Issue 59 (and duplicate issue 62): Program arguments are mishandled in Dot.create - Patch merged.
-Fixed issue 49, handling of quotes in unicode html-labels.
-Fixed issue 60. Added an additional check in __get_attribute__ to not assume the parent graph is always retrievable.
-Fixed issue 61. Graph names will be adequately quoted when necessary.
git-svn-id: http://pydot.googlecode.com/svn/trunk@27 06aa9b79-7134-0410-ae7e-c1cd3e483e87
-Added information in create()'s docstring about optional command-line arguments and how to provide them
git-svn-id: http://pydot.googlecode.com/svn/trunk@25 06aa9b79-7134-0410-ae7e-c1cd3e483e87
-If arguments need to be specified for 'dot', 'neato' and rest of graph layout engines they can now be passed to the create() and create_*() family of functions. If a string is passed it's expected to be simply the name of the program. If a list is passed it's assumed to contain strings, the name of the layout engine as the first element, followed by any optional arguments that will be later appended to the command line.
git-svn-id: http://pydot.googlecode.com/svn/trunk@24 06aa9b79-7134-0410-ae7e-c1cd3e483e87
- The "id_re_with_port" regex was too lax, and let through many illegal strings just because they contained colons. Fix it to require that both the ID and port component be independently safe.
- Even when the code detected that a string needed quoting, ", \n, and \r were left alone inside the double quotes, which is illegal. Replace them with appropriately escaped versions.
We also add a test that pydot is correctly able to quote Python's "string.printable" string, which exercises both of the above cases.
git-svn-id: http://pydot.googlecode.com/svn/trunk@18 06aa9b79-7134-0410-ae7e-c1cd3e483e87
-Improved the parsing of attributes with no explicit value but implicit defaults
-Improved handling of subgraphs
-Improved handling of whitespace within HTML node names/labels
pydot.py:
-Updated Graph, Cluster, Subgraph, Node and Edge attributes to reflect the latest GraphViz version (2.26.3)
-Improved the parsing of attributes with no explicit value but implicit defaults
-Improved handling of boolean attributes
-Fixed issue 17, 12
-Fixed issues 19, 29, 35, 37 finding the Graphviz binary in Windows
-Added method del_node() to delete Nodes from the graph
-Added method del_edges() to delete Edges from the graph
-get_node() will now always return a list of nodes
-get_edge() will now always return a list of edges
-get_subgraph() will now always return a list of edges
-Other minor improvements
git-svn-id: http://pydot.googlecode.com/svn/trunk@10 06aa9b79-7134-0410-ae7e-c1cd3e483e87
-The parser has been improved a lot. It passes all of GraphViz's regression tests (which I consider quite an accomplishment seeing the kind of crazy constructs on those )
-Different charsets should now be dealt with properly.
-The search of GraphViz's executables has been improved for all platforms. On Windows, paths and registry keys are searched. On Unix now it should exhibit the same behavior as the traditional shell path search. (Thanks Andy Gimblett and many others)
-Double-quoted paths in Windows are nor properly handled. The os.path.exists() check fails if a valid path is enclosed within quotes.
-'type' keyword has been changed everywhere to 'graph_type'
-Better handling of Node/Edge/Graph defaults. Added methods: set_graph_defaults, set_node_defaults, set_edge_defaults, get_graph_defaults, get_node_defaults, get_edge_defaults
-Now it's possible to use rank to lay out nodes at the same level
graph = pydot.Dot('graphname', graph_type='digraph')
subg = pydot.Subgraph('', rank='same')
subg.add_node(pydot.Node('a'))
graph.add_subgraph(subg)
subg.add_node(pydot.Node('b'))
subg.add_node(pydot.Node('c'))
-Multiple main graphs in a file are now supported, will be returned as a list of graph instances
-Handling of shapefiles Dot().set_shape_files()
-Added method "add_style()" to the Node class to easily append styles to a node
-Attribute lists updated to reflect the available ones in graphviz 2.16
-Added error reporting when rendering graphs with GraphViz executables. There was an often reported problem where the output graphs would have 0 size. In most cases this was due to Graphviz missing a library for a format that pydot assumed to be there. Now the error given by the executable will be reported instead of being silently ignored (Thanks Jarno)
-Improved parsing of identifiers
-Added non-GraphViz attributes needed by dot2tex
-Jose Fonseca contributed a fix dealing with quoted strings the the dot parsing module
-setup.py updated so that it's possible to install pydot through Setuptools' easy_install
-Edge()'s can be created passing two Node objects as well as, the previously supported, two strings with node names. Warning: when passing two Node instances, the attributes won't be taken into account. The edge will only read the Nodes' names to create an edge, the Nodes must be separately added to the graph so all their attributes are "remembered".
-Substituted all str()'s for unicode()'s
-It's possible now to manually specify the path to GraphViz's executables in the case they can't be found automatically. The method 'set_graphviz_executables(paths)' will take a dictionary specifying the location of the executables. Please refer to the documentation for usage detailed information.
-And too many bugfixes to list...
git-svn-id: http://pydot.googlecode.com/svn/trunk@8 06aa9b79-7134-0410-ae7e-c1cd3e483e87