from __future__ import print_function import sys from contextlib import contextmanager from IPython.utils import io from .__main__ import set_trace from .__main__ import post_mortem def update_stdout(): # setup stdout to ensure output is available with nose io.stdout = sys.stdout = sys.__stdout__ def sset_trace(frame=None, context=3): update_stdout() if frame is None: frame = sys._getframe().f_back set_trace(frame, context) def spost_mortem(tb=None): update_stdout() post_mortem(tb) def spm(): spost_mortem(sys.last_traceback) @contextmanager def slaunch_ipdb_on_exception(): try: yield except Exception: e, m, tb = sys.exc_info() print(m.__repr__(), file=sys.stderr) spost_mortem(tb) finally: pass