提交 9898d9d9 authored 作者: Thomas Mesnard's avatar Thomas Mesnard

pep8 on printing.py

上级 0838ae4d
...@@ -97,7 +97,8 @@ def debugprint(obj, depth=-1, print_type=False, ...@@ -97,7 +97,8 @@ def debugprint(obj, depth=-1, print_type=False,
profile_list.extend([None for item in obj.outputs]) profile_list.extend([None for item in obj.outputs])
elif isinstance(obj, Function): elif isinstance(obj, Function):
results_to_print.extend(obj.maker.fgraph.outputs) results_to_print.extend(obj.maker.fgraph.outputs)
profile_list.extend([obj.profile for item in obj.maker.fgraph.outputs]) profile_list.extend(
[obj.profile for item in obj.maker.fgraph.outputs])
order = obj.maker.fgraph.toposort() order = obj.maker.fgraph.toposort()
elif isinstance(obj, gof.FunctionGraph): elif isinstance(obj, gof.FunctionGraph):
results_to_print.extend(obj.outputs) results_to_print.extend(obj.outputs)
...@@ -119,7 +120,7 @@ def debugprint(obj, depth=-1, print_type=False, ...@@ -119,7 +120,7 @@ def debugprint(obj, depth=-1, print_type=False,
isinstance(r.owner.op, theano.scan_module.scan_op.Scan)): isinstance(r.owner.op, theano.scan_module.scan_op.Scan)):
scan_ops.append(r) scan_ops.append(r)
if p != None: if p is not None:
print >> file, """ print >> file, """
Timing Info Timing Info
----------- -----------
...@@ -264,6 +265,7 @@ class PrinterState(gof.utils.scratchpad): ...@@ -264,6 +265,7 @@ class PrinterState(gof.utils.scratchpad):
props = {} props = {}
return PrinterState(self, **dict(props, **more_props)) return PrinterState(self, **dict(props, **more_props))
class OperatorPrinter: class OperatorPrinter:
def __init__(self, operator, precedence, assoc='left'): def __init__(self, operator, precedence, assoc='left'):
...@@ -279,13 +281,13 @@ class OperatorPrinter: ...@@ -279,13 +281,13 @@ class OperatorPrinter:
raise TypeError("operator %s cannot represent a variable that is " raise TypeError("operator %s cannot represent a variable that is "
"not the result of an operation" % self.operator) "not the result of an operation" % self.operator)
## Precedence seems to be buggy, see #249 # Precedence seems to be buggy, see #249
## So, in doubt, we parenthesize everything. # So, in doubt, we parenthesize everything.
#outer_precedence = getattr(pstate, 'precedence', -999999) # outer_precedence = getattr(pstate, 'precedence', -999999)
#outer_assoc = getattr(pstate, 'assoc', 'none') # outer_assoc = getattr(pstate, 'assoc', 'none')
#if outer_precedence > self.precedence: # if outer_precedence > self.precedence:
# parenthesize = True # parenthesize = True
#else: # else:
# parenthesize = False # parenthesize = False
parenthesize = True parenthesize = True
...@@ -368,7 +370,6 @@ class MemberPrinter: ...@@ -368,7 +370,6 @@ class MemberPrinter:
if node is None: if node is None:
raise TypeError("function %s cannot represent a variable that is" raise TypeError("function %s cannot represent a variable that is"
" not the result of an operation" % self.function) " not the result of an operation" % self.function)
names = self.names
idx = node.outputs.index(output) idx = node.outputs.index(output)
name = self.names[idx] name = self.names[idx]
input = node.inputs[0] input = node.inputs[0]
...@@ -475,8 +476,8 @@ class PPrinter: ...@@ -475,8 +476,8 @@ class PPrinter:
name = 'out[%i]' % outputs.index(output) name = 'out[%i]' % outputs.index(output)
else: else:
name = output.name name = output.name
#backport # backport
#name = 'out[%i]' % outputs.index(output) if output.name # name = 'out[%i]' % outputs.index(output) if output.name
# is None else output.name # is None else output.name
current = output current = output
try: try:
...@@ -639,7 +640,7 @@ def pydotprint(fct, outfile=None, ...@@ -639,7 +640,7 @@ def pydotprint(fct, outfile=None,
mode = fct.maker.mode mode = fct.maker.mode
profile = getattr(fct, "profile", None) profile = getattr(fct, "profile", None)
if (not isinstance(mode, ProfileMode) if (not isinstance(mode, ProfileMode)
or not fct in mode.profile_stats): or fct not in mode.profile_stats):
mode = None mode = None
outputs = fct.maker.fgraph.outputs outputs = fct.maker.fgraph.outputs
topo = fct.maker.fgraph.toposort() topo = fct.maker.fgraph.toposort()
...@@ -860,7 +861,8 @@ def pydotprint(fct, outfile=None, ...@@ -860,7 +861,8 @@ def pydotprint(fct, outfile=None,
g.add_edge(pd.Edge(varstr, astr, label=label, **param)) g.add_edge(pd.Edge(varstr, astr, label=label, **param))
else: else:
# no name, so we don't make a var ellipse # no name, so we don't make a var ellipse
g.add_edge(pd.Edge(apply_name(var.owner), astr, label=label, **param)) g.add_edge(pd.Edge(apply_name(var.owner), astr,
label=label, **param))
for id, var in enumerate(node.outputs): for id, var in enumerate(node.outputs):
varstr = var_name(var) varstr = var_name(var)
...@@ -1192,9 +1194,11 @@ def min_informative_str(obj, indent_level=0, ...@@ -1192,9 +1194,11 @@ def min_informative_str(obj, indent_level=0,
elif hasattr(obj, 'owner') and obj.owner is not None: elif hasattr(obj, 'owner') and obj.owner is not None:
name = str(obj.owner.op) name = str(obj.owner.op)
for ipt in obj.owner.inputs: for ipt in obj.owner.inputs:
name += '\n' + min_informative_str(ipt, name += '\n'
name += min_informative_str(ipt,
indent_level=indent_level + 1, indent_level=indent_level + 1,
_prev_obs=_prev_obs, _tag_generator=_tag_generator) _prev_obs=_prev_obs,
_tag_generator=_tag_generator)
else: else:
name = str(obj) name = str(obj)
...@@ -1217,7 +1221,8 @@ def var_descriptor(obj, _prev_obs=None, _tag_generator=None): ...@@ -1217,7 +1221,8 @@ def var_descriptor(obj, _prev_obs=None, _tag_generator=None):
try: try:
import hashlib import hashlib
except ImportError: except ImportError:
raise RuntimeError("Can't run var_descriptor because hashlib is not available.") raise RuntimeError(
"Can't run var_descriptor because hashlib is not available.")
if _prev_obs is None: if _prev_obs is None:
_prev_obs = {} _prev_obs = {}
...@@ -1239,13 +1244,15 @@ def var_descriptor(obj, _prev_obs=None, _tag_generator=None): ...@@ -1239,13 +1244,15 @@ def var_descriptor(obj, _prev_obs=None, _tag_generator=None):
# it can have different semantics depending on the strides # it can have different semantics depending on the strides
# of the ndarray # of the ndarray
name = '<ndarray:' name = '<ndarray:'
name += 'strides=['+','.join(str(stride) for stride in obj.strides)+']' name += 'strides=[' + ','.join(str(stride)
name += ',digest='+hashlib.md5(obj).hexdigest()+'>' for stride in obj.strides) + ']'
name += ',digest=' + hashlib.md5(obj).hexdigest() + '>'
elif hasattr(obj, 'owner') and obj.owner is not None: elif hasattr(obj, 'owner') and obj.owner is not None:
name = str(obj.owner.op) + '(' name = str(obj.owner.op) + '('
name += ','.join(var_descriptor(ipt, name += ','.join(var_descriptor(ipt,
_prev_obs=_prev_obs, _tag_generator=_tag_generator) for ipt _prev_obs=_prev_obs,
in obj.owner.inputs) _tag_generator=_tag_generator)
for ipt in obj.owner.inputs)
name += ')' name += ')'
elif hasattr(obj, 'name') and obj.name is not None: elif hasattr(obj, 'name') and obj.name is not None:
# Only print the name if there is no owner. # Only print the name if there is no owner.
...@@ -1271,7 +1278,7 @@ def var_descriptor(obj, _prev_obs=None, _tag_generator=None): ...@@ -1271,7 +1278,7 @@ def var_descriptor(obj, _prev_obs=None, _tag_generator=None):
def position_independent_str(obj): def position_independent_str(obj):
if isinstance(obj, theano.gof.graph.Variable): if isinstance(obj, theano.gof.graph.Variable):
rval = 'theano_var' rval = 'theano_var'
rval += '{type='+str(obj.type)+'}' rval += '{type=' + str(obj.type) + '}'
else: else:
raise NotImplementedError() raise NotImplementedError()
...@@ -1288,13 +1295,15 @@ def hex_digest(x): ...@@ -1288,13 +1295,15 @@ def hex_digest(x):
try: try:
import hashlib import hashlib
except ImportError: except ImportError:
raise RuntimeError("Can't run hex_digest because hashlib is not available.") raise RuntimeError("Can't run hex_digest"
"because hashlib is not available.")
assert isinstance(x, np.ndarray) assert isinstance(x, np.ndarray)
rval = hashlib.md5(x.tostring()).hexdigest() rval = hashlib.md5(x.tostring).hexdigest()
# hex digest must be annotated with strides to avoid collisions # hex digest must be annotated with strides to avoid collisions
# because the buffer interface only exposes the raw data, not # because the buffer interface only exposes the raw data, not
# any info about the semantics of how that data should be arranged # any info about the semantics of how that data should be arranged
# into a tensor # into a tensor
rval = rval + '|strides=[' + ','.join(str(stride) for stride in x.strides) + ']' rval = rval + '|strides=[' + ','.join(str(stride)
for stride in x.strides) + ']'
rval = rval + '|shape=[' + ','.join(str(s) for s in x.shape) + ']' rval = rval + '|shape=[' + ','.join(str(s) for s in x.shape) + ']'
return rval return rval
...@@ -18,7 +18,6 @@ except ImportError: ...@@ -18,7 +18,6 @@ except ImportError:
whitelist_flake8 = [ whitelist_flake8 = [
"updates.py", "updates.py",
"printing.py",
"__init__.py", "__init__.py",
"configparser.py", "configparser.py",
"ifelse.py", "ifelse.py",
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论