diff options
author | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2013-12-20 13:57:31 +0100 |
---|---|---|
committer | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2013-12-20 13:57:31 +0100 |
commit | 49bb07201f929b462ebeecfc6e030ebd19865028 (patch) | |
tree | c1f2773eb6e630169768d4b41da2b3af3ab5b85e | |
parent | ff27dd0199e3c7dbcfac5de505223bebb9934a05 (diff) | |
download | logilab-common-49bb07201f929b462ebeecfc6e030ebd19865028.tar.gz |
[graph] sort dot node/edge attribute for predictabilities. Closes #202314
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | graph.py | 4 |
2 files changed, 11 insertions, 7 deletions
@@ -1,16 +1,20 @@ ChangeLog for logilab.common ============================ +-- + * graph: ensure output is orderd on node and graph ids (#202314) + + 2013-16-12 -- 0.60.1 * modutils: - * don't propagate IOError when package's __init__.py file doesn't - exist (#174606) + * don't propagate IOError when package's __init__.py file doesn't + exist (#174606) - * ensure file is closed, may cause pb depending on the interpreter, eg + * ensure file is closed, may cause pb depending on the interpreter, eg pypy) (#180876) - - * fix support for `extend_path` based nested namespace packages ; + + * fix support for `extend_path` based nested namespace packages ; Report and patch by John Johnson (#177651) * fix some cases of failing python3 install on windows platform / cross @@ -134,14 +134,14 @@ class DotBackend: """ attrs = ['%s="%s"' % (prop, value) for prop, value in props.items()] n_from, n_to = normalize_node_id(name1), normalize_node_id(name2) - self.emit('%s -> %s [%s];' % (n_from, n_to, ", ".join(attrs)) ) + self.emit('%s -> %s [%s];' % (n_from, n_to, ', '.join(sorted(attrs))) ) def emit_node(self, name, **props): """emit a node with given properties. node properties: see http://www.graphviz.org/doc/info/attrs.html """ attrs = ['%s="%s"' % (prop, value) for prop, value in props.items()] - self.emit('%s [%s];' % (normalize_node_id(name), ", ".join(attrs))) + self.emit('%s [%s];' % (normalize_node_id(name), ', '.join(sorted(attrs)))) def normalize_node_id(nid): """Returns a suitable DOT node id for `nid`.""" |