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