71 lines
2 KiB
Python
71 lines
2 KiB
Python
|
# 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()
|