##// END OF EJS Templates
release 5.8.0
release 5.8.0

File last commit:

r21899:c3f3e5fa
r24439:033ab93c
Show More
callbacks.rst
87 lines | 2.7 KiB | text/x-rst | RstLexer
Min RK
document existing events
r21899 .. _events:
.. _callbacks:
==============
IPython Events
==============
Thomas Kluyver
Document new callbacks system
r15604
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
Min RK
document existing events
r21899 Events
======
These are the events IPython will emit. Callbacks will be passed no arguments, unless otherwise specified.
shell_initialized
-----------------
.. code-block:: python
def shell_initialized(ipython):
...
This event is triggered only once, at the end of setting up IPython.
Extensions registered to load by default as part of configuration can use this to execute code to finalize setup.
Callbacks will be passed the InteractiveShell instance.
pre_run_cell
------------
``pre_run_cell`` fires prior to interactive execution (e.g. a cell in a notebook).
It can be used to note the state prior to execution, and keep track of changes.
pre_execute
-----------
``pre_execute`` is like ``pre_run_cell``, but is triggered prior to *any* execution.
Sometimes code can be executed by libraries, etc. which
skipping the history/display mechanisms, in which cases ``pre_run_cell`` will not fire.
post_run_cell
-------------
``post_run_cell`` runs after interactive execution (e.g. a cell in a notebook).
It can be used to cleanup or notify or perform operations on any side effects produced during execution.
For instance, the inline matplotlib backend uses this event to display any figures created but not explicitly displayed during the course of the cell.
post_execute
------------
The same as ``pre_execute``, ``post_execute`` is like ``post_run_cell``,
but fires for *all* executions, not just interactive ones.
Thomas Kluyver
Add note about experimental API
r15606
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.