##// END OF EJS Templates
More work on the crash handler....
More work on the crash handler. * Made a subclass of :class:`IPython.core.crashhandler.CrashHandler` for each application we have. Each of these has a custom message and uses the name and email of the appropriate personf for that app. * Removed the :meth:`IPython.core.application.abort` method. * Made small changes to how the crash handler is instantiated in :class:`IPython.core.application.Application`. * Tested the crash handlers.

File last commit:

r2058:7e8fc59a
r2506:737017de
Show More
sync_traceback_trap.py
53 lines | 1.7 KiB | text/x-python | PythonLexer
/ IPython / kernel / core / sync_traceback_trap.py
# 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
from IPython.core.ultratb import ColorTB
class SyncTracebackTrap(TracebackTrap):
""" TracebackTrap that displays immediatly the traceback in addition
to capturing it. Useful in frontends, as without this traceback trap,
some tracebacks never get displayed.
"""
def __init__(self, sync_formatter=None, formatters=None,
raiseException=True):
"""
sync_formatter: Callable to display the traceback.
formatters: A list of formatters to apply.
"""
TracebackTrap.__init__(self, formatters=formatters)
if sync_formatter is None:
sync_formatter = ColorTB(color_scheme='LightBG')
self.sync_formatter = sync_formatter
self.raiseException = raiseException
def hook(self, *args):
""" This method actually implements the hook.
"""
self.args = args
if not self.raiseException:
print self.sync_formatter(*self.args)
else:
raise