Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/IPython/core/autocall.py: 69%
16 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-20 06:09 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-20 06:09 +0000
1# encoding: utf-8
2"""
3Autocall capabilities for IPython.core.
5Authors:
7* Brian Granger
8* Fernando Perez
9* Thomas Kluyver
11Notes
12-----
13"""
15#-----------------------------------------------------------------------------
16# Copyright (C) 2008-2011 The IPython Development Team
17#
18# Distributed under the terms of the BSD License. The full license is in
19# the file COPYING, distributed as part of this software.
20#-----------------------------------------------------------------------------
22#-----------------------------------------------------------------------------
23# Imports
24#-----------------------------------------------------------------------------
27#-----------------------------------------------------------------------------
28# Code
29#-----------------------------------------------------------------------------
31class IPyAutocall(object):
32 """ Instances of this class are always autocalled
34 This happens regardless of 'autocall' variable state. Use this to
35 develop macro-like mechanisms.
36 """
37 _ip = None
38 rewrite = True
39 def __init__(self, ip=None):
40 self._ip = ip
42 def set_ip(self, ip):
43 """Will be used to set _ip point to current ipython instance b/f call
45 Override this method if you don't want this to happen.
47 """
48 self._ip = ip
51class ExitAutocall(IPyAutocall):
52 """An autocallable object which will be added to the user namespace so that
53 exit, exit(), quit or quit() are all valid ways to close the shell."""
54 rewrite = False
56 def __call__(self):
57 self._ip.ask_exit()
59class ZMQExitAutocall(ExitAutocall):
60 """Exit IPython. Autocallable, so it needn't be explicitly called.
62 Parameters
63 ----------
64 keep_kernel : bool
65 If True, leave the kernel alive. Otherwise, tell the kernel to exit too
66 (default).
67 """
68 def __call__(self, keep_kernel=False):
69 self._ip.keepkernel_on_exit = keep_kernel
70 self._ip.ask_exit()