Skip to content
Snippets Groups Projects
Commit 627ad747 authored by Martin Bauer's avatar Martin Bauer
Browse files

Removed unused code in dot printing

parent 8c744109
No related merge requests found
......@@ -8,10 +8,9 @@ class DotPrinter(Printer):
"""
A printer which converts ast to DOT (graph description language).
"""
def __init__(self, node_to_str_function, full, **kwargs):
def __init__(self, node_to_str_function, **kwargs):
super(DotPrinter, self).__init__()
self._node_to_str_function = node_to_str_function
self.full = full
self.dot = Digraph(**kwargs)
self.dot.quote_edge = lang.quote
......@@ -36,11 +35,6 @@ class DotPrinter(Printer):
def _print_SympyAssignment(self, assignment):
self.dot.node(str(id(assignment)), style='filled', fillcolor='#56db7f',
label=self._node_to_str_function(assignment))
if self.full:
for node in assignment.args:
self._print(node)
for node in assignment.args:
self.dot.edge(str(id(assignment)), str(id(node)))
def _print_Conditional(self, expr):
self.dot.node(str(id(expr)), style='filled', fillcolor='#56bd7f', label=self._node_to_str_function(expr))
......@@ -50,16 +44,6 @@ class DotPrinter(Printer):
self._print(expr.false_block)
self.dot.edge(str(id(expr)), str(id(expr.false_block)))
def empty_printer(self, expr):
if self.full:
self.dot.node(str(id(expr)), label=self._node_to_str_function(expr))
for node in expr.args:
self._print(node)
for node in expr.args:
self.dot.edge(str(id(expr)), str(id(node)))
else:
raise NotImplementedError('DotPrinter cannot print', type(expr), expr)
def doprint(self, expr):
self._print(expr)
return self.dot.source
......@@ -83,23 +67,19 @@ def __shortened(node):
raise NotImplementedError("Cannot handle node type %s" % (type(node),))
def print_dot(node, view=False, short=False, full=False, **kwargs):
def print_dot(node, view=False, short=False, **kwargs):
"""
Returns a string which can be used to generate a DOT-graph
:param node: The ast which should be generated
:param view: Boolean, if rendering of the image directly should occur.
:param short: Uses the __shortened output
:param full: Prints the whole tree with type information
:param kwargs: is directly passed to the DotPrinter class: http://graphviz.readthedocs.io/en/latest/api.html#digraph
:return: string in DOT format
"""
node_to_str_function = repr
if short:
node_to_str_function = __shortened
elif full:
def node_to_str_function(expr):
return repr(type(expr)) + repr(expr)
printer = DotPrinter(node_to_str_function, full, **kwargs)
printer = DotPrinter(node_to_str_function, **kwargs)
dot = printer.doprint(node)
if view:
return graphviz.Source(dot)
......
......@@ -3,7 +3,7 @@ from typing import Any, Dict, Optional
from pystencils.astnodes import KernelFunction
def to_dot(expr: sp.Expr, graph_style: Optional[Dict[str, Any]] = None):
def to_dot(expr: sp.Expr, graph_style: Optional[Dict[str, Any]] = None, short=True):
"""Show a sympy or pystencils AST as dot graph"""
from pystencils.astnodes import Node
import graphviz
......@@ -11,7 +11,7 @@ def to_dot(expr: sp.Expr, graph_style: Optional[Dict[str, Any]] = None):
if isinstance(expr, Node):
from pystencils.backends.dot import print_dot
return graphviz.Source(print_dot(expr, short=True, graph_attr=graph_style))
return graphviz.Source(print_dot(expr, short=short, graph_attr=graph_style))
else:
from sympy.printing.dot import dotprint
return graphviz.Source(dotprint(expr, graph_attr=graph_style))
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment