##// END OF EJS Templates
coalesce stream output in the notebook...
coalesce stream output in the notebook This merges consecutive outputs on one stream into a single output. Essentially, it applies the same merging that we do visually to the content stored in the notebook document. This results in a massive performance improvement in load-time and storage size for notebooks that have many calls to `sys.stdout.flush()`.

File last commit:

r15613:1b3e35d2
r17305:bd91397c
Show More
callbacks.rst
42 lines | 1.4 KiB | text/x-rst | RstLexer
Thomas Kluyver
Document new callbacks system
r15604 =====================
Registering callbacks
=====================
Extension code can register callbacks functions which will be called on specific
events within the IPython code. You can see the current list of available
callbacks, and the parameters that will be passed with each, in the callback
prototype functions defined in :mod:`IPython.core.callbacks`.
Thomas Kluyver
callbacks -> events in docs
r15613 To register callbacks, use :meth:`IPython.core.events.EventManager.register`.
Thomas Kluyver
Document new callbacks system
r15604 For example::
class VarWatcher(object):
def __init__(self, ip):
self.shell = ip
self.last_x = None
def pre_execute(self):
self.last_x = self.shell.user_ns.get('x', None)
def post_execute(self):
if self.shell.user_ns.get('x', None) != self.last_x:
print("x changed!")
def load_ipython_extension(ip):
vw = VarWatcher(ip)
Thomas Kluyver
callbacks -> events in docs
r15613 ip.events.register('pre_execute', vw.pre_execute)
ip.events.register('post_execute', vw.post_execute)
Thomas Kluyver
Document new callbacks system
r15604
Thomas Kluyver
Add note about experimental API
r15606 .. note::
This API is experimental in IPython 2.0, and may be revised in future versions.
Thomas Kluyver
Document new callbacks system
r15604 .. seealso::
Module :mod:`IPython.core.hooks`
The older 'hooks' system allows end users to customise some parts of
IPython's behaviour.
:doc:`inputtransforms`
By registering input transformers that don't change code, you can monitor
what is being executed.