sync_traceback_trap.py
53 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
Gael Varoquaux
|
r1439 | # encoding: utf-8 | ||
"""Object to manage sys.excepthook(). | ||||
Synchronous version: prints errors when called. | ||||
""" | ||||
__docformat__ = "restructuredtext en" | ||||
#------------------------------------------------------------------------------- | ||||
# Copyright (C) 2008 The IPython Development Team | ||||
# | ||||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
#------------------------------------------------------------------------------- | ||||
#------------------------------------------------------------------------------- | ||||
# Imports | ||||
#------------------------------------------------------------------------------- | ||||
from traceback_trap import TracebackTrap | ||||
Brian Granger
|
r2058 | from IPython.core.ultratb import ColorTB | ||
Gael Varoquaux
|
r1439 | |||
class SyncTracebackTrap(TracebackTrap): | ||||
gvaroquaux
|
r1459 | """ TracebackTrap that displays immediatly the traceback in addition | ||
to capturing it. Useful in frontends, as without this traceback trap, | ||||
some tracebacks never get displayed. | ||||
""" | ||||
Gael Varoquaux
|
r1439 | |||
gvaroquaux
|
r1455 | def __init__(self, sync_formatter=None, formatters=None, | ||
raiseException=True): | ||||
gvaroquaux
|
r1459 | """ | ||
sync_formatter: Callable to display the traceback. | ||||
formatters: A list of formatters to apply. | ||||
""" | ||||
Gael Varoquaux
|
r1439 | TracebackTrap.__init__(self, formatters=formatters) | ||
if sync_formatter is None: | ||||
sync_formatter = ColorTB(color_scheme='LightBG') | ||||
self.sync_formatter = sync_formatter | ||||
gvaroquaux
|
r1455 | self.raiseException = raiseException | ||
Gael Varoquaux
|
r1439 | |||
def hook(self, *args): | ||||
""" This method actually implements the hook. | ||||
""" | ||||
self.args = args | ||||
gvaroquaux
|
r1455 | if not self.raiseException: | ||
print self.sync_formatter(*self.args) | ||||
else: | ||||
raise | ||||
Gael Varoquaux
|
r1439 | |||