Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Unified Diff: tools/telemetry/third_party/altgraph/altgraph/Dot.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/third_party/altgraph/altgraph/Dot.py
diff --git a/tools/telemetry/third_party/altgraph/altgraph/Dot.py b/tools/telemetry/third_party/altgraph/altgraph/Dot.py
deleted file mode 100644
index 49a471e4daba145a650dd02f76591ab5c3366ec7..0000000000000000000000000000000000000000
--- a/tools/telemetry/third_party/altgraph/altgraph/Dot.py
+++ /dev/null
@@ -1,299 +0,0 @@
-'''
-altgraph.Dot - Interface to the dot language
-============================================
-
-The :py:mod:`~altgraph.Dot` module provides a simple interface to the
-file format used in the `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_
-program. The module is intended to offload the most tedious part of the process
-(the **dot** file generation) while transparently exposing most of its features.
-
-To display the graphs or to generate image files the `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_
-package needs to be installed on the system, moreover the :command:`dot` and :command:`dotty` programs must
-be accesible in the program path so that they can be ran from processes spawned
-within the module.
-
-Example usage
--------------
-
-Here is a typical usage::
-
- from altgraph import Graph, Dot
-
- # create a graph
- edges = [ (1,2), (1,3), (3,4), (3,5), (4,5), (5,4) ]
- graph = Graph.Graph(edges)
-
- # create a dot representation of the graph
- dot = Dot.Dot(graph)
-
- # display the graph
- dot.display()
-
- # save the dot representation into the mydot.dot file
- dot.save_dot(file_name='mydot.dot')
-
- # save dot file as gif image into the graph.gif file
- dot.save_img(file_name='graph', file_type='gif')
-
-Directed graph and non-directed graph
--------------------------------------
-
-Dot class can use for both directed graph and non-directed graph
-by passing ``graphtype`` parameter.
-
-Example::
-
- # create directed graph(default)
- dot = Dot.Dot(graph, graphtype="digraph")
-
- # create non-directed graph
- dot = Dot.Dot(graph, graphtype="graph")
-
-Customizing the output
-----------------------
-
-The graph drawing process may be customized by passing
-valid :command:`dot` parameters for the nodes and edges. For a list of all
-parameters see the `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_
-documentation.
-
-Example::
-
- # customizing the way the overall graph is drawn
- dot.style(size='10,10', rankdir='RL', page='5, 5' , ranksep=0.75)
-
- # customizing node drawing
- dot.node_style(1, label='BASE_NODE',shape='box', color='blue' )
- dot.node_style(2, style='filled', fillcolor='red')
-
- # customizing edge drawing
- dot.edge_style(1, 2, style='dotted')
- dot.edge_style(3, 5, arrowhead='dot', label='binds', labelangle='90')
- dot.edge_style(4, 5, arrowsize=2, style='bold')
-
-
-.. note::
-
- dotty (invoked via :py:func:`~altgraph.Dot.display`) may not be able to
- display all graphics styles. To verify the output save it to an image file
- and look at it that way.
-
-Valid attributes
-----------------
-
- - dot styles, passed via the :py:meth:`Dot.style` method::
-
- rankdir = 'LR' (draws the graph horizontally, left to right)
- ranksep = number (rank separation in inches)
-
- - node attributes, passed via the :py:meth:`Dot.node_style` method::
-
- style = 'filled' | 'invisible' | 'diagonals' | 'rounded'
- shape = 'box' | 'ellipse' | 'circle' | 'point' | 'triangle'
-
- - edge attributes, passed via the :py:meth:`Dot.edge_style` method::
-
- style = 'dashed' | 'dotted' | 'solid' | 'invis' | 'bold'
- arrowhead = 'box' | 'crow' | 'diamond' | 'dot' | 'inv' | 'none' | 'tee' | 'vee'
- weight = number (the larger the number the closer the nodes will be)
-
- - valid `graphviz colors <http://www.research.att.com/~erg/graphviz/info/colors.html>`_
-
- - for more details on how to control the graph drawing process see the
- `graphviz reference <http://www.research.att.com/sw/tools/graphviz/refs.html>`_.
-'''
-import os
-import warnings
-
-from altgraph import GraphError
-
-
-class Dot(object):
- '''
- A class providing a **graphviz** (dot language) representation
- allowing a fine grained control over how the graph is being
- displayed.
-
- If the :command:`dot` and :command:`dotty` programs are not in the current system path
- their location needs to be specified in the contructor.
- '''
-
- def __init__(self, graph=None, nodes=None, edgefn=None, nodevisitor=None, edgevisitor=None, name="G", dot='dot', dotty='dotty', neato='neato', graphtype="digraph"):
- '''
- Initialization.
- '''
- self.name, self.attr = name, {}
-
- assert graphtype in ['graph', 'digraph']
- self.type = graphtype
-
- self.temp_dot = "tmp_dot.dot"
- self.temp_neo = "tmp_neo.dot"
-
- self.dot, self.dotty, self.neato = dot, dotty, neato
-
- # self.nodes: node styles
- # self.edges: edge styles
- self.nodes, self.edges = {}, {}
-
- if graph is not None and nodes is None:
- nodes = graph
- if graph is not None and edgefn is None:
- def edgefn(node, graph=graph):
- return graph.out_nbrs(node)
- if nodes is None:
- nodes = ()
-
- seen = set()
- for node in nodes:
- if nodevisitor is None:
- style = {}
- else:
- style = nodevisitor(node)
- if style is not None:
- self.nodes[node] = {}
- self.node_style(node, **style)
- seen.add(node)
- if edgefn is not None:
- for head in seen:
- for tail in (n for n in edgefn(head) if n in seen):
- if edgevisitor is None:
- edgestyle = {}
- else:
- edgestyle = edgevisitor(head, tail)
- if edgestyle is not None:
- if head not in self.edges:
- self.edges[head] = {}
- self.edges[head][tail] = {}
- self.edge_style(head, tail, **edgestyle)
-
- def style(self, **attr):
- '''
- Changes the overall style
- '''
- self.attr = attr
-
- def display(self, mode='dot'):
- '''
- Displays the current graph via dotty
- '''
-
- if mode == 'neato':
- self.save_dot(self.temp_neo)
- neato_cmd = "%s -o %s %s" % (self.neato, self.temp_dot, self.temp_neo)
- os.system(neato_cmd)
- else:
- self.save_dot(self.temp_dot)
-
- plot_cmd = "%s %s" % (self.dotty, self.temp_dot)
- os.system(plot_cmd)
-
- def node_style(self, node, **kwargs):
- '''
- Modifies a node style to the dot representation.
- '''
- if node not in self.edges:
- self.edges[node] = {}
- self.nodes[node] = kwargs
-
- def all_node_style(self, **kwargs):
- '''
- Modifies all node styles
- '''
- for node in self.nodes:
- self.node_style(node, **kwargs)
-
- def edge_style(self, head, tail, **kwargs):
- '''
- Modifies an edge style to the dot representation.
- '''
- if tail not in self.nodes:
- raise GraphError("invalid node %s" % (tail,))
-
- try:
- if tail not in self.edges[head]:
- self.edges[head][tail]= {}
- self.edges[head][tail] = kwargs
- except KeyError:
- raise GraphError("invalid edge %s -> %s " % (head, tail) )
-
- def iterdot(self):
- # write graph title
- if self.type == 'digraph':
- yield 'digraph %s {\n' % (self.name,)
- elif self.type == 'graph':
- yield 'graph %s {\n' % (self.name,)
-
- else:
- raise GraphError("unsupported graphtype %s" % (self.type,))
-
- # write overall graph attributes
- for attr_name, attr_value in sorted(self.attr.items()):
- yield '%s="%s";' % (attr_name, attr_value)
- yield '\n'
-
- # some reusable patterns
- cpatt = '%s="%s",' # to separate attributes
- epatt = '];\n' # to end attributes
-
- # write node attributes
- for node_name, node_attr in sorted(self.nodes.items()):
- yield '\t"%s" [' % (node_name,)
- for attr_name, attr_value in sorted(node_attr.items()):
- yield cpatt % (attr_name, attr_value)
- yield epatt
-
- # write edge attributes
- for head in sorted(self.edges):
- for tail in sorted(self.edges[head]):
- if self.type == 'digraph':
- yield '\t"%s" -> "%s" [' % (head, tail)
- else:
- yield '\t"%s" -- "%s" [' % (head, tail)
- for attr_name, attr_value in sorted(self.edges[head][tail].items()):
- yield cpatt % (attr_name, attr_value)
- yield epatt
-
- # finish file
- yield '}\n'
-
- def __iter__(self):
- return self.iterdot()
-
- def save_dot(self, file_name=None):
- '''
- Saves the current graph representation into a file
- '''
-
- if not file_name:
- warnings.warn(DeprecationWarning, "always pass a file_name")
- file_name = self.temp_dot
-
- fp = open(file_name, "w")
- try:
- for chunk in self.iterdot():
- fp.write(chunk)
- finally:
- fp.close()
-
- def save_img(self, file_name=None, file_type="gif", mode='dot'):
- '''
- Saves the dot file as an image file
- '''
-
- if not file_name:
- warnings.warn(DeprecationWarning, "always pass a file_name")
- file_name = "out"
-
- if mode == 'neato':
- self.save_dot(self.temp_neo)
- neato_cmd = "%s -o %s %s" % (self.neato, self.temp_dot, self.temp_neo)
- os.system(neato_cmd)
- plot_cmd = self.dot
- else:
- self.save_dot(self.temp_dot)
- plot_cmd = self.dot
-
- file_name = "%s.%s" % (file_name, file_type)
- create_cmd = "%s -T%s %s -o %s" % (plot_cmd, file_type, self.temp_dot, file_name)
- os.system(create_cmd)

Powered by Google App Engine
This is Rietveld 408576698