Skip to content

Commit

Permalink
Add support for finally hooks
Browse files Browse the repository at this point in the history
  • Loading branch information
fniephaus committed Sep 12, 2017
1 parent 502cfdf commit 5f01438
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions IPython/core/interactiveshell.py
Original file line number Diff line number Diff line change
Expand Up @@ -2598,6 +2598,39 @@ def safe_run_module(self, mod_name, where):
warn('Unknown failure executing module: <%s>' % mod_name)

def run_cell(self, raw_cell, store_history=False, silent=False, shell_futures=True):
"""Run a complete IPython cell and trigger finally hooks.
Parameters
----------
raw_cell : str
The code (including IPython code such as %magic functions) to run.
store_history : bool
If True, the raw and translated cell will be stored in IPython's
history. For user code calling back into IPython's machinery, this
should be set to False.
silent : bool
If True, avoid side-effects, such as implicit displayhooks and
and logging. silent=True forces store_history=False.
shell_futures : bool
If True, the code will share future statements with the interactive
shell. It will both be affected by previous __future__ imports, and
any __future__ imports in the code will affect the shell. If False,
__future__ imports are not shared in either direction.
Returns
-------
result : :class:`ExecutionResult`
"""
try:
result = self._run_cell(
raw_cell, store_history, silent, shell_futures)
finally:
self.events.trigger('finally_execute', result)
if not silent:
self.events.trigger('finally_run_cell', result)
return result

def _run_cell(self, raw_cell, store_history=False, silent=False, shell_futures=True):
"""Run a complete IPython cell.
Parameters
Expand Down

0 comments on commit 5f01438

Please sign in to comment.