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