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