##// END OF EJS Templates
Update docs/source/whatsnew/version8.rst
Matthias Bussonnier -
Show More
@@ -1,897 +1,897 b''
1 ============
1 ============
2 8.x Series
2 8.x Series
3 ============
3 ============
4
4
5 IPython 8.0
5 IPython 8.0
6 -----------
6 -----------
7
7
8 IPython 8.0 is bringing a large number of new features and improvements to both the
8 IPython 8.0 is bringing a large number of new features and improvements to both the
9 user of the terminal and of the kernel via Jupyter. The removal of compatibility
9 user of the terminal and of the kernel via Jupyter. The removal of compatibility
10 with older version of Python is also the opportunity to do a couple of
10 with older version of Python is also the opportunity to do a couple of
11 performance improvement in particular with respect to startup time.
11 performance improvement in particular with respect to startup time.
12 The 8.x branch started diverging from its predecessor around IPython 7.12
12 The 8.x branch started diverging from its predecessor around IPython 7.12
13 (January 2020).
13 (January 2020).
14
14
15 This release contains 250+ pull requests, in addition to many of the features
15 This release contains 250+ pull requests, in addition to many of the features
16 and backports that have made it to the 7.x branch. Please see the
16 and backports that have made it to the 7.x branch. Please see the
17 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
17 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
18
18
19 Please fell free to send pull requests to updates those notes after release,
19 Please fell free to send pull requests to updates those notes after release,
20 I have likely forgotten a few things reviewing 250+ PRs.
20 I have likely forgotten a few things reviewing 250+ PRs.
21
21
22 Dependencies changes/downstream packaging
22 Dependencies changes/downstream packaging
23 -----------------------------------------
23 -----------------------------------------
24
24
25 Most of our building steps have been changed to be (mostly) declarative
25 Most of our building steps have been changed to be (mostly) declarative
26 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
26 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
27 looking for help to do so.
27 looking for help to do so.
28
28
29 - minimum supported ``traitlets`` version is now 5+
29 - minimum supported ``traitlets`` version is now 5+
30 - we now require ``stack_data``
30 - we now require ``stack_data``
31 - minimal Python is now 3.8
31 - minimal Python is now 3.8
32 - ``nose`` is not a testing requirement anymore
32 - ``nose`` is not a testing requirement anymore
33 - ``pytest`` replaces nose.
33 - ``pytest`` replaces nose.
34 - ``iptest``/``iptest3`` cli entrypoints do not exists anymore.
34 - ``iptest``/``iptest3`` cli entrypoints do not exists anymore.
35 - minimum officially support ``numpy`` version has been bumped, but this should
35 - minimum officially support ``numpy`` version has been bumped, but this should
36 not have much effect on packaging.
36 not have much effect on packaging.
37
37
38
38
39 Deprecation and removal
39 Deprecation and removal
40 -----------------------
40 -----------------------
41
41
42 We removed almost all features, arguments, functions, and modules that were
42 We removed almost all features, arguments, functions, and modules that were
43 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
43 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
44 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
44 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
45 The few remaining deprecated features we left have better deprecation warnings
45 The few remaining deprecated features we left have better deprecation warnings
46 or have been turned into explicit errors for better error messages.
46 or have been turned into explicit errors for better error messages.
47
47
48 I will use this occasion to add the following requests to anyone emitting a
48 I will use this occasion to add the following requests to anyone emitting a
49 deprecation warning:
49 deprecation warning:
50
50
51 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
51 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
52 caller context, and not the callee one.
52 caller context, and not the callee one.
53 - Please add **since which version** something is deprecated.
53 - Please add **since which version** something is deprecated.
54
54
55 As a side note, it is much easier to conditionally compare version
55 As a side note, it is much easier to conditionally compare version
56 numbers rather than using ``try/except`` when functionality changes with a version.
56 numbers rather than using ``try/except`` when functionality changes with a version.
57
57
58 I won't list all the removed features here, but modules like ``IPython.kernel``,
58 I won't list all the removed features here, but modules like ``IPython.kernel``,
59 which was just a shim module around ``ipykernel`` for the past 8 years, have been
59 which was just a shim module around ``ipykernel`` for the past 8 years, have been
60 removed, and so many other similar things that pre-date the name **Jupyter**
60 removed, and so many other similar things that pre-date the name **Jupyter**
61 itself.
61 itself.
62
62
63 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
63 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
64 handled by ``load_extension``.
64 handled by ``load_extension``.
65
65
66 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
66 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
67 other packages and no longer need to be inside IPython.
67 other packages and no longer need to be inside IPython.
68
68
69
69
70 Documentation
70 Documentation
71 -------------
71 -------------
72
72
73 The majority of our docstrings have now been reformatted and automatically fixed by
73 The majority of our docstrings have now been reformatted and automatically fixed by
74 the experimental `VΓ©lin <https://pypi.org/project/velin/>`_ project to conform
74 the experimental `VΓ©lin <https://pypi.org/project/velin/>`_ project to conform
75 to numpydoc.
75 to numpydoc.
76
76
77 Type annotations
77 Type annotations
78 ----------------
78 ----------------
79
79
80 While IPython itself is highly dynamic and can't be completely typed, many of
80 While IPython itself is highly dynamic and can't be completely typed, many of
81 the functions now have type annotations, and part of the codebase is now checked
81 the functions now have type annotations, and part of the codebase is now checked
82 by mypy.
82 by mypy.
83
83
84
84
85 Featured changes
85 Featured changes
86 ----------------
86 ----------------
87
87
88 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
88 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
89 Please note as well that many features have been added in the 7.x branch as well
89 Please note as well that many features have been added in the 7.x branch as well
90 (and hence why you want to read the 7.x what's new notes), in particular
90 (and hence why you want to read the 7.x what's new notes), in particular
91 features contributed by QuantStack (with respect to debugger protocol and Xeus
91 features contributed by QuantStack (with respect to debugger protocol and Xeus
92 Python), as well as many debugger features that I was pleased to implement as
92 Python), as well as many debugger features that I was pleased to implement as
93 part of my work at QuanSight and sponsored by DE Shaw.
93 part of my work at QuanSight and sponsored by DE Shaw.
94
94
95 Traceback improvements
95 Traceback improvements
96 ~~~~~~~~~~~~~~~~~~~~~~
96 ~~~~~~~~~~~~~~~~~~~~~~
97
97
98 Previously, error tracebacks for errors happening in code cells were showing a
98 Previously, error tracebacks for errors happening in code cells were showing a
99 hash, the one used for compiling the Python AST::
99 hash, the one used for compiling the Python AST::
100
100
101 In [1]: def foo():
101 In [1]: def foo():
102 ...: return 3 / 0
102 ...: return 3 / 0
103 ...:
103 ...:
104
104
105 In [2]: foo()
105 In [2]: foo()
106 ---------------------------------------------------------------------------
106 ---------------------------------------------------------------------------
107 ZeroDivisionError Traceback (most recent call last)
107 ZeroDivisionError Traceback (most recent call last)
108 <ipython-input-2-c19b6d9633cf> in <module>
108 <ipython-input-2-c19b6d9633cf> in <module>
109 ----> 1 foo()
109 ----> 1 foo()
110
110
111 <ipython-input-1-1595a74c32d5> in foo()
111 <ipython-input-1-1595a74c32d5> in foo()
112 1 def foo():
112 1 def foo():
113 ----> 2 return 3 / 0
113 ----> 2 return 3 / 0
114 3
114 3
115
115
116 ZeroDivisionError: division by zero
116 ZeroDivisionError: division by zero
117
117
118 The error traceback is now correctly formatted, showing the cell number in which the error happened::
118 The error traceback is now correctly formatted, showing the cell number in which the error happened::
119
119
120 In [1]: def foo():
120 In [1]: def foo():
121 ...: return 3 / 0
121 ...: return 3 / 0
122 ...:
122 ...:
123
123
124 Input In [2]: foo()
124 Input In [2]: foo()
125 ---------------------------------------------------------------------------
125 ---------------------------------------------------------------------------
126 ZeroDivisionError Traceback (most recent call last)
126 ZeroDivisionError Traceback (most recent call last)
127 input In [2], in <module>
127 input In [2], in <module>
128 ----> 1 foo()
128 ----> 1 foo()
129
129
130 Input In [1], in foo()
130 Input In [1], in foo()
131 1 def foo():
131 1 def foo():
132 ----> 2 return 3 / 0
132 ----> 2 return 3 / 0
133
133
134 ZeroDivisionError: division by zero
134 ZeroDivisionError: division by zero
135
135
136 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
136 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
137 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
137 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
138
138
139 For example in the following snippet::
139 For example in the following snippet::
140
140
141 def foo(i):
141 def foo(i):
142 x = [[[0]]]
142 x = [[[0]]]
143 return x[0][i][0]
143 return x[0][i][0]
144
144
145
145
146 def bar():
146 def bar():
147 return foo(0) + foo(
147 return foo(0) + foo(
148 1
148 1
149 ) + foo(2)
149 ) + foo(2)
150
150
151
151
152 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
152 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
153 and IPython 8.0 is capable of telling you where the index error occurs::
153 and IPython 8.0 is capable of telling you where the index error occurs::
154
154
155
155
156 IndexError
156 IndexError
157 Input In [2], in <module>
157 Input In [2], in <module>
158 ----> 1 bar()
158 ----> 1 bar()
159 ^^^^^
159 ^^^^^
160
160
161 Input In [1], in bar()
161 Input In [1], in bar()
162 6 def bar():
162 6 def bar():
163 ----> 7 return foo(0) + foo(
163 ----> 7 return foo(0) + foo(
164 ^^^^
164 ^^^^
165 8 1
165 8 1
166 ^^^^^^^^
166 ^^^^^^^^
167 9 ) + foo(2)
167 9 ) + foo(2)
168 ^^^^
168 ^^^^
169
169
170 Input In [1], in foo(i)
170 Input In [1], in foo(i)
171 1 def foo(i):
171 1 def foo(i):
172 2 x = [[[0]]]
172 2 x = [[[0]]]
173 ----> 3 return x[0][i][0]
173 ----> 3 return x[0][i][0]
174 ^^^^^^^
174 ^^^^^^^
175
175
176 The corresponding locations marked here with ``^`` will show up highlighted in
176 The corresponding locations marked here with ``^`` will show up highlighted in
177 the terminal and notebooks.
177 the terminal and notebooks.
178
178
179 Finally, a colon ``::`` and line number is appended after a filename in
179 Finally, a colon ``::`` and line number is appended after a filename in
180 traceback::
180 traceback::
181
181
182
182
183 ZeroDivisionError Traceback (most recent call last)
183 ZeroDivisionError Traceback (most recent call last)
184 File ~/error.py:4, in <module>
184 File ~/error.py:4, in <module>
185 1 def f():
185 1 def f():
186 2 1/0
186 2 1/0
187 ----> 4 f()
187 ----> 4 f()
188
188
189 File ~/error.py:2, in f()
189 File ~/error.py:2, in f()
190 1 def f():
190 1 def f():
191 ----> 2 1/0
191 ----> 2 1/0
192
192
193 Many terminals and editors have integrations enabling you to directly jump to the
193 Many terminals and editors have integrations enabling you to directly jump to the
194 relevant file/line when this syntax is used, so this small addition may have a high
194 relevant file/line when this syntax is used, so this small addition may have a high
195 impact on productivity.
195 impact on productivity.
196
196
197
197
198 Autosuggestions
198 Autosuggestions
199 ~~~~~~~~~~~~~~
199 ~~~~~~~~~~~~~~~
200
200
201 Autosuggestion is a very useful feature available in `fish <https://fishshell.com/>`__, `zsh <https://en.wikipedia.org/wiki/Z_shell>`__, and `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion>`__.
201 Autosuggestion is a very useful feature available in `fish <https://fishshell.com/>`__, `zsh <https://en.wikipedia.org/wiki/Z_shell>`__, and `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion>`__.
202
202
203 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
203 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
204 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
204 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
205
205
206 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
206 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
207 or right arrow as described below.
207 or right arrow as described below.
208
208
209 1. Start ipython
209 1. Start ipython
210
210
211 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
211 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
212
212
213 2. Run ``print("hello")``
213 2. Run ``print("hello")``
214
214
215 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
215 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
216
216
217 3. start typing ``print`` again to see the autosuggestion
217 3. start typing ``print`` again to see the autosuggestion
218
218
219 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
219 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
220
220
221 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
221 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
222
222
223 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
223 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
224
224
225 You can also complete word by word:
225 You can also complete word by word:
226
226
227 1. Run ``def say_hello(): print("hello")``
227 1. Run ``def say_hello(): print("hello")``
228
228
229 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
229 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
230
230
231 2. Start typing the first letter if ``def`` to see the autosuggestion
231 2. Start typing the first letter if ``def`` to see the autosuggestion
232
232
233 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
233 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
234
234
235 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
235 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
236
236
237 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
237 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
238
238
239 Importantly, this feature does not interfere with tab completion:
239 Importantly, this feature does not interfere with tab completion:
240
240
241 1. After running ``def say_hello(): print("hello")``, press d
241 1. After running ``def say_hello(): print("hello")``, press d
242
242
243 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
243 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
244
244
245 2. Press Tab to start tab completion
245 2. Press Tab to start tab completion
246
246
247 .. image:: ../_images/8.0/auto_suggest_d_completions.png
247 .. image:: ../_images/8.0/auto_suggest_d_completions.png
248
248
249 3A. Press Tab again to select the first option
249 3A. Press Tab again to select the first option
250
250
251 .. image:: ../_images/8.0/auto_suggest_def_completions.png
251 .. image:: ../_images/8.0/auto_suggest_def_completions.png
252
252
253 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
253 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
254
254
255 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
255 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
256
256
257 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
257 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
258
258
259 .. image:: ../_images/8.0/auto_suggest_match_parens.png
259 .. image:: ../_images/8.0/auto_suggest_match_parens.png
260
260
261
261
262 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
262 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
263
263
264 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
264 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
265 - To use these shortcuts in vi insert mode, you will have to create `custom keybindings in your config.py <https://github.com/mskar/setup/commit/2892fcee46f9f80ef7788f0749edc99daccc52f4/>`__.
265 - To use these shortcuts in vi insert mode, you will have to create `custom keybindings in your config.py <https://github.com/mskar/setup/commit/2892fcee46f9f80ef7788f0749edc99daccc52f4/>`__.
266
266
267
267
268 Show pinfo information in ipdb using "?" and "??"
268 Show pinfo information in ipdb using "?" and "??"
269 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
269 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
270
270
271 In IPDB, it is now possible to show the information about an object using "?"
271 In IPDB, it is now possible to show the information about an object using "?"
272 and "??", in much the same way that it can be done when using the IPython prompt::
272 and "??", in much the same way that it can be done when using the IPython prompt::
273
273
274 ipdb> partial?
274 ipdb> partial?
275 Init signature: partial(self, /, *args, **kwargs)
275 Init signature: partial(self, /, *args, **kwargs)
276 Docstring:
276 Docstring:
277 partial(func, *args, **keywords) - new function with partial application
277 partial(func, *args, **keywords) - new function with partial application
278 of the given arguments and keywords.
278 of the given arguments and keywords.
279 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
279 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
280 Type: type
280 Type: type
281 Subclasses:
281 Subclasses:
282
282
283 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
283 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
284
284
285
285
286 Autoreload 3 feature
286 Autoreload 3 feature
287 ~~~~~~~~~~~~~~~~~~~~
287 ~~~~~~~~~~~~~~~~~~~~
288
288
289 Example: When an IPython session is run with the 'autoreload' extension loaded,
289 Example: When an IPython session is run with the 'autoreload' extension loaded,
290 you will now have the option '3' to select, which means the following:
290 you will now have the option '3' to select, which means the following:
291
291
292 1. replicate all functionality from option 2
292 1. replicate all functionality from option 2
293 2. autoload all new funcs/classes/enums/globals from the module when they are added
293 2. autoload all new funcs/classes/enums/globals from the module when they are added
294 3. autoload all newly imported funcs/classes/enums/globals from external modules
294 3. autoload all newly imported funcs/classes/enums/globals from external modules
295
295
296 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
296 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
297
297
298 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
298 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
299
299
300 Auto formatting with black in the CLI
300 Auto formatting with black in the CLI
301 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
301 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
302
302
303 If ``black`` is installed in the same environment as IPython, terminal IPython
303 If ``black`` is installed in the same environment as IPython, terminal IPython
304 will now *by default* reformat the code in the CLI when possible. You can
304 will now *by default* reformat the code in the CLI when possible. You can
305 disable this with ``--TerminalInteractiveShell.autoformatter=None``.
305 disable this with ``--TerminalInteractiveShell.autoformatter=None``.
306
306
307 This feature was present in 7.x, but disabled by default.
307 This feature was present in 7.x, but disabled by default.
308
308
309
309
310 History Range Glob feature
310 History Range Glob feature
311 ~~~~~~~~~~~~~~~~~~~~~~~~~~
311 ~~~~~~~~~~~~~~~~~~~~~~~~~~
312
312
313 Previously, when using ``%history``, users could specify either
313 Previously, when using ``%history``, users could specify either
314 a range of sessions and lines, for example:
314 a range of sessions and lines, for example:
315
315
316 .. code-block:: python
316 .. code-block:: python
317
317
318 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
318 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
319 # to the fifth line of 6 sessions ago.``
319 # to the fifth line of 6 sessions ago.``
320
320
321 Or users could specify a glob pattern:
321 Or users could specify a glob pattern:
322
322
323 .. code-block:: python
323 .. code-block:: python
324
324
325 -g <pattern> # glob ALL history for the specified pattern.
325 -g <pattern> # glob ALL history for the specified pattern.
326
326
327 However users could *not* specify both.
327 However users could *not* specify both.
328
328
329 If a user *did* specify both a range and a glob pattern,
329 If a user *did* specify both a range and a glob pattern,
330 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
330 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
331
331
332 With this enhancement, if a user specifies both a range and a glob pattern, then the glob pattern will be applied to the specified range of history.
332 With this enhancement, if a user specifies both a range and a glob pattern, then the glob pattern will be applied to the specified range of history.
333
333
334 Don't start a multi-line cell with sunken parenthesis
334 Don't start a multi-line cell with sunken parenthesis
335 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
335 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
336
336
337 From now on, IPython will not ask for the next line of input when given a single
337 From now on, IPython will not ask for the next line of input when given a single
338 line with more closing than opening brackets. For example, this means that if
338 line with more closing than opening brackets. For example, this means that if
339 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
339 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
340 the ``...:`` prompt continuation.
340 the ``...:`` prompt continuation.
341
341
342 IPython shell for ipdb interact
342 IPython shell for ipdb interact
343 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
343 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
344
344
345 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
345 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
346
346
347 Automatic Vi prompt stripping
347 Automatic Vi prompt stripping
348 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
348 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
349
349
350 When pasting code into IPython, it will strip the leading prompt characters if
350 When pasting code into IPython, it will strip the leading prompt characters if
351 there are any. For example, you can paste the following code into the console -
351 there are any. For example, you can paste the following code into the console -
352 it will still work, even though each line is prefixed with prompts (`In`,
352 it will still work, even though each line is prefixed with prompts (`In`,
353 `Out`)::
353 `Out`)::
354
354
355 In [1]: 2 * 2 == 4
355 In [1]: 2 * 2 == 4
356 Out[1]: True
356 Out[1]: True
357
357
358 In [2]: print("This still works as pasted")
358 In [2]: print("This still works as pasted")
359
359
360
360
361 Previously, this was not the case for the Vi-mode prompts::
361 Previously, this was not the case for the Vi-mode prompts::
362
362
363 In [1]: [ins] In [13]: 2 * 2 == 4
363 In [1]: [ins] In [13]: 2 * 2 == 4
364 ...: Out[13]: True
364 ...: Out[13]: True
365 ...:
365 ...:
366 File "<ipython-input-1-727bb88eaf33>", line 1
366 File "<ipython-input-1-727bb88eaf33>", line 1
367 [ins] In [13]: 2 * 2 == 4
367 [ins] In [13]: 2 * 2 == 4
368 ^
368 ^
369 SyntaxError: invalid syntax
369 SyntaxError: invalid syntax
370
370
371 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
371 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
372 skipped just as the normal ``In`` would be.
372 skipped just as the normal ``In`` would be.
373
373
374 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
374 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
375 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
375 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
376
376
377 Empty History Ranges
377 Empty History Ranges
378 ~~~~~~~~~~~~~~~~~~~~
378 ~~~~~~~~~~~~~~~~~~~~
379
379
380 A number of magics that take history ranges can now be used with an empty
380 A number of magics that take history ranges can now be used with an empty
381 range. These magics are:
381 range. These magics are:
382
382
383 * ``%save``
383 * ``%save``
384 * ``%load``
384 * ``%load``
385 * ``%pastebin``
385 * ``%pastebin``
386 * ``%pycat``
386 * ``%pycat``
387
387
388 Using them this way will make them take the history of the current session up
388 Using them this way will make them take the history of the current session up
389 to the point of the magic call (such that the magic itself will not be
389 to the point of the magic call (such that the magic itself will not be
390 included).
390 included).
391
391
392 Therefore it is now possible to save the whole history to a file using
392 Therefore it is now possible to save the whole history to a file using
393 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
393 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
394 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
394 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
395 ``%pastebin``, or view the whole thing syntax-highlighted with a single
395 ``%pastebin``, or view the whole thing syntax-highlighted with a single
396 ``%pycat``.
396 ``%pycat``.
397
397
398
398
399 Windows timing implementation: Switch to process_time
399 Windows timing implementation: Switch to process_time
400 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
400 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
401 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
401 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
402 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
402 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
403 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
403 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
404
404
405 Miscellaneous
405 Miscellaneous
406 ~~~~~~~~~~~~~
406 ~~~~~~~~~~~~~
407 - Non-text formatters are not disabled in the terminal, which should simplify
407 - Non-text formatters are not disabled in the terminal, which should simplify
408 writing extensions displaying images or other mimetypes in supporting terminals.
408 writing extensions displaying images or other mimetypes in supporting terminals.
409 :ghpull:`12315`
409 :ghpull:`12315`
410 - It is now possible to automatically insert matching brackets in Terminal IPython using the
410 - It is now possible to automatically insert matching brackets in Terminal IPython using the
411 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
411 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
412 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
412 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
413 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
413 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
414 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
414 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
415 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
415 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
416 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
416 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
417 - The debugger now has a persistent history, which should make it less
417 - The debugger now has a persistent history, which should make it less
418 annoying to retype commands :ghpull:`13246`
418 annoying to retype commands :ghpull:`13246`
419 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
419 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
420 now warn users if they use one of those commands. :ghpull:`12954`
420 now warn users if they use one of those commands. :ghpull:`12954`
421 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
421 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
422
422
423 Re-added support for XDG config directories
423 Re-added support for XDG config directories
424 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
424 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
425
425
426 XDG support through the years comes and goes. There is a tension between having
426 XDG support through the years comes and goes. There is a tension between having
427 an identical location for configuration in all platforms versus having simple instructions.
427 an identical location for configuration in all platforms versus having simple instructions.
428 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
428 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
429 config files back into ``~/.ipython``. That migration code has now been removed.
429 config files back into ``~/.ipython``. That migration code has now been removed.
430 IPython now checks the XDG locations, so if you _manually_ move your config
430 IPython now checks the XDG locations, so if you _manually_ move your config
431 files to your preferred location, IPython will not move them back.
431 files to your preferred location, IPython will not move them back.
432
432
433
433
434 Preparing for Python 3.10
434 Preparing for Python 3.10
435 -------------------------
435 -------------------------
436
436
437 To prepare for Python 3.10, we have started working on removing reliance and
437 To prepare for Python 3.10, we have started working on removing reliance and
438 any dependency that is not compatible with Python 3.10. This includes migrating our
438 any dependency that is not compatible with Python 3.10. This includes migrating our
439 test suite to pytest and starting to remove nose. This also means that the
439 test suite to pytest and starting to remove nose. This also means that the
440 ``iptest`` command is now gone and all testing is via pytest.
440 ``iptest`` command is now gone and all testing is via pytest.
441
441
442 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
442 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
443 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
443 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
444 who did a fantastic job at updating our code base, migrating to pytest, pushing
444 who did a fantastic job at updating our code base, migrating to pytest, pushing
445 our coverage, and fixing a large number of bugs. I highly recommend contacting
445 our coverage, and fixing a large number of bugs. I highly recommend contacting
446 them if you need help with C++ and Python projects.
446 them if you need help with C++ and Python projects.
447
447
448 You can find all relevant issues and PRs with the SDG 2021 tag `<https://github.com/ipython/ipython/issues?q=label%3A%22Numfocus+SDG+2021%22+>`__
448 You can find all relevant issues and PRs with the SDG 2021 tag `<https://github.com/ipython/ipython/issues?q=label%3A%22Numfocus+SDG+2021%22+>`__
449
449
450 Removing support for older Python versions
450 Removing support for older Python versions
451 ------------------------------------------
451 ------------------------------------------
452
452
453
453
454 We are removing support for Python up through 3.7, allowing internal code to use the more
454 We are removing support for Python up through 3.7, allowing internal code to use the more
455 efficient ``pathlib`` and to make better use of type annotations.
455 efficient ``pathlib`` and to make better use of type annotations.
456
456
457 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
457 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
458 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
458 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
459
459
460
460
461 We had about 34 PRs only to update some logic to update some functions from managing strings to
461 We had about 34 PRs only to update some logic to update some functions from managing strings to
462 using Pathlib.
462 using Pathlib.
463
463
464 The completer has also seen significant updates and now makes use of newer Jedi APIs,
464 The completer has also seen significant updates and now makes use of newer Jedi APIs,
465 offering faster and more reliable tab completion.
465 offering faster and more reliable tab completion.
466
466
467 Misc Statistics
467 Misc Statistics
468 ---------------
468 ---------------
469
469
470 Here are some numbers::
470 Here are some numbers::
471
471
472 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
472 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
473 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
473 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
474
474
475 $ git diff --stat 7.x...master | tail -1
475 $ git diff --stat 7.x...master | tail -1
476 340 files changed, 13399 insertions(+), 12421 deletions(-)
476 340 files changed, 13399 insertions(+), 12421 deletions(-)
477
477
478 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
478 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
479 maintainers pushing buttons).::
479 maintainers pushing buttons).::
480
480
481 $ git shortlog -s --no-merges 7.x...master | sort -nr
481 $ git shortlog -s --no-merges 7.x...master | sort -nr
482 535 Matthias Bussonnier
482 535 Matthias Bussonnier
483 86 Nikita Kniazev
483 86 Nikita Kniazev
484 69 Blazej Michalik
484 69 Blazej Michalik
485 49 Samuel Gaist
485 49 Samuel Gaist
486 27 Itamar Turner-Trauring
486 27 Itamar Turner-Trauring
487 18 Spas Kalaydzhisyki
487 18 Spas Kalaydzhisyki
488 17 Thomas Kluyver
488 17 Thomas Kluyver
489 17 Quentin Peter
489 17 Quentin Peter
490 17 James Morris
490 17 James Morris
491 17 Artur Svistunov
491 17 Artur Svistunov
492 15 Bart Skowron
492 15 Bart Skowron
493 14 Alex Hall
493 14 Alex Hall
494 13 rushabh-v
494 13 rushabh-v
495 13 Terry Davis
495 13 Terry Davis
496 13 Benjamin Ragan-Kelley
496 13 Benjamin Ragan-Kelley
497 8 martinRenou
497 8 martinRenou
498 8 farisachugthai
498 8 farisachugthai
499 7 dswij
499 7 dswij
500 7 Gal B
500 7 Gal B
501 7 Corentin Cadiou
501 7 Corentin Cadiou
502 6 yuji96
502 6 yuji96
503 6 Martin Skarzynski
503 6 Martin Skarzynski
504 6 Justin Palmer
504 6 Justin Palmer
505 6 Daniel Goldfarb
505 6 Daniel Goldfarb
506 6 Ben Greiner
506 6 Ben Greiner
507 5 Sammy Al Hashemi
507 5 Sammy Al Hashemi
508 5 Paul Ivanov
508 5 Paul Ivanov
509 5 Inception95
509 5 Inception95
510 5 Eyenpi
510 5 Eyenpi
511 5 Douglas Blank
511 5 Douglas Blank
512 5 Coco Mishra
512 5 Coco Mishra
513 5 Bibo Hao
513 5 Bibo Hao
514 5 AndrΓ© A. Gomes
514 5 AndrΓ© A. Gomes
515 5 Ahmed Fasih
515 5 Ahmed Fasih
516 4 takuya fujiwara
516 4 takuya fujiwara
517 4 palewire
517 4 palewire
518 4 Thomas A Caswell
518 4 Thomas A Caswell
519 4 Talley Lambert
519 4 Talley Lambert
520 4 Scott Sanderson
520 4 Scott Sanderson
521 4 Ram Rachum
521 4 Ram Rachum
522 4 Nick Muoh
522 4 Nick Muoh
523 4 Nathan Goldbaum
523 4 Nathan Goldbaum
524 4 Mithil Poojary
524 4 Mithil Poojary
525 4 Michael T
525 4 Michael T
526 4 Jakub Klus
526 4 Jakub Klus
527 4 Ian Castleden
527 4 Ian Castleden
528 4 Eli Rykoff
528 4 Eli Rykoff
529 4 Ashwin Vishnu
529 4 Ashwin Vishnu
530 3 谭九鼎
530 3 谭九鼎
531 3 sleeping
531 3 sleeping
532 3 Sylvain Corlay
532 3 Sylvain Corlay
533 3 Peter Corke
533 3 Peter Corke
534 3 Paul Bissex
534 3 Paul Bissex
535 3 Matthew Feickert
535 3 Matthew Feickert
536 3 Fernando Perez
536 3 Fernando Perez
537 3 Eric Wieser
537 3 Eric Wieser
538 3 Daniel Mietchen
538 3 Daniel Mietchen
539 3 Aditya Sathe
539 3 Aditya Sathe
540 3 007vedant
540 3 007vedant
541 2 rchiodo
541 2 rchiodo
542 2 nicolaslazo
542 2 nicolaslazo
543 2 luttik
543 2 luttik
544 2 gorogoroumaru
544 2 gorogoroumaru
545 2 foobarbyte
545 2 foobarbyte
546 2 bar-hen
546 2 bar-hen
547 2 Theo Ouzhinski
547 2 Theo Ouzhinski
548 2 Strawkage
548 2 Strawkage
549 2 Samreen Zarroug
549 2 Samreen Zarroug
550 2 Pete Blois
550 2 Pete Blois
551 2 Meysam Azad
551 2 Meysam Azad
552 2 Matthieu Ancellin
552 2 Matthieu Ancellin
553 2 Mark Schmitz
553 2 Mark Schmitz
554 2 Maor Kleinberger
554 2 Maor Kleinberger
555 2 MRCWirtz
555 2 MRCWirtz
556 2 Lumir Balhar
556 2 Lumir Balhar
557 2 Julien Rabinow
557 2 Julien Rabinow
558 2 Juan Luis Cano RodrΓ­guez
558 2 Juan Luis Cano RodrΓ­guez
559 2 Joyce Er
559 2 Joyce Er
560 2 Jakub
560 2 Jakub
561 2 Faris A Chugthai
561 2 Faris A Chugthai
562 2 Ethan Madden
562 2 Ethan Madden
563 2 Dimitri Papadopoulos
563 2 Dimitri Papadopoulos
564 2 Diego Fernandez
564 2 Diego Fernandez
565 2 Daniel Shimon
565 2 Daniel Shimon
566 2 Coco Bennett
566 2 Coco Bennett
567 2 Carlos Cordoba
567 2 Carlos Cordoba
568 2 Boyuan Liu
568 2 Boyuan Liu
569 2 BaoGiang HoangVu
569 2 BaoGiang HoangVu
570 2 Augusto
570 2 Augusto
571 2 Arthur Svistunov
571 2 Arthur Svistunov
572 2 Arthur Moreira
572 2 Arthur Moreira
573 2 Ali Nabipour
573 2 Ali Nabipour
574 2 Adam Hackbarth
574 2 Adam Hackbarth
575 1 richard
575 1 richard
576 1 linar-jether
576 1 linar-jether
577 1 lbennett
577 1 lbennett
578 1 juacrumar
578 1 juacrumar
579 1 gpotter2
579 1 gpotter2
580 1 digitalvirtuoso
580 1 digitalvirtuoso
581 1 dalthviz
581 1 dalthviz
582 1 Yonatan Goldschmidt
582 1 Yonatan Goldschmidt
583 1 Tomasz KΕ‚oczko
583 1 Tomasz KΕ‚oczko
584 1 Tobias Bengfort
584 1 Tobias Bengfort
585 1 Timur Kushukov
585 1 Timur Kushukov
586 1 Thomas
586 1 Thomas
587 1 Snir Broshi
587 1 Snir Broshi
588 1 Shao Yang Hong
588 1 Shao Yang Hong
589 1 Sanjana-03
589 1 Sanjana-03
590 1 Romulo Filho
590 1 Romulo Filho
591 1 Rodolfo Carvalho
591 1 Rodolfo Carvalho
592 1 Richard Shadrach
592 1 Richard Shadrach
593 1 Reilly Tucker Siemens
593 1 Reilly Tucker Siemens
594 1 Rakessh Roshan
594 1 Rakessh Roshan
595 1 Piers Titus van der Torren
595 1 Piers Titus van der Torren
596 1 PhanatosZou
596 1 PhanatosZou
597 1 Pavel Safronov
597 1 Pavel Safronov
598 1 Paulo S. Costa
598 1 Paulo S. Costa
599 1 Paul McCarthy
599 1 Paul McCarthy
600 1 NotWearingPants
600 1 NotWearingPants
601 1 Naelson Douglas
601 1 Naelson Douglas
602 1 Michael Tiemann
602 1 Michael Tiemann
603 1 Matt Wozniski
603 1 Matt Wozniski
604 1 Markus Wageringel
604 1 Markus Wageringel
605 1 Marcus Wirtz
605 1 Marcus Wirtz
606 1 Marcio Mazza
606 1 Marcio Mazza
607 1 LumΓ­r 'Frenzy' Balhar
607 1 LumΓ­r 'Frenzy' Balhar
608 1 Lightyagami1
608 1 Lightyagami1
609 1 Leon Anavi
609 1 Leon Anavi
610 1 LeafyLi
610 1 LeafyLi
611 1 L0uisJ0shua
611 1 L0uisJ0shua
612 1 Kyle Cutler
612 1 Kyle Cutler
613 1 Krzysztof Cybulski
613 1 Krzysztof Cybulski
614 1 Kevin Kirsche
614 1 Kevin Kirsche
615 1 KIU Shueng Chuan
615 1 KIU Shueng Chuan
616 1 Jonathan Slenders
616 1 Jonathan Slenders
617 1 Jay Qi
617 1 Jay Qi
618 1 Jake VanderPlas
618 1 Jake VanderPlas
619 1 Iwan Briquemont
619 1 Iwan Briquemont
620 1 Hussaina Begum Nandyala
620 1 Hussaina Begum Nandyala
621 1 Gordon Ball
621 1 Gordon Ball
622 1 Gabriel Simonetto
622 1 Gabriel Simonetto
623 1 Frank Tobia
623 1 Frank Tobia
624 1 Erik
624 1 Erik
625 1 Elliott Sales de Andrade
625 1 Elliott Sales de Andrade
626 1 Daniel Hahler
626 1 Daniel Hahler
627 1 Dan Green-Leipciger
627 1 Dan Green-Leipciger
628 1 Dan Green
628 1 Dan Green
629 1 Damian Yurzola
629 1 Damian Yurzola
630 1 Coon, Ethan T
630 1 Coon, Ethan T
631 1 Carol Willing
631 1 Carol Willing
632 1 Brian Lee
632 1 Brian Lee
633 1 Brendan Gerrity
633 1 Brendan Gerrity
634 1 Blake Griffin
634 1 Blake Griffin
635 1 Bastian Ebeling
635 1 Bastian Ebeling
636 1 Bartosz Telenczuk
636 1 Bartosz Telenczuk
637 1 Ankitsingh6299
637 1 Ankitsingh6299
638 1 Andrew Port
638 1 Andrew Port
639 1 Andrew J. Hesford
639 1 Andrew J. Hesford
640 1 Albert Zhang
640 1 Albert Zhang
641 1 Adam Johnson
641 1 Adam Johnson
642
642
643 This does not, of course, represent non-code contributions, for which we are also grateful.
643 This does not, of course, represent non-code contributions, for which we are also grateful.
644
644
645
645
646 API Changes using Frappuccino
646 API Changes using Frappuccino
647 -----------------------------
647 -----------------------------
648
648
649 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
649 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
650
650
651
651
652 The following items are new in IPython 8.0 ::
652 The following items are new in IPython 8.0 ::
653
653
654 + IPython.core.async_helpers.get_asyncio_loop()
654 + IPython.core.async_helpers.get_asyncio_loop()
655 + IPython.core.completer.Dict
655 + IPython.core.completer.Dict
656 + IPython.core.completer.Pattern
656 + IPython.core.completer.Pattern
657 + IPython.core.completer.Sequence
657 + IPython.core.completer.Sequence
658 + IPython.core.completer.__skip_doctest__
658 + IPython.core.completer.__skip_doctest__
659 + IPython.core.debugger.Pdb.precmd(self, line)
659 + IPython.core.debugger.Pdb.precmd(self, line)
660 + IPython.core.debugger.__skip_doctest__
660 + IPython.core.debugger.__skip_doctest__
661 + IPython.core.display.__getattr__(name)
661 + IPython.core.display.__getattr__(name)
662 + IPython.core.display.warn
662 + IPython.core.display.warn
663 + IPython.core.display_functions
663 + IPython.core.display_functions
664 + IPython.core.display_functions.DisplayHandle
664 + IPython.core.display_functions.DisplayHandle
665 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
665 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
666 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
666 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
667 + IPython.core.display_functions.__all__
667 + IPython.core.display_functions.__all__
668 + IPython.core.display_functions.__builtins__
668 + IPython.core.display_functions.__builtins__
669 + IPython.core.display_functions.__cached__
669 + IPython.core.display_functions.__cached__
670 + IPython.core.display_functions.__doc__
670 + IPython.core.display_functions.__doc__
671 + IPython.core.display_functions.__file__
671 + IPython.core.display_functions.__file__
672 + IPython.core.display_functions.__loader__
672 + IPython.core.display_functions.__loader__
673 + IPython.core.display_functions.__name__
673 + IPython.core.display_functions.__name__
674 + IPython.core.display_functions.__package__
674 + IPython.core.display_functions.__package__
675 + IPython.core.display_functions.__spec__
675 + IPython.core.display_functions.__spec__
676 + IPython.core.display_functions.b2a_hex
676 + IPython.core.display_functions.b2a_hex
677 + IPython.core.display_functions.clear_output(wait=False)
677 + IPython.core.display_functions.clear_output(wait=False)
678 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
678 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
679 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
679 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
680 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
680 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
681 + IPython.core.extensions.BUILTINS_EXTS
681 + IPython.core.extensions.BUILTINS_EXTS
682 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
682 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
683 + IPython.core.interactiveshell.Callable
683 + IPython.core.interactiveshell.Callable
684 + IPython.core.interactiveshell.__annotations__
684 + IPython.core.interactiveshell.__annotations__
685 + IPython.core.ultratb.List
685 + IPython.core.ultratb.List
686 + IPython.core.ultratb.Tuple
686 + IPython.core.ultratb.Tuple
687 + IPython.lib.pretty.CallExpression
687 + IPython.lib.pretty.CallExpression
688 + IPython.lib.pretty.CallExpression.factory(name)
688 + IPython.lib.pretty.CallExpression.factory(name)
689 + IPython.lib.pretty.RawStringLiteral
689 + IPython.lib.pretty.RawStringLiteral
690 + IPython.lib.pretty.RawText
690 + IPython.lib.pretty.RawText
691 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
691 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
692 + IPython.terminal.embed.Set
692 + IPython.terminal.embed.Set
693
693
694 The following items have been removed (or moved to superclass)::
694 The following items have been removed (or moved to superclass)::
695
695
696 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
696 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
697 - IPython.core.completer.Sentinel
697 - IPython.core.completer.Sentinel
698 - IPython.core.completer.skip_doctest
698 - IPython.core.completer.skip_doctest
699 - IPython.core.debugger.Tracer
699 - IPython.core.debugger.Tracer
700 - IPython.core.display.DisplayHandle
700 - IPython.core.display.DisplayHandle
701 - IPython.core.display.DisplayHandle.display
701 - IPython.core.display.DisplayHandle.display
702 - IPython.core.display.DisplayHandle.update
702 - IPython.core.display.DisplayHandle.update
703 - IPython.core.display.b2a_hex
703 - IPython.core.display.b2a_hex
704 - IPython.core.display.clear_output
704 - IPython.core.display.clear_output
705 - IPython.core.display.display
705 - IPython.core.display.display
706 - IPython.core.display.publish_display_data
706 - IPython.core.display.publish_display_data
707 - IPython.core.display.update_display
707 - IPython.core.display.update_display
708 - IPython.core.excolors.Deprec
708 - IPython.core.excolors.Deprec
709 - IPython.core.excolors.ExceptionColors
709 - IPython.core.excolors.ExceptionColors
710 - IPython.core.history.warn
710 - IPython.core.history.warn
711 - IPython.core.hooks.late_startup_hook
711 - IPython.core.hooks.late_startup_hook
712 - IPython.core.hooks.pre_run_code_hook
712 - IPython.core.hooks.pre_run_code_hook
713 - IPython.core.hooks.shutdown_hook
713 - IPython.core.hooks.shutdown_hook
714 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
714 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
715 - IPython.core.interactiveshell.InteractiveShell.init_readline
715 - IPython.core.interactiveshell.InteractiveShell.init_readline
716 - IPython.core.interactiveshell.InteractiveShell.write
716 - IPython.core.interactiveshell.InteractiveShell.write
717 - IPython.core.interactiveshell.InteractiveShell.write_err
717 - IPython.core.interactiveshell.InteractiveShell.write_err
718 - IPython.core.interactiveshell.get_default_colors
718 - IPython.core.interactiveshell.get_default_colors
719 - IPython.core.interactiveshell.removed_co_newlocals
719 - IPython.core.interactiveshell.removed_co_newlocals
720 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
720 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
721 - IPython.core.magics.script.PIPE
721 - IPython.core.magics.script.PIPE
722 - IPython.core.prefilter.PrefilterManager.init_transformers
722 - IPython.core.prefilter.PrefilterManager.init_transformers
723 - IPython.core.release.classifiers
723 - IPython.core.release.classifiers
724 - IPython.core.release.description
724 - IPython.core.release.description
725 - IPython.core.release.keywords
725 - IPython.core.release.keywords
726 - IPython.core.release.long_description
726 - IPython.core.release.long_description
727 - IPython.core.release.name
727 - IPython.core.release.name
728 - IPython.core.release.platforms
728 - IPython.core.release.platforms
729 - IPython.core.release.url
729 - IPython.core.release.url
730 - IPython.core.ultratb.VerboseTB.format_records
730 - IPython.core.ultratb.VerboseTB.format_records
731 - IPython.core.ultratb.find_recursion
731 - IPython.core.ultratb.find_recursion
732 - IPython.core.ultratb.findsource
732 - IPython.core.ultratb.findsource
733 - IPython.core.ultratb.fix_frame_records_filenames
733 - IPython.core.ultratb.fix_frame_records_filenames
734 - IPython.core.ultratb.inspect_error
734 - IPython.core.ultratb.inspect_error
735 - IPython.core.ultratb.is_recursion_error
735 - IPython.core.ultratb.is_recursion_error
736 - IPython.core.ultratb.with_patch_inspect
736 - IPython.core.ultratb.with_patch_inspect
737 - IPython.external.__all__
737 - IPython.external.__all__
738 - IPython.external.__builtins__
738 - IPython.external.__builtins__
739 - IPython.external.__cached__
739 - IPython.external.__cached__
740 - IPython.external.__doc__
740 - IPython.external.__doc__
741 - IPython.external.__file__
741 - IPython.external.__file__
742 - IPython.external.__loader__
742 - IPython.external.__loader__
743 - IPython.external.__name__
743 - IPython.external.__name__
744 - IPython.external.__package__
744 - IPython.external.__package__
745 - IPython.external.__path__
745 - IPython.external.__path__
746 - IPython.external.__spec__
746 - IPython.external.__spec__
747 - IPython.kernel.KernelConnectionInfo
747 - IPython.kernel.KernelConnectionInfo
748 - IPython.kernel.__builtins__
748 - IPython.kernel.__builtins__
749 - IPython.kernel.__cached__
749 - IPython.kernel.__cached__
750 - IPython.kernel.__warningregistry__
750 - IPython.kernel.__warningregistry__
751 - IPython.kernel.pkg
751 - IPython.kernel.pkg
752 - IPython.kernel.protocol_version
752 - IPython.kernel.protocol_version
753 - IPython.kernel.protocol_version_info
753 - IPython.kernel.protocol_version_info
754 - IPython.kernel.src
754 - IPython.kernel.src
755 - IPython.kernel.version_info
755 - IPython.kernel.version_info
756 - IPython.kernel.warn
756 - IPython.kernel.warn
757 - IPython.lib.backgroundjobs
757 - IPython.lib.backgroundjobs
758 - IPython.lib.backgroundjobs.BackgroundJobBase
758 - IPython.lib.backgroundjobs.BackgroundJobBase
759 - IPython.lib.backgroundjobs.BackgroundJobBase.run
759 - IPython.lib.backgroundjobs.BackgroundJobBase.run
760 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
760 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
761 - IPython.lib.backgroundjobs.BackgroundJobExpr
761 - IPython.lib.backgroundjobs.BackgroundJobExpr
762 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
762 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
763 - IPython.lib.backgroundjobs.BackgroundJobFunc
763 - IPython.lib.backgroundjobs.BackgroundJobFunc
764 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
764 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
765 - IPython.lib.backgroundjobs.BackgroundJobManager
765 - IPython.lib.backgroundjobs.BackgroundJobManager
766 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
766 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
767 - IPython.lib.backgroundjobs.BackgroundJobManager.new
767 - IPython.lib.backgroundjobs.BackgroundJobManager.new
768 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
768 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
769 - IPython.lib.backgroundjobs.BackgroundJobManager.result
769 - IPython.lib.backgroundjobs.BackgroundJobManager.result
770 - IPython.lib.backgroundjobs.BackgroundJobManager.status
770 - IPython.lib.backgroundjobs.BackgroundJobManager.status
771 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
771 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
772 - IPython.lib.backgroundjobs.__builtins__
772 - IPython.lib.backgroundjobs.__builtins__
773 - IPython.lib.backgroundjobs.__cached__
773 - IPython.lib.backgroundjobs.__cached__
774 - IPython.lib.backgroundjobs.__doc__
774 - IPython.lib.backgroundjobs.__doc__
775 - IPython.lib.backgroundjobs.__file__
775 - IPython.lib.backgroundjobs.__file__
776 - IPython.lib.backgroundjobs.__loader__
776 - IPython.lib.backgroundjobs.__loader__
777 - IPython.lib.backgroundjobs.__name__
777 - IPython.lib.backgroundjobs.__name__
778 - IPython.lib.backgroundjobs.__package__
778 - IPython.lib.backgroundjobs.__package__
779 - IPython.lib.backgroundjobs.__spec__
779 - IPython.lib.backgroundjobs.__spec__
780 - IPython.lib.kernel.__builtins__
780 - IPython.lib.kernel.__builtins__
781 - IPython.lib.kernel.__cached__
781 - IPython.lib.kernel.__cached__
782 - IPython.lib.kernel.__doc__
782 - IPython.lib.kernel.__doc__
783 - IPython.lib.kernel.__file__
783 - IPython.lib.kernel.__file__
784 - IPython.lib.kernel.__loader__
784 - IPython.lib.kernel.__loader__
785 - IPython.lib.kernel.__name__
785 - IPython.lib.kernel.__name__
786 - IPython.lib.kernel.__package__
786 - IPython.lib.kernel.__package__
787 - IPython.lib.kernel.__spec__
787 - IPython.lib.kernel.__spec__
788 - IPython.lib.kernel.__warningregistry__
788 - IPython.lib.kernel.__warningregistry__
789 - IPython.paths.fs_encoding
789 - IPython.paths.fs_encoding
790 - IPython.terminal.debugger.DEFAULT_BUFFER
790 - IPython.terminal.debugger.DEFAULT_BUFFER
791 - IPython.terminal.debugger.cursor_in_leading_ws
791 - IPython.terminal.debugger.cursor_in_leading_ws
792 - IPython.terminal.debugger.emacs_insert_mode
792 - IPython.terminal.debugger.emacs_insert_mode
793 - IPython.terminal.debugger.has_selection
793 - IPython.terminal.debugger.has_selection
794 - IPython.terminal.debugger.vi_insert_mode
794 - IPython.terminal.debugger.vi_insert_mode
795 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
795 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
796 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
796 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
797 - IPython.testing.test
797 - IPython.testing.test
798 - IPython.utils.contexts.NoOpContext
798 - IPython.utils.contexts.NoOpContext
799 - IPython.utils.io.IOStream
799 - IPython.utils.io.IOStream
800 - IPython.utils.io.IOStream.close
800 - IPython.utils.io.IOStream.close
801 - IPython.utils.io.IOStream.write
801 - IPython.utils.io.IOStream.write
802 - IPython.utils.io.IOStream.writelines
802 - IPython.utils.io.IOStream.writelines
803 - IPython.utils.io.__warningregistry__
803 - IPython.utils.io.__warningregistry__
804 - IPython.utils.io.atomic_writing
804 - IPython.utils.io.atomic_writing
805 - IPython.utils.io.stderr
805 - IPython.utils.io.stderr
806 - IPython.utils.io.stdin
806 - IPython.utils.io.stdin
807 - IPython.utils.io.stdout
807 - IPython.utils.io.stdout
808 - IPython.utils.io.unicode_std_stream
808 - IPython.utils.io.unicode_std_stream
809 - IPython.utils.path.get_ipython_cache_dir
809 - IPython.utils.path.get_ipython_cache_dir
810 - IPython.utils.path.get_ipython_dir
810 - IPython.utils.path.get_ipython_dir
811 - IPython.utils.path.get_ipython_module_path
811 - IPython.utils.path.get_ipython_module_path
812 - IPython.utils.path.get_ipython_package_dir
812 - IPython.utils.path.get_ipython_package_dir
813 - IPython.utils.path.locate_profile
813 - IPython.utils.path.locate_profile
814 - IPython.utils.path.unquote_filename
814 - IPython.utils.path.unquote_filename
815 - IPython.utils.py3compat.PY2
815 - IPython.utils.py3compat.PY2
816 - IPython.utils.py3compat.PY3
816 - IPython.utils.py3compat.PY3
817 - IPython.utils.py3compat.buffer_to_bytes
817 - IPython.utils.py3compat.buffer_to_bytes
818 - IPython.utils.py3compat.builtin_mod_name
818 - IPython.utils.py3compat.builtin_mod_name
819 - IPython.utils.py3compat.cast_bytes
819 - IPython.utils.py3compat.cast_bytes
820 - IPython.utils.py3compat.getcwd
820 - IPython.utils.py3compat.getcwd
821 - IPython.utils.py3compat.isidentifier
821 - IPython.utils.py3compat.isidentifier
822 - IPython.utils.py3compat.u_format
822 - IPython.utils.py3compat.u_format
823
823
824 The following signatures differ between 7.x and 8.0::
824 The following signatures differ between 7.x and 8.0::
825
825
826 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
826 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
827 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
827 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
828
828
829 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
829 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
830 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
830 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
831
831
832 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
832 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
833 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
833 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
834
834
835 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
835 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
836 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
836 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
837
837
838 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
838 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
839 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
839 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
840
840
841 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
841 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
842 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
842 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
843
843
844 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
844 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
845 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
845 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
846
846
847 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
847 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
848 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
848 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
849
849
850 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
850 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
851 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
851 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
852
852
853 - IPython.terminal.embed.embed(**kwargs)
853 - IPython.terminal.embed.embed(**kwargs)
854 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
854 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
855
855
856 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
856 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
857 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
857 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
858
858
859 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
859 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
860 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
860 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
861
861
862 - IPython.utils.path.get_py_filename(name, force_win32='None')
862 - IPython.utils.path.get_py_filename(name, force_win32='None')
863 + IPython.utils.path.get_py_filename(name)
863 + IPython.utils.path.get_py_filename(name)
864
864
865 The following are new attributes (that might be inherited)::
865 The following are new attributes (that might be inherited)::
866
866
867 + IPython.core.completer.IPCompleter.unicode_names
867 + IPython.core.completer.IPCompleter.unicode_names
868 + IPython.core.debugger.InterruptiblePdb.precmd
868 + IPython.core.debugger.InterruptiblePdb.precmd
869 + IPython.core.debugger.Pdb.precmd
869 + IPython.core.debugger.Pdb.precmd
870 + IPython.core.ultratb.AutoFormattedTB.has_colors
870 + IPython.core.ultratb.AutoFormattedTB.has_colors
871 + IPython.core.ultratb.ColorTB.has_colors
871 + IPython.core.ultratb.ColorTB.has_colors
872 + IPython.core.ultratb.FormattedTB.has_colors
872 + IPython.core.ultratb.FormattedTB.has_colors
873 + IPython.core.ultratb.ListTB.has_colors
873 + IPython.core.ultratb.ListTB.has_colors
874 + IPython.core.ultratb.SyntaxTB.has_colors
874 + IPython.core.ultratb.SyntaxTB.has_colors
875 + IPython.core.ultratb.TBTools.has_colors
875 + IPython.core.ultratb.TBTools.has_colors
876 + IPython.core.ultratb.VerboseTB.has_colors
876 + IPython.core.ultratb.VerboseTB.has_colors
877 + IPython.terminal.debugger.TerminalPdb.do_interact
877 + IPython.terminal.debugger.TerminalPdb.do_interact
878 + IPython.terminal.debugger.TerminalPdb.precmd
878 + IPython.terminal.debugger.TerminalPdb.precmd
879
879
880 The following attribute/methods have been removed::
880 The following attribute/methods have been removed::
881
881
882 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
882 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
883 - IPython.core.ultratb.AutoFormattedTB.format_records
883 - IPython.core.ultratb.AutoFormattedTB.format_records
884 - IPython.core.ultratb.ColorTB.format_records
884 - IPython.core.ultratb.ColorTB.format_records
885 - IPython.core.ultratb.FormattedTB.format_records
885 - IPython.core.ultratb.FormattedTB.format_records
886 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
886 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
887 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
887 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
888 - IPython.terminal.embed.InteractiveShellEmbed.write
888 - IPython.terminal.embed.InteractiveShellEmbed.write
889 - IPython.terminal.embed.InteractiveShellEmbed.write_err
889 - IPython.terminal.embed.InteractiveShellEmbed.write_err
890 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
890 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
891 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
891 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
892 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
892 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
893 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
893 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
894 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
894 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
895 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
895 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
896 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
896 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
897 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
897 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
General Comments 0
You need to be logged in to leave comments. Login now