# encoding: utf-8 """ Autocall capabilities for IPython.core. Authors: * Brian Granger * Fernando Perez * Thomas Kluyver Notes ----- """ #----------------------------------------------------------------------------- # Copyright (C) 2008-2011 The IPython Development Team # # Distributed under the terms of the BSD License. The full license is in # the file COPYING, distributed as part of this software. #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Imports #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Code #----------------------------------------------------------------------------- class IPyAutocall(object): """ Instances of this class are always autocalled This happens regardless of 'autocall' variable state. Use this to develop macro-like mechanisms. """ _ip = None rewrite = True def __init__(self, ip=None): self._ip = ip def set_ip(self, ip): """ Will be used to set _ip point to current ipython instance b/f call Override this method if you don't want this to happen. """ self._ip = ip class ExitAutocall(IPyAutocall): """An autocallable object which will be added to the user namespace so that exit, exit(), quit or quit() are all valid ways to close the shell.""" rewrite = False def __call__(self): self._ip.ask_exit() class ZMQExitAutocall(ExitAutocall): """Exit IPython. Autocallable, so it needn't be explicitly called. Parameters ---------- keep_kernel : bool If True, leave the kernel alive. Otherwise, tell the kernel to exit too (default). """ def __call__(self, keep_kernel=False): self._ip.keepkernel_on_exit = keep_kernel self._ip.ask_exit()