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