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