##// END OF EJS Templates
Complete implementation of interactive traceback support....
Complete implementation of interactive traceback support. Ever since IPython started, we've had no proper tracebacks for interactively entered code. The terminal version was fairly uncomfortable for more than just a few lines of code, so this was never too big of a deal. But the new architecture allows clients with complex multiline input, and having proper tracebacks becomes now critical for real-world use. Thanks to Robert Kern for key implementation ideas and original patch. Closes gh-177.

File last commit:

r3124:4e2d3af2
r3175:c94126c2
Show More
macro.py
39 lines | 1.3 KiB | text/x-python | PythonLexer
"""Support for interactive macros in IPython"""
#*****************************************************************************
# Copyright (C) 2001-2005 Fernando Perez <fperez@colorado.edu>
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import IPython.utils.io
from IPython.core.autocall import IPyAutocall
class Macro(IPyAutocall):
"""Simple class to store the value of macros as strings.
Macro is just a callable that executes a string of IPython
input when called.
Args to macro are available in _margv list if you need them.
"""
def __init__(self,data):
"""store the macro value, as a single string which can be executed"""
self.value = ''.join(data).rstrip()+'\n'
def __str__(self):
return self.value
def __repr__(self):
return 'IPython.macro.Macro(%s)' % repr(self.value)
def __call__(self,*args):
IPython.utils.io.Term.cout.flush()
self._ip.user_ns['_margv'] = args
self._ip.run_cell(self.value)
def __getstate__(self):
""" needed for safe pickling via %store """
return {'value': self.value}