Show More
@@ -3254,15 +3254,20 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
3254 | 3254 | def magic_doctest_mode(self,parameter_s=''): |
|
3255 | 3255 | """Toggle doctest mode on and off. |
|
3256 | 3256 | |
|
3257 | This mode allows you to toggle the prompt behavior between normal | |
|
3258 | IPython prompts and ones that are as similar to the default IPython | |
|
3259 | interpreter as possible. | |
|
3260 | ||
|
3261 | It also supports the pasting of code snippets that have leading '>>>' | |
|
3262 | and '...' prompts in them. This means that you can paste doctests from | |
|
3263 | files or docstrings (even if they have leading whitespace), and the | |
|
3264 | code will execute correctly. You can then use '%history -tn' to see | |
|
3265 | the translated history without line numbers; this will give you the | |
|
3257 | This mode is intended to make IPython behave as much as possible like a | |
|
3258 | plain Python shell, from the perspective of how its prompts, exceptions | |
|
3259 | and output look. This makes it easy to copy and paste parts of a | |
|
3260 | session into doctests. It does so by: | |
|
3261 | ||
|
3262 | - Changing the prompts to the classic ``>>>`` ones. | |
|
3263 | - Changing the exception reporting mode to 'Plain'. | |
|
3264 | - Disabling pretty-printing of output. | |
|
3265 | ||
|
3266 | Note that IPython also supports the pasting of code snippets that have | |
|
3267 | leading '>>>' and '...' prompts in them. This means that you can paste | |
|
3268 | doctests from files or docstrings (even if they have leading | |
|
3269 | whitespace), and the code will execute correctly. You can then use | |
|
3270 | '%history -t' to see the translated history; this will give you the | |
|
3266 | 3271 | input after removal of all the leading prompts and whitespace, which |
|
3267 | 3272 | can be pasted back into an editor. |
|
3268 | 3273 | |
@@ -3308,7 +3313,6 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
3308 | 3313 | shell.pprint = False |
|
3309 | 3314 | |
|
3310 | 3315 | shell.magic_xmode('Plain') |
|
3311 | ||
|
3312 | 3316 | else: |
|
3313 | 3317 | # turn off |
|
3314 | 3318 | oc.prompt1.p_template = shell.prompt_in1 |
@@ -3329,8 +3333,8 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
3329 | 3333 | |
|
3330 | 3334 | # Store new mode and inform |
|
3331 | 3335 | dstore.mode = bool(1-int(mode)) |
|
3332 | print 'Doctest mode is:', | |
|
3333 | print ['OFF','ON'][dstore.mode] | |
|
3336 | mode_label = ['OFF','ON'][dstore.mode] | |
|
3337 | print 'Doctest mode is:', mode_label | |
|
3334 | 3338 | |
|
3335 | 3339 | def magic_gui(self, parameter_s=''): |
|
3336 | 3340 | """Enable or disable IPython GUI event loop integration. |
@@ -86,6 +86,65 b' class ZMQInteractiveShell(InteractiveShell):' | |||
|
86 | 86 | Term = IPython.utils.io.IOTerm() |
|
87 | 87 | IPython.utils.io.Term = Term |
|
88 | 88 | |
|
89 | def magic_doctest_mode(self,parameter_s=''): | |
|
90 | """Toggle doctest mode on and off. | |
|
91 | ||
|
92 | This mode is intended to make IPython behave as much as possible like a | |
|
93 | plain Python shell, from the perspective of how its prompts, exceptions | |
|
94 | and output look. This makes it easy to copy and paste parts of a | |
|
95 | session into doctests. It does so by: | |
|
96 | ||
|
97 | - Changing the prompts to the classic ``>>>`` ones. | |
|
98 | - Changing the exception reporting mode to 'Plain'. | |
|
99 | - Disabling pretty-printing of output. | |
|
100 | ||
|
101 | Note that IPython also supports the pasting of code snippets that have | |
|
102 | leading '>>>' and '...' prompts in them. This means that you can paste | |
|
103 | doctests from files or docstrings (even if they have leading | |
|
104 | whitespace), and the code will execute correctly. You can then use | |
|
105 | '%history -t' to see the translated history; this will give you the | |
|
106 | input after removal of all the leading prompts and whitespace, which | |
|
107 | can be pasted back into an editor. | |
|
108 | ||
|
109 | With these features, you can switch into this mode easily whenever you | |
|
110 | need to do testing and changes to doctests, without having to leave | |
|
111 | your existing IPython session. | |
|
112 | """ | |
|
113 | ||
|
114 | from IPython.utils.ipstruct import Struct | |
|
115 | ||
|
116 | # Shorthands | |
|
117 | shell = self.shell | |
|
118 | # dstore is a data store kept in the instance metadata bag to track any | |
|
119 | # changes we make, so we can undo them later. | |
|
120 | dstore = shell.meta.setdefault('doctest_mode', Struct()) | |
|
121 | save_dstore = dstore.setdefault | |
|
122 | ||
|
123 | # save a few values we'll need to recover later | |
|
124 | mode = save_dstore('mode', False) | |
|
125 | save_dstore('rc_pprint', shell.pprint) | |
|
126 | save_dstore('xmode', shell.InteractiveTB.mode) | |
|
127 | ||
|
128 | if mode == False: | |
|
129 | # turn on | |
|
130 | shell.pprint = False | |
|
131 | shell.magic_xmode('Plain') | |
|
132 | else: | |
|
133 | # turn off | |
|
134 | shell.pprint = dstore.rc_pprint | |
|
135 | shell.magic_xmode(dstore.xmode) | |
|
136 | ||
|
137 | # Store new mode and inform on console | |
|
138 | dstore.mode = bool(1-int(mode)) | |
|
139 | mode_label = ['OFF','ON'][dstore.mode] | |
|
140 | print('Doctest mode is:', mode_label) | |
|
141 | ||
|
142 | # Send the payload back so that clients can modify their prompt display | |
|
143 | payload = dict( | |
|
144 | source='IPython.zmq.zmqshell.ZMQInteractiveShell.magic_doctest_mode', | |
|
145 | mode=dstore.mode) | |
|
146 | self.payload_manager.write_payload(payload) | |
|
147 | ||
|
89 | 148 | def magic_edit(self,parameter_s='',last_call=['','']): |
|
90 | 149 | """Bring up an editor and execute the resulting code. |
|
91 | 150 |
General Comments 0
You need to be logged in to leave comments.
Login now