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