提交 24dcee76 authored 作者: Frederic's avatar Frederic

Better error message

上级 8e17dcd6
...@@ -1634,13 +1634,14 @@ class NavigatorOptimizer(Optimizer): ...@@ -1634,13 +1634,14 @@ class NavigatorOptimizer(Optimizer):
""" """
@staticmethod @staticmethod
def warn(exc, nav, repl_pairs, local_opt): def warn(exc, nav, repl_pairs, local_opt, node):
""" """
Failure_callback for NavigatorOptimizer: print traceback. Failure_callback for NavigatorOptimizer: print traceback.
""" """
if config.on_opt_error != 'ignore': if config.on_opt_error != 'ignore':
_logger.error("Optimization failure due to: %s" % str(local_opt)) _logger.error("Optimization failure due to: %s" % str(local_opt))
_logger.error("node: %s" % str(node))
_logger.error("TRACEBACK:") _logger.error("TRACEBACK:")
_logger.error(traceback.format_exc()) _logger.error(traceback.format_exc())
if config.on_opt_error == 'pdb': if config.on_opt_error == 'pdb':
...@@ -1651,19 +1652,21 @@ class NavigatorOptimizer(Optimizer): ...@@ -1651,19 +1652,21 @@ class NavigatorOptimizer(Optimizer):
raise exc raise exc
@staticmethod @staticmethod
def warn_inplace(exc, nav, repl_pairs, local_opt): def warn_inplace(exc, nav, repl_pairs, local_opt, node):
""" """
Failure_callback for NavigatorOptimizer. Failure_callback for NavigatorOptimizer.
Ignore InconsistencyErrors, print traceback. Ignore InconsistencyErrors, print traceback.
If error during replacement repl_pairs is set. Otherwise None.
""" """
if isinstance(exc, InconsistencyError): if isinstance(exc, InconsistencyError):
return return
return NavigatorOptimizer.warn(exc, nav, repl_pairs, local_opt) return NavigatorOptimizer.warn(exc, nav, repl_pairs, local_opt, node)
@staticmethod @staticmethod
def warn_ignore(exc, nav, repl_pairs, local_opt): def warn_ignore(exc, nav, repl_pairs, local_opt, node):
""" """
Failure_callback for NavigatorOptimizer: ignore all errors. Failure_callback for NavigatorOptimizer: ignore all errors.
...@@ -1764,7 +1767,7 @@ class NavigatorOptimizer(Optimizer): ...@@ -1764,7 +1767,7 @@ class NavigatorOptimizer(Optimizer):
if self.failure_callback is not None: if self.failure_callback is not None:
self.failure_callback(e, self, self.failure_callback(e, self,
[(x, None) for x in node.outputs], [(x, None) for x in node.outputs],
lopt) lopt, node)
return False return False
else: else:
raise raise
...@@ -1802,7 +1805,7 @@ class NavigatorOptimizer(Optimizer): ...@@ -1802,7 +1805,7 @@ class NavigatorOptimizer(Optimizer):
# This is not supposed to happen. The default failure_callback # This is not supposed to happen. The default failure_callback
# will print a traceback as a warning. # will print a traceback as a warning.
if self.failure_callback is not None: if self.failure_callback is not None:
self.failure_callback(e, self, repl_pairs, lopt) self.failure_callback(e, self, repl_pairs, lopt, node)
return False return False
else: else:
raise raise
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论