Show More
@@ -56,3 +56,16 b' class ExitAutocall(IPyAutocall):' | |||
|
56 | 56 | |
|
57 | 57 | def __call__(self): |
|
58 | 58 | self._ip.ask_exit() |
|
59 | ||
|
60 | class ZMQExitAutocall(ExitAutocall): | |
|
61 | """Exit IPython. Autocallable, so it needn't be explicitly called. | |
|
62 | ||
|
63 | Parameters | |
|
64 | ---------- | |
|
65 | keep_kernel : bool | |
|
66 | If True, leave the kernel alive. Otherwise, tell the kernel to exit too | |
|
67 | (default). | |
|
68 | """ | |
|
69 | def __call__(self, keep_kernel=False): | |
|
70 | self._ip.keepkernel_on_exit = keep_kernel | |
|
71 | self._ip.ask_exit() |
@@ -199,6 +199,9 b' class InteractiveShell(Configurable, Magic):' | |||
|
199 | 199 | display_pub_class = Type(DisplayPublisher) |
|
200 | 200 | |
|
201 | 201 | exit_now = CBool(False) |
|
202 | exiter = Instance(ExitAutocall) | |
|
203 | def _exiter_default(self): | |
|
204 | return ExitAutocall(self) | |
|
202 | 205 | # Monotonically increasing execution counter |
|
203 | 206 | execution_count = Int(1) |
|
204 | 207 | filename = Unicode("<ipython console>") |
@@ -1025,9 +1028,8 b' class InteractiveShell(Configurable, Magic):' | |||
|
1025 | 1028 | # Store myself as the public api!!! |
|
1026 | 1029 | ns['get_ipython'] = self.get_ipython |
|
1027 | 1030 | |
|
1028 | exiter = ExitAutocall(self) | |
|
1029 | 1031 | for n in ['exit', 'Exit', 'quit', 'Quit']: |
|
1030 | ns[n] = exiter | |
|
1032 | ns[n] = self.exiter | |
|
1031 | 1033 | |
|
1032 | 1034 | # Sync what we've added so far to user_ns_hidden so these aren't seen |
|
1033 | 1035 | # by %who |
@@ -24,6 +24,7 b' from IPython.core.interactiveshell import (' | |||
|
24 | 24 | InteractiveShell, InteractiveShellABC |
|
25 | 25 | ) |
|
26 | 26 | from IPython.core import page |
|
27 | from IPython.core.autocall import ZMQExitAutocall | |
|
27 | 28 | from IPython.core.displayhook import DisplayHook |
|
28 | 29 | from IPython.core.displaypub import DisplayPublisher |
|
29 | 30 | from IPython.core.macro import Macro |
@@ -104,6 +105,10 b' class ZMQInteractiveShell(InteractiveShell):' | |||
|
104 | 105 | |
|
105 | 106 | displayhook_class = Type(ZMQDisplayHook) |
|
106 | 107 | display_pub_class = Type(ZMQDisplayPublisher) |
|
108 | ||
|
109 | exiter = Instance(ZMQExitAutocall) | |
|
110 | def _exiter_default(self): | |
|
111 | return ZMQExitAutocall(self) | |
|
107 | 112 | |
|
108 | 113 | keepkernel_on_exit = None |
|
109 | 114 | |
@@ -592,16 +597,5 b' class ZMQInteractiveShell(InteractiveShell):' | |||
|
592 | 597 | text=content |
|
593 | 598 | ) |
|
594 | 599 | self.payload_manager.write_payload(payload) |
|
595 | ||
|
596 | def magic_Exit(self, parameter_s=''): | |
|
597 | """Exit IPython. If the -k option is provided, the kernel will be left | |
|
598 | running. Otherwise, it will shutdown without prompting. | |
|
599 | """ | |
|
600 | opts,args = self.parse_options(parameter_s,'k') | |
|
601 | self.shell.keepkernel_on_exit = opts.has_key('k') | |
|
602 | self.shell.ask_exit() | |
|
603 | ||
|
604 | # Add aliases as magics so all common forms work: exit, quit, Exit, Quit. | |
|
605 | magic_exit = magic_quit = magic_Quit = magic_Exit | |
|
606 | 600 | |
|
607 | 601 | InteractiveShellABC.register(ZMQInteractiveShell) |
General Comments 0
You need to be logged in to leave comments.
Login now