/usr/share/pyshared/sympy/printing/tree.py is in python-sympy 0.7.1.rc1-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | def pprint_nodes(subtrees):
"""
Prettyprints systems of nodes.
Example:
>> print pprint_nodes(["a", "b1\nb2", "c"])
+-a
+-b1
| b2
+-c
>>
"""
def indent(s,type=1):
x = s.split("\n")
r = "+-%s\n"%x[0]
for a in x[1:]:
if a=="": continue
if type==1:
r += "| %s\n"%a
else:
r += " %s\n"%a
return r
if len(subtrees)==0: return ""
f="";
for a in subtrees[:-1]:
f += indent(a)
f += indent(subtrees[-1],2)
return f
def print_node(node):
"""
Returns an information about the "node".
This includes class name, string representation and assumptions.
"""
s = "%s: %s\n" % (node.__class__.__name__, str(node))
if len(node._assumptions) > 0:
for a in node._assumptions:
s += "%s: %s\n" % (a, node._assumptions[a])
return s
def tree(node):
"""
Returns a tree representation of "node" as a string.
It uses print_node() together with pprint_nodes() on node.args recursively.
See also: print_tree()
"""
subtrees = []
for arg in node.args:
subtrees.append(tree(arg))
s = print_node(node)+pprint_nodes(subtrees)
return s
def print_tree(node):
"""
Prints a tree representation of "node".
>>> from sympy.printing import print_tree
>>> from sympy.abc import x
>>> print_tree(x**2) # doctest: +SKIP
Pow: x**2
+-Symbol: x
| comparable: False
+-Integer: 2
real: True
nonzero: True
comparable: True
commutative: True
infinitesimal: False
unbounded: False
noninteger: False
zero: False
complex: True
bounded: True
rational: True
integer: True
imaginary: False
finite: True
irrational: False
<BLANKLINE>
See also: tree()
"""
print tree(node)
|