##// END OF EJS Templates
Whats new 8.24 (#14419)
M Bussonnier -
r28739:fade2b58 merge
parent child Browse files
Show More
@@ -1,2237 +1,2268 b''
1 ============
1 ============
2 8.x Series
2 8.x Series
3 ============
3 ============
4
4
5 .. _version 8.24:
6
7 IPython 8.24
8 ============
9
10 Back on regular release schedule, as usual month releases are relatively tiny.
11
12 The biggest change is the move of the matplotlib backend handling from IPython
13 to matplotlib. :ghpull:`14371`:ghpull:`14403`.
14
15 We will note:
16
17 - pytest 8 compatibility :ghpull:`14413`
18 - ``typing-extension`` now needs 4.6 or newer. It was already the case, but not
19 explicated. :ghpull:`14380`
20 - Attempt to speed running code under debugger in some cases. :ghpull:`14386`
21 :ghpull:`14418`.
22 - Multiple fixes to documentation for ipyparallel, simple_prompt and emacs
23 :ghpull:`14384` :ghpull:`14404` :ghpull:`14407`
24 - Maintenance and cleanup of debugger :ghpull:`14387` :ghpull:`14393`
25
26 As usual you can find the full list of PRs on GitHub under `the 8.24
27 <https://github.com/ipython/ipython/milestone/131?closed=1>`__ milestone.
28
29 Thanks
30 ------
31
32 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
33 work on IPython and related libraries.
34
35
5 .. _version 8.23:
36 .. _version 8.23:
6
37
7 IPython 8.23
38 IPython 8.23
8 ============
39 ============
9
40
10 Super tiny release of IPython on Sunday – a bit later than usual, which is also
41 Super tiny release of IPython on Sunday – a bit later than usual, which is also
11 `πŸ³οΈβ€βš§οΈ International Transgender Day of VisibilityπŸ³οΈβ€βš§οΈ
42 `πŸ³οΈβ€βš§οΈ International Transgender Day of VisibilityπŸ³οΈβ€βš§οΈ
12 <https://en.wikipedia.org/wiki/International_Transgender_Day_of_Visibility>`_ –
43 <https://en.wikipedia.org/wiki/International_Transgender_Day_of_Visibility>`_ –
13 so a though for you on this day, you matter and you are valid [1]_.
44 so a though for you on this day, you matter and you are valid [1]_.
14
45
15 This is a minuscule release with only 5 Pull requests.
46 This is a minuscule release with only 5 Pull requests.
16
47
17 Main change is :ghpull:`14357` which improve inference from return type
48 Main change is :ghpull:`14357` which improve inference from return type
18 annotations in completer and the introduction of the optional target
49 annotations in completer and the introduction of the optional target
19 ``ipython[matplotlib]`` to explicitly request the matplotlib optional
50 ``ipython[matplotlib]`` to explicitly request the matplotlib optional
20 dependencies.
51 dependencies.
21
52
22 As usual you can find the full list of PRs on GitHub under `the 8.23
53 As usual you can find the full list of PRs on GitHub under `the 8.23
23 <https://github.com/ipython/ipython/milestone/130?closed=1>`__ milestone.
54 <https://github.com/ipython/ipython/milestone/130?closed=1>`__ milestone.
24
55
25 Thanks
56 Thanks
26 ------
57 ------
27
58
28 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
59 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
29 work on IPython and related libraries.
60 work on IPython and related libraries.
30
61
31
62
32 .. _version 8.22:
63 .. _version 8.22:
33
64
34 IPython 8.22, 8.22.1 and 8.22.2
65 IPython 8.22, 8.22.1 and 8.22.2
35 ===============================
66 ===============================
36
67
37 Quick release of IPython for this short month of February, with quite a bit of
68 Quick release of IPython for this short month of February, with quite a bit of
38 activity with more than 15 PRs.
69 activity with more than 15 PRs.
39
70
40 I am not going to details all the changes, but among other we have :
71 I am not going to details all the changes, but among other we have :
41
72
42 - More compatibility with emscripten :ghpull:`14316`, :ghpull:`14318`,
73 - More compatibility with emscripten :ghpull:`14316`, :ghpull:`14318`,
43 - Test more downstream project to avoid breakage :ghpull:`14317`
74 - Test more downstream project to avoid breakage :ghpull:`14317`
44 - Fix recently introduced bug with the ``store`` magic.
75 - Fix recently introduced bug with the ``store`` magic.
45 - Fix issues with multiple call to ``matplotlib.pyplot.switch_backend``
76 - Fix issues with multiple call to ``matplotlib.pyplot.switch_backend``
46 - Fix crashing IPython when some tracebacks encounter dynamically evaluated
77 - Fix crashing IPython when some tracebacks encounter dynamically evaluated
47 code.
78 code.
48
79
49 IPython 8.22.1 increase the minimal traitlets version, and 8.22.2 fix a critical
80 IPython 8.22.1 increase the minimal traitlets version, and 8.22.2 fix a critical
50 bug on emscripten preventing to use some magics like ``%matplotlib`` on
81 bug on emscripten preventing to use some magics like ``%matplotlib`` on
51 jupyter-light.
82 jupyter-light.
52
83
53 API changes
84 API changes
54 -----------
85 -----------
55
86
56 One of the largest change is the update the mimehooks and inspector API, see
87 One of the largest change is the update the mimehooks and inspector API, see
57 :ghpull:`14342`. It should be backward compatible, but many hooks now receive a
88 :ghpull:`14342`. It should be backward compatible, but many hooks now receive a
58 single object with many fields allowing us flexibility to update the API later.
89 single object with many fields allowing us flexibility to update the API later.
59
90
60
91
61 Packaging changes
92 Packaging changes
62 -----------------
93 -----------------
63
94
64 Thanks to `@mkoppe <https://github.com/mkoeppe>`__, we are slowly getting rid of
95 Thanks to `@mkoppe <https://github.com/mkoeppe>`__, we are slowly getting rid of
65 setup.py finally migrating to ``pyproject.toml``. There is still quite a bit of
96 setup.py finally migrating to ``pyproject.toml``. There is still quite a bit of
66 work, and please open an issue if you encounter any problem.
97 work, and please open an issue if you encounter any problem.
67
98
68
99
69 Deprecation
100 Deprecation
70 -----------
101 -----------
71
102
72 A number of unused functions have been marked deprecated or pending deprecation.
103 A number of unused functions have been marked deprecated or pending deprecation.
73 Please let us know if you encounter any of those deprecation messages for us to
104 Please let us know if you encounter any of those deprecation messages for us to
74 adjust the removal timeline.
105 adjust the removal timeline.
75
106
76
107
77 Thanks
108 Thanks
78 ------
109 ------
79
110
80 Many thanks to `@mkoppe <https://github.com/mkoeppe>`__ and `@krassowski
111 Many thanks to `@mkoppe <https://github.com/mkoeppe>`__ and `@krassowski
81 <https://github.com/krassowski>`__ for their multiple contributions and codebase
112 <https://github.com/krassowski>`__ for their multiple contributions and codebase
82 cleanup.
113 cleanup.
83
114
84 As usual you can find the full list of PRs on GitHub under `the 8.22
115 As usual you can find the full list of PRs on GitHub under `the 8.22
85 <https://github.com/ipython/ipython/milestone/129?closed=1>`__ milestone.
116 <https://github.com/ipython/ipython/milestone/129?closed=1>`__ milestone.
86
117
87 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
118 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
88 work on IPython and related libraries.
119 work on IPython and related libraries.
89
120
90
121
91 .. _version 8.21:
122 .. _version 8.21:
92
123
93 IPython 8.21
124 IPython 8.21
94 ------------
125 ------------
95
126
96 More substantial release of IPython slightly out of schedule as it was not
127 More substantial release of IPython slightly out of schedule as it was not
97 possible for me to make a release last Friday.
128 possible for me to make a release last Friday.
98
129
99 Few new features are present, but the codebase has been cleaned, and a couple
130 Few new features are present, but the codebase has been cleaned, and a couple
100 of API are _considered_ for deprecation. They are not deprecated yet, but as
131 of API are _considered_ for deprecation. They are not deprecated yet, but as
101 they do not seem to be quite used, they may emit a warning, in which case please
132 they do not seem to be quite used, they may emit a warning, in which case please
102 comment on the relevant issue to inform me of _which_ project use those feature
133 comment on the relevant issue to inform me of _which_ project use those feature
103 and how you use them. Depending on the feedback I might change the timeline for
134 and how you use them. Depending on the feedback I might change the timeline for
104 deprecation.
135 deprecation.
105
136
106 This release saw 14 PRs, with more outside contribution than usual,
137 This release saw 14 PRs, with more outside contribution than usual,
107 I'll note in particular PRs related to making IPython work on emscripten.
138 I'll note in particular PRs related to making IPython work on emscripten.
108
139
109 I also want to point that we are _trying_ to keep compatibility with Python 3.13,
140 I also want to point that we are _trying_ to keep compatibility with Python 3.13,
110 but it's a cat and mouse game. Plus I am low on time, so I would appreciate any
141 but it's a cat and mouse game. Plus I am low on time, so I would appreciate any
111 help with that.
142 help with that.
112
143
113 Deprecations
144 Deprecations
114 ~~~~~~~~~~~~
145 ~~~~~~~~~~~~
115
146
116 - :ghpull:`14307` Pending Deprecation of
147 - :ghpull:`14307` Pending Deprecation of
117 ``ColorSchemeTable.set_active_scheme(...)``'s ``case_sensitive`` Parameter.
148 ``ColorSchemeTable.set_active_scheme(...)``'s ``case_sensitive`` Parameter.
118 - :ghpull:`14305` Pending Deprecation of constructing ``ColorScheme`` via
149 - :ghpull:`14305` Pending Deprecation of constructing ``ColorScheme`` via
119 ``kwargs``, in favor passing a single dict.
150 ``kwargs``, in favor passing a single dict.
120
151
121
152
122 Fixes
153 Fixes
123 ~~~~~
154 ~~~~~
124
155
125 - :ghpull:`14284` TerminalIPythonApp's would warn that ``auto_create`` option is not
156 - :ghpull:`14284` TerminalIPythonApp's would warn that ``auto_create`` option is not
126 recognized.
157 recognized.
127 - :ghpull:`14286` Fix a crash with ``NotOneValueFound`` when rendering complex
158 - :ghpull:`14286` Fix a crash with ``NotOneValueFound`` when rendering complex
128 tracebacks.
159 tracebacks.
129
160
130 - :ghpull:`14287` Partial Python 3.13 compatibility
161 - :ghpull:`14287` Partial Python 3.13 compatibility
131 - :ghpull:`14290` Docs/Typos.
162 - :ghpull:`14290` Docs/Typos.
132
163
133 Changes
164 Changes
134 ~~~~~~~
165 ~~~~~~~
135
166
136 - :ghpull:`14289` ``ipdb.set_trace()`` now accepts ``header=`` for better
167 - :ghpull:`14289` ``ipdb.set_trace()`` now accepts ``header=`` for better
137 compatibility with ``pdb.set_trace()``
168 compatibility with ``pdb.set_trace()``
138
169
139 - :ghpull:`14300` and :ghpull:`14301` Add hooking ability to produce
170 - :ghpull:`14300` and :ghpull:`14301` Add hooking ability to produce
140 mimebundle.
171 mimebundle.
141
172
142 We'll outline :ghpull:`14300`, it is now possible to extend the ``?/??``
173 We'll outline :ghpull:`14300`, it is now possible to extend the ``?/??``
143 operator to return more mimetypes to render richer help in frontends that
174 operator to return more mimetypes to render richer help in frontends that
144 support it. In particular you could send a json representation of the help that
175 support it. In particular you could send a json representation of the help that
145 could be displayed in a customizable way.
176 could be displayed in a customizable way.
146
177
147 Miscellaneous
178 Miscellaneous
148 ~~~~~~~~~~~~~
179 ~~~~~~~~~~~~~
149
180
150 - :ghpull:`14291` Misc Refactor of Color handling
181 - :ghpull:`14291` Misc Refactor of Color handling
151 - :ghpull:`14295` Misc test skip on problematic Pypy versions.
182 - :ghpull:`14295` Misc test skip on problematic Pypy versions.
152
183
153
184
154 Thanks
185 Thanks
155 ~~~~~~
186 ~~~~~~
156
187
157 Special thanks to all our contributors, and to the Pypy team that was extremely
188 Special thanks to all our contributors, and to the Pypy team that was extremely
158 reactive in helping to investigate a fixing a rare unicode+windows bug.
189 reactive in helping to investigate a fixing a rare unicode+windows bug.
159
190
160 As usual you can find the full list of PRs on GitHub under `the 8.21
191 As usual you can find the full list of PRs on GitHub under `the 8.21
161 <https://github.com/ipython/ipython/milestone/128?closed=1>`__ milestone.
192 <https://github.com/ipython/ipython/milestone/128?closed=1>`__ milestone.
162
193
163 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
194 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
164 work on IPython and related libraries.
195 work on IPython and related libraries.
165
196
166
197
167 .. _version 8.20:
198 .. _version 8.20:
168
199
169 IPython 8.20
200 IPython 8.20
170 ------------
201 ------------
171
202
172 Quick IPython release in this beginning of 2024, barely 2 weeks after the previous
203 Quick IPython release in this beginning of 2024, barely 2 weeks after the previous
173 release.
204 release.
174
205
175 This is mostly to fix a backward compatibility issue, I would have done a patch
206 This is mostly to fix a backward compatibility issue, I would have done a patch
176 release earlier if I could. As a few other cleanup are also part of this
207 release earlier if I could. As a few other cleanup are also part of this
177 release, this will get a minor version bump.
208 release, this will get a minor version bump.
178
209
179
210
180 The crux of this release is :ghpull:`14274` (Inspect continuation prompt
211 The crux of this release is :ghpull:`14274` (Inspect continuation prompt
181 signature and pass only viable arguments), the rest of the changes are mostly
212 signature and pass only viable arguments), the rest of the changes are mostly
182 type annotation, and a few compatibility issues with Python 3.13 that are
213 type annotation, and a few compatibility issues with Python 3.13 that are
183 getting addressed.
214 getting addressed.
184
215
185 Python 3.13 compatibility is still not complete (help welcomed).
216 Python 3.13 compatibility is still not complete (help welcomed).
186
217
187 As usual you can find the full list of PRs on GitHub under `the 8.20
218 As usual you can find the full list of PRs on GitHub under `the 8.20
188 <https://github.com/ipython/ipython/milestone/127?closed=1>`__ milestone.
219 <https://github.com/ipython/ipython/milestone/127?closed=1>`__ milestone.
189
220
190 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
221 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
191 work on IPython and related libraries.
222 work on IPython and related libraries.
192
223
193
224
194 .. _version 8.19:
225 .. _version 8.19:
195
226
196 IPython 8.19
227 IPython 8.19
197 ------------
228 ------------
198
229
199 New release of IPython a bit before the end of the month, and end of the year.
230 New release of IPython a bit before the end of the month, and end of the year.
200
231
201 Mostly cleanup and deprecation, due to upstream deprecation and removal.
232 Mostly cleanup and deprecation, due to upstream deprecation and removal.
202
233
203 Remove of Python 3.9 support
234 Remove of Python 3.9 support
204 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
235 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
205
236
206 A bit later than originally plan, IPython 8.19 does not support Python 3.9
237 A bit later than originally plan, IPython 8.19 does not support Python 3.9
207 anymore, as well as the few conditional code that were executing only on Python
238 anymore, as well as the few conditional code that were executing only on Python
208 3.9. :ghpull:`14254`
239 3.9. :ghpull:`14254`
209
240
210 We used the opportunity to deprecate ``IPython.utils.tz`` :ghpull:`14256`, due
241 We used the opportunity to deprecate ``IPython.utils.tz`` :ghpull:`14256`, due
211 to upstream deprecation of some timezone utilities. It will be removed at a later
242 to upstream deprecation of some timezone utilities. It will be removed at a later
212 date.
243 date.
213
244
214 We now also run CI on Python 3.12 (what I likely should have done before), but
245 We now also run CI on Python 3.12 (what I likely should have done before), but
215 running on too many Python version uses a lot of CI time.
246 running on too many Python version uses a lot of CI time.
216
247
217 Absolute and relative Line Numbers in Prompts
248 Absolute and relative Line Numbers in Prompts
218 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
249 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
219
250
220 Thanks to the contribution of ``cohml``, IPython CLI now support absolute and
251 Thanks to the contribution of ``cohml``, IPython CLI now support absolute and
221 relative line numbers in both vi and emacs prompt, use for example
252 relative line numbers in both vi and emacs prompt, use for example
222 ``c.TerminalInteractiveShell.prompt_line_number_format='{line: 4d}/{rel_line:+03d} | '``
253 ``c.TerminalInteractiveShell.prompt_line_number_format='{line: 4d}/{rel_line:+03d} | '``
223 configuration option to display both in a custom format.
254 configuration option to display both in a custom format.
224
255
225 Miscellaneous
256 Miscellaneous
226 ~~~~~~~~~~~~~
257 ~~~~~~~~~~~~~
227
258
228 In addition to various bugfixes, I unpinned pytest, let me know if there are any
259 In addition to various bugfixes, I unpinned pytest, let me know if there are any
229 issues and we'll re-pin.
260 issues and we'll re-pin.
230
261
231 See you in 2024
262 See you in 2024
232 ~~~~~~~~~~~~~~~
263 ~~~~~~~~~~~~~~~
233
264
234 As usual you can find the full list of PRs on GitHub under `the 8.19
265 As usual you can find the full list of PRs on GitHub under `the 8.19
235 <https://github.com/ipython/ipython/milestone/126?closed=1>`__ milestone.
266 <https://github.com/ipython/ipython/milestone/126?closed=1>`__ milestone.
236
267
237 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
268 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
238 work on IPython and related libraries.
269 work on IPython and related libraries.
239
270
240 .. _version 8.18:
271 .. _version 8.18:
241
272
242 IPython 8.18 and 8.18.1
273 IPython 8.18 and 8.18.1
243 -----------------------
274 -----------------------
244
275
245 8.18.1 is identical to 8.18 but pin ``prompt_toolkit`` to greater than ``3.0.41``
276 8.18.1 is identical to 8.18 but pin ``prompt_toolkit`` to greater than ``3.0.41``
246
277
247 Small release of IPython that fixes a small number of inconveniences.
278 Small release of IPython that fixes a small number of inconveniences.
248
279
249 - :ghpull:`14251` Fix a memory leak in qt event loop integration by setting
280 - :ghpull:`14251` Fix a memory leak in qt event loop integration by setting
250 the Loop parent to None.
281 the Loop parent to None.
251 - :ghpull:`14252` Pickleshare was made an optional dependency in 8.17, this
282 - :ghpull:`14252` Pickleshare was made an optional dependency in 8.17, this
252 leads to warnings in some installations when using modules completions. The
283 leads to warnings in some installations when using modules completions. The
253 warning has been silenced.
284 warning has been silenced.
254 - :ghpull:`14241` Update event loop code for compatibility with more recent
285 - :ghpull:`14241` Update event loop code for compatibility with more recent
255 ``prompt_toolkit`` due to deprecations in Python 3.12.
286 ``prompt_toolkit`` due to deprecations in Python 3.12.
256 - :ghpull:`14245` Fix doc example on Pygments styles
287 - :ghpull:`14245` Fix doc example on Pygments styles
257 - :ghpull:`14238` Remove dependency on app_nope, this is actually only a
288 - :ghpull:`14238` Remove dependency on app_nope, this is actually only a
258 dependency of IPykernel.
289 dependency of IPykernel.
259
290
260 As usual you can find the full list of PRs on GitHub under `the 8.18
291 As usual you can find the full list of PRs on GitHub under `the 8.18
261 <https://github.com/ipython/ipython/milestone/125?closed=1>`__ milestone.
292 <https://github.com/ipython/ipython/milestone/125?closed=1>`__ milestone.
262
293
263 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
294 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
264 work on IPython and related libraries.
295 work on IPython and related libraries.
265
296
266 .. _version 8.17.1:
297 .. _version 8.17.1:
267 .. _version 8.17:
298 .. _version 8.17:
268
299
269 IPython 8.17, 8.17.1
300 IPython 8.17, 8.17.1
270 --------------------
301 --------------------
271
302
272 Medium-sized release of IPython that includes some cleanup (backcall, python2 leftovers)
303 Medium-sized release of IPython that includes some cleanup (backcall, python2 leftovers)
273 and some refactoring improvements (typing, pathlib) and a fix on completion.
304 and some refactoring improvements (typing, pathlib) and a fix on completion.
274
305
275 - :ghpull:`14216` remove backcall dependency
306 - :ghpull:`14216` remove backcall dependency
276 - :ghpull:`14217` make pickleshare dependency optional
307 - :ghpull:`14217` make pickleshare dependency optional
277 - :ghpull:`14185` support completion based on type annotations of calls
308 - :ghpull:`14185` support completion based on type annotations of calls
278
309
279 Reverted in 8.17.1:
310 Reverted in 8.17.1:
280
311
281 - :ghpull:`14190` remove support for python 2 in lexers (reverted in 8.17.1 as it is imported by qtconsole/spyder)
312 - :ghpull:`14190` remove support for python 2 in lexers (reverted in 8.17.1 as it is imported by qtconsole/spyder)
282
313
283 Mamba and Micromamba magic
314 Mamba and Micromamba magic
284 ~~~~~~~~~~~~~~~~~~~~~~~~~~
315 ~~~~~~~~~~~~~~~~~~~~~~~~~~
285
316
286 In addition to the conda command to manage conda environment, mamba and
317 In addition to the conda command to manage conda environment, mamba and
287 micromamba can now be used using the corresponding magic in IPython.
318 micromamba can now be used using the corresponding magic in IPython.
288 Since these commands are compatible with conda, they are following the
319 Since these commands are compatible with conda, they are following the
289 same logic.
320 same logic.
290
321
291 These two magic require to have the corresponding commands available
322 These two magic require to have the corresponding commands available
292 either in the conda environment or system wide.
323 either in the conda environment or system wide.
293
324
294 :ghpull:`14191`
325 :ghpull:`14191`
295
326
296 ----
327 ----
297
328
298 As usual you can find the full list of PRs on GitHub under `the 8.17
329 As usual you can find the full list of PRs on GitHub under `the 8.17
299 <https://github.com/ipython/ipython/milestone/123?closed=1>`__ milestone.
330 <https://github.com/ipython/ipython/milestone/123?closed=1>`__ milestone.
300
331
301 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
332 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
302 work on IPython and related libraries.
333 work on IPython and related libraries.
303
334
304 .. _version 8.16:
335 .. _version 8.16:
305 .. _version 8.16.1:
336 .. _version 8.16.1:
306
337
307 IPython 8.16, 8.16.1
338 IPython 8.16, 8.16.1
308 --------------------
339 --------------------
309
340
310 Small double release of IPython (with the 8.12.3 release notes just below).
341 Small double release of IPython (with the 8.12.3 release notes just below).
311 Mostly bug fixes and cleanups, and type annotations. Of interest for users:
342 Mostly bug fixes and cleanups, and type annotations. Of interest for users:
312
343
313 - :ghpull:`14153` Fix a bug of the new iPdb chained traceback where some
344 - :ghpull:`14153` Fix a bug of the new iPdb chained traceback where some
314 Exception would not have any traceback. (see upstream fix in CPython for more
345 Exception would not have any traceback. (see upstream fix in CPython for more
315 details).
346 details).
316 - :ghpull:`14168` Fix case with spurious message about event loops when using
347 - :ghpull:`14168` Fix case with spurious message about event loops when using
317 matplotlib.
348 matplotlib.
318
349
319 This PR is in 8.16.0 but reverted in 8.16.1, we'll rework the fix for 8.17
350 This PR is in 8.16.0 but reverted in 8.16.1, we'll rework the fix for 8.17
320
351
321 - :ghpull:`14163` Fix an error where semicolon would not suppress output.
352 - :ghpull:`14163` Fix an error where semicolon would not suppress output.
322
353
323 As usual you can find the full list of PRs on GitHub under `the 8.16
354 As usual you can find the full list of PRs on GitHub under `the 8.16
324 <https://github.com/ipython/ipython/milestone/121?closed=1>`__ and `8.16.1 milestone
355 <https://github.com/ipython/ipython/milestone/121?closed=1>`__ and `8.16.1 milestone
325 <https://github.com/ipython/ipython/milestone/124?closed=1>`__.
356 <https://github.com/ipython/ipython/milestone/124?closed=1>`__.
326
357
327 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
358 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
328 work on IPython and related libraries.
359 work on IPython and related libraries.
329
360
330 .. _version 8.12.3:
361 .. _version 8.12.3:
331
362
332 IPython 8.12.3
363 IPython 8.12.3
333 --------------
364 --------------
334
365
335 Tiny release of 8.12.3 that backport a small number of fixes for users still
366 Tiny release of 8.12.3 that backport a small number of fixes for users still
336 using Python 3.8.
367 using Python 3.8.
337
368
338 - :ghpull:`14080` add passthrough filter shortcuts
369 - :ghpull:`14080` add passthrough filter shortcuts
339 - :ghpull:`14169` Fix `InteractiveShellEmbed`
370 - :ghpull:`14169` Fix `InteractiveShellEmbed`
340
371
341 .. _version 8.15:
372 .. _version 8.15:
342
373
343 IPython 8.15
374 IPython 8.15
344 ------------
375 ------------
345
376
346 Medium release of IPython after a couple of month hiatus, and a bit
377 Medium release of IPython after a couple of month hiatus, and a bit
347 off-schedule.
378 off-schedule.
348
379
349 Among other, IPython 8.15:
380 Among other, IPython 8.15:
350
381
351 - Improve compatibility with future version of Python 3.12/3.13
382 - Improve compatibility with future version of Python 3.12/3.13
352 :ghpull:`14107`, :ghpull:`14139`,
383 :ghpull:`14107`, :ghpull:`14139`,
353 - Improve support for ``ExceptionGroups``, :ghpull:`14108`
384 - Improve support for ``ExceptionGroups``, :ghpull:`14108`
354 - Fix hangs in ``%gui osx``, :ghpull:`14125`
385 - Fix hangs in ``%gui osx``, :ghpull:`14125`
355 - Fix memory lead with ``%reset``, :ghpull:`14133`
386 - Fix memory lead with ``%reset``, :ghpull:`14133`
356 - Unstable config option to modify traceback highlighting that is sometime hard
387 - Unstable config option to modify traceback highlighting that is sometime hard
357 to read :ghpull:`14138`
388 to read :ghpull:`14138`
358 - Support ``.`` in ``ipdb`` as an argument to the ``list`` command
389 - Support ``.`` in ``ipdb`` as an argument to the ``list`` command
359 :ghpull:`14121`
390 :ghpull:`14121`
360 - Workroud ``parso`` showing warning message when the default logger level is
391 - Workroud ``parso`` showing warning message when the default logger level is
361 changed :ghpull:`14119`
392 changed :ghpull:`14119`
362 - Fix multiple issues with matplotlib interactive mode, qt5/qt6 :ghpull:`14128`
393 - Fix multiple issues with matplotlib interactive mode, qt5/qt6 :ghpull:`14128`
363
394
364 Support for PEP-678 Exception Notes
395 Support for PEP-678 Exception Notes
365 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
396 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
366
397
367 Ultratb now shows :pep:`678` notes, improving your debugging experience on
398 Ultratb now shows :pep:`678` notes, improving your debugging experience on
368 Python 3.11+ or with libraries such as Pytest and Hypothesis.
399 Python 3.11+ or with libraries such as Pytest and Hypothesis.
369
400
370 Native fallback for displaying ExceptionGroup
401 Native fallback for displaying ExceptionGroup
371 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
402 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
372 ExceptionGroups are now displayed with ``traceback.print_exc``, as a temporary fix until UltraTB properly supports displaying child exceptions.
403 ExceptionGroups are now displayed with ``traceback.print_exc``, as a temporary fix until UltraTB properly supports displaying child exceptions.
373
404
374
405
375 We have two larger features:
406 We have two larger features:
376
407
377 AST-based macros
408 AST-based macros
378 ~~~~~~~~~~~~~~~~
409 ~~~~~~~~~~~~~~~~
379
410
380 :ghpull:`14100` introduce a new and efficient way to modify each execution block
411 :ghpull:`14100` introduce a new and efficient way to modify each execution block
381 (cell) using an template-ast-based transform. Unlike IPython pre and post code
412 (cell) using an template-ast-based transform. Unlike IPython pre and post code
382 execution hooks, this actually transform the code that is execute with as
413 execution hooks, this actually transform the code that is execute with as
383 minimal as possible overhead. While it was already technically possible to
414 minimal as possible overhead. While it was already technically possible to
384 register ast transformers for IPython this was far from evident.
415 register ast transformers for IPython this was far from evident.
385
416
386 This should make it trivial to hook into IPython to implement custom hooks, that
417 This should make it trivial to hook into IPython to implement custom hooks, that
387 for example time or profile your code, catch exceptions to provide error
418 for example time or profile your code, catch exceptions to provide error
388 messages for students or do any other kind of transformations.
419 messages for students or do any other kind of transformations.
389
420
390 In addition to programmatic API there is also a magic to quickly register
421 In addition to programmatic API there is also a magic to quickly register
391 hooks::
422 hooks::
392
423
393 In [1]: %%code_wrap before_after
424 In [1]: %%code_wrap before_after
394 ...: print('before')
425 ...: print('before')
395 ...: __code__
426 ...: __code__
396 ...: print('after')
427 ...: print('after')
397 ...: __ret__
428 ...: __ret__
398
429
399 This mean that for any subsequent execution code will be executed.
430 This mean that for any subsequent execution code will be executed.
400 You can modify the above to print the date, compute the execution time,
431 You can modify the above to print the date, compute the execution time,
401 retry the code in a for loop....
432 retry the code in a for loop....
402
433
403
434
404 Allow IPdb/Pdb to move between chained exceptions
435 Allow IPdb/Pdb to move between chained exceptions
405 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
436 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
406
437
407 The main change is the addition of the ability to move between chained
438 The main change is the addition of the ability to move between chained
408 exceptions when using IPdb, this feature was also contributed to upstream Pdb
439 exceptions when using IPdb, this feature was also contributed to upstream Pdb
409 and is thus native to CPython in Python 3.13+ Though ipdb should support this
440 and is thus native to CPython in Python 3.13+ Though ipdb should support this
410 feature in older version of Python. I invite you to look at the `CPython changes
441 feature in older version of Python. I invite you to look at the `CPython changes
411 and docs <https://github.com/python/cpython/pull/106676>`__ for more details.
442 and docs <https://github.com/python/cpython/pull/106676>`__ for more details.
412
443
413 In short, once in post-mortem debugger (``%debug``), you can use the ipdb
444 In short, once in post-mortem debugger (``%debug``), you can use the ipdb
414 ``exceptions`` command to switch exceptions, for example:
445 ``exceptions`` command to switch exceptions, for example:
415
446
416 .. code-block:: ipython
447 .. code-block:: ipython
417
448
418 In [1]: def foo(x):
449 In [1]: def foo(x):
419 ...: try:
450 ...: try:
420 ...: bar(x)
451 ...: bar(x)
421 ...: except Exception as e:
452 ...: except Exception as e:
422 ...: raise ValueError("foo (): bar failed") from e
453 ...: raise ValueError("foo (): bar failed") from e
423 ...:
454 ...:
424 ...: def bar(x):
455 ...: def bar(x):
425 ...: 1 / X
456 ...: 1 / X
426 ...:
457 ...:
427
458
428 In [2]: foo(0)
459 In [2]: foo(0)
429 ---------------------------------------------------------------------------
460 ---------------------------------------------------------------------------
430 NameError Traceback (most recent call last)
461 NameError Traceback (most recent call last)
431 Cell In[1], line 3, in foo(x)
462 Cell In[1], line 3, in foo(x)
432 2 try:
463 2 try:
433 ----> 3 bar(x)
464 ----> 3 bar(x)
434 4 except Exception as e:
465 4 except Exception as e:
435
466
436 Cell In[1], line 9, in bar(x)
467 Cell In[1], line 9, in bar(x)
437 8 def bar(x):
468 8 def bar(x):
438 ----> 9 1 / X
469 ----> 9 1 / X
439
470
440 NameError: name 'X' is not defined
471 NameError: name 'X' is not defined
441
472
442 The above exception was the direct cause of the following exception:
473 The above exception was the direct cause of the following exception:
443
474
444 ValueError Traceback (most recent call last)
475 ValueError Traceback (most recent call last)
445 Cell In[2], line 1
476 Cell In[2], line 1
446 ----> 1 foo(0)
477 ----> 1 foo(0)
447
478
448 Cell In[1], line 5, in foo(x)
479 Cell In[1], line 5, in foo(x)
449 3 bar(x)
480 3 bar(x)
450 4 except Exception as e:
481 4 except Exception as e:
451 ----> 5 raise ValueError("foo (): bar failed") from e
482 ----> 5 raise ValueError("foo (): bar failed") from e
452
483
453 ValueError: foo (): bar failed
484 ValueError: foo (): bar failed
454
485
455 In [3]: %debug
486 In [3]: %debug
456 > <ipython-input-1-b0bbdc271ffb>(5)foo()
487 > <ipython-input-1-b0bbdc271ffb>(5)foo()
457 3 bar(x)
488 3 bar(x)
458 4 except Exception as e:
489 4 except Exception as e:
459 ----> 5 raise ValueError("foo (): bar failed") from e
490 ----> 5 raise ValueError("foo (): bar failed") from e
460
491
461 In previous ipdb you could not go into the bar error, now from within pdb you
492 In previous ipdb you could not go into the bar error, now from within pdb you
462 can use ``exceptions``:
493 can use ``exceptions``:
463
494
464 .. code-block:: ipython
495 .. code-block:: ipython
465
496
466 ipdb> exceptions
497 ipdb> exceptions
467 0 NameError("name 'X' is not defined")
498 0 NameError("name 'X' is not defined")
468 > 1 ValueError('foo (): bar failed')
499 > 1 ValueError('foo (): bar failed')
469
500
470 ipdb> exceptions 0
501 ipdb> exceptions 0
471 > <ipython-input-1-b0bbdc271ffb>(9)bar()
502 > <ipython-input-1-b0bbdc271ffb>(9)bar()
472 6
503 6
473 7
504 7
474 8 def bar(x):
505 8 def bar(x):
475 ----> 9 1 / X
506 ----> 9 1 / X
476 10
507 10
477
508
478 ipdb>
509 ipdb>
479
510
480 In particular I want to thank the `D.E. Shaw group <https://www.deshaw.com/>`__
511 In particular I want to thank the `D.E. Shaw group <https://www.deshaw.com/>`__
481 for suggesting and funding the two largest feature as well as many bug fixes of
512 for suggesting and funding the two largest feature as well as many bug fixes of
482 this release.
513 this release.
483
514
484 As usual you can find the full list of PRs on GitHub under `the 8.15 milestone
515 As usual you can find the full list of PRs on GitHub under `the 8.15 milestone
485 <https://github.com/ipython/ipython/milestone/120?closed=1>`__.
516 <https://github.com/ipython/ipython/milestone/120?closed=1>`__.
486
517
487
518
488
519
489 .. _version 8.14:
520 .. _version 8.14:
490
521
491 IPython 8.14
522 IPython 8.14
492 ------------
523 ------------
493
524
494 Small release of IPython.
525 Small release of IPython.
495
526
496 - :ghpull:`14080` fixes some shortcuts issues.
527 - :ghpull:`14080` fixes some shortcuts issues.
497 - :ghpull:`14056` Add option to ``%autoreload`` to hide errors when reloading code. This will be the default for spyder
528 - :ghpull:`14056` Add option to ``%autoreload`` to hide errors when reloading code. This will be the default for spyder
498 user is my understanding.
529 user is my understanding.
499 - :ghpull:`14039` (and :ghpull:`14040`) to show exception notes in tracebacks.
530 - :ghpull:`14039` (and :ghpull:`14040`) to show exception notes in tracebacks.
500
531
501 - :ghpull:`14076` Add option to EventManager to prevent printing
532 - :ghpull:`14076` Add option to EventManager to prevent printing
502
533
503
534
504 SPEC 0 and SPEC 4
535 SPEC 0 and SPEC 4
505 ~~~~~~~~~~~~~~~~~
536 ~~~~~~~~~~~~~~~~~
506
537
507 You've heard about the NEPs, (NumPy enhancement Proposal), having a NEP for something non-numpy specific was sometime confusing.
538 You've heard about the NEPs, (NumPy enhancement Proposal), having a NEP for something non-numpy specific was sometime confusing.
508 Long live the `SPECs <https://scientific-python.org/specs/>`_.
539 Long live the `SPECs <https://scientific-python.org/specs/>`_.
509
540
510 We are now trying to follow SPEC 0 (aka old NEP 29) for support of upstream libraries.
541 We are now trying to follow SPEC 0 (aka old NEP 29) for support of upstream libraries.
511
542
512 We also now try to follow SPEC 4 (test and publish nightly on a centralized nightly repository).
543 We also now try to follow SPEC 4 (test and publish nightly on a centralized nightly repository).
513 We encourage you to do so as well in order to report breakage, and contribute to the SPEC process !
544 We encourage you to do so as well in order to report breakage, and contribute to the SPEC process !
514
545
515
546
516 Python 3.12 compatibility ?
547 Python 3.12 compatibility ?
517 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
548 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
518
549
519 Python 3.12 changed its tokenizer to have better support for f-strings and allow arbitrary expression.
550 Python 3.12 changed its tokenizer to have better support for f-strings and allow arbitrary expression.
520 This is a great new feature and performance improvement in Python 3.12.
551 This is a great new feature and performance improvement in Python 3.12.
521
552
522 Unfortunately this means the new tokenizer does not support incomplete or invalid Python which will
553 Unfortunately this means the new tokenizer does not support incomplete or invalid Python which will
523 break many features of IPython. Thus compatibility of IPython with Python 3.12 is not guarantied.
554 break many features of IPython. Thus compatibility of IPython with Python 3.12 is not guarantied.
524 It is unclear to which extent IPython is affected, and whether we can/should try to still support magics, shell
555 It is unclear to which extent IPython is affected, and whether we can/should try to still support magics, shell
525 escape (``! ....``), ..., as well as how to do it if we can.
556 escape (``! ....``), ..., as well as how to do it if we can.
526
557
527 In addition even if we there is technical feasibility to do so, it is no clear we have the resources to do it.
558 In addition even if we there is technical feasibility to do so, it is no clear we have the resources to do it.
528 We are thus looking for your help if you can _test_ on Python 3.12 to see to which extent this affects users and which
559 We are thus looking for your help if you can _test_ on Python 3.12 to see to which extent this affects users and which
529 features are critical.
560 features are critical.
530
561
531 We are not going to pin IPython to Python ``<3.12`` as otherwise on install pip would downgrade/resolve to IPython 8.13,
562 We are not going to pin IPython to Python ``<3.12`` as otherwise on install pip would downgrade/resolve to IPython 8.13,
532 so if you plan to update to Python 3.12 after its release, we encourage for extra care.
563 so if you plan to update to Python 3.12 after its release, we encourage for extra care.
533
564
534
565
535 .. _version 8.13.1:
566 .. _version 8.13.1:
536 .. _version 8.13.2:
567 .. _version 8.13.2:
537 .. _version 8.12.2:
568 .. _version 8.12.2:
538
569
539 IPython 8.13.1, 8.13.2 and 8.12.2
570 IPython 8.13.1, 8.13.2 and 8.12.2
540 ---------------------------------
571 ---------------------------------
541
572
542 3 quick in succession patch release of IPython in addition to IPython 8.13.0
573 3 quick in succession patch release of IPython in addition to IPython 8.13.0
543 having been yanked.
574 having been yanked.
544
575
545 IPython 8.13.0 was improperly tagged as still compatible with Python 3.8, and
576 IPython 8.13.0 was improperly tagged as still compatible with Python 3.8, and
546 still had some mention of compatibility with 3.8. IPython 8.13.1 is identical to
577 still had some mention of compatibility with 3.8. IPython 8.13.1 is identical to
547 8.13 but with the exception of being correctly tagged. This release and yank was
578 8.13 but with the exception of being correctly tagged. This release and yank was
548 mostly done to fix CI.
579 mostly done to fix CI.
549
580
550 IPython 8.12.2 and 8.13.2 contain UI fixes, with respect to right arrow not
581 IPython 8.12.2 and 8.13.2 contain UI fixes, with respect to right arrow not
551 working in some case in the terminal, and 8.12.2 contain also a requested
582 working in some case in the terminal, and 8.12.2 contain also a requested
552 backport of :ghpull:`14029` (Allow safe access to the ``__getattribute__``
583 backport of :ghpull:`14029` (Allow safe access to the ``__getattribute__``
553 method of modules) for tab completion.
584 method of modules) for tab completion.
554
585
555 .. _version 8.13:
586 .. _version 8.13:
556
587
557 IPython 8.13
588 IPython 8.13
558 ------------
589 ------------
559
590
560 As usual for the end of the month, minor release of IPython. This release is
591 As usual for the end of the month, minor release of IPython. This release is
561 significant in that it not only has a number of bugfixes, but also drop support
592 significant in that it not only has a number of bugfixes, but also drop support
562 for Python 3.8 as per NEP 29 (:ghpull:`14023`).
593 for Python 3.8 as per NEP 29 (:ghpull:`14023`).
563
594
564 All the critical bugfixes have been backported onto the 8.12.1 release (see
595 All the critical bugfixes have been backported onto the 8.12.1 release (see
565 below). In addition to that went into 8.12.1 you'll find:
596 below). In addition to that went into 8.12.1 you'll find:
566
597
567 - Pretty representation for ``Counter`` has been fixed to match the Python one
598 - Pretty representation for ``Counter`` has been fixed to match the Python one
568 and be in decreasing order. :ghpull:`14032`
599 and be in decreasing order. :ghpull:`14032`
569 - Module completion is better when jedi is disabled :ghpull:`14029`.
600 - Module completion is better when jedi is disabled :ghpull:`14029`.
570 - Improvement of ``%%bash`` magic that would get stuck :ghpull:`14019`
601 - Improvement of ``%%bash`` magic that would get stuck :ghpull:`14019`
571
602
572
603
573 We hope you enjoy this release an will maybe see you at JupyterCon in less than
604 We hope you enjoy this release an will maybe see you at JupyterCon in less than
574 two weeks.
605 two weeks.
575
606
576 As usual you can find the full list of PRs on GitHub under `the 8.13 milestone
607 As usual you can find the full list of PRs on GitHub under `the 8.13 milestone
577 <https://github.com/ipython/ipython/milestone/115?closed=1>`__.
608 <https://github.com/ipython/ipython/milestone/115?closed=1>`__.
578
609
579 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
610 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
580 work on IPython and related libraries.
611 work on IPython and related libraries.
581
612
582
613
583 .. _version 8.12.1:
614 .. _version 8.12.1:
584
615
585 IPython 8.12.1
616 IPython 8.12.1
586 --------------
617 --------------
587
618
588 This is the twin release of IPython 8.13 that contain only critical UI and bug
619 This is the twin release of IPython 8.13 that contain only critical UI and bug
589 fixes. The next minor version of IPython has dropped support for Python 3.8 – as
620 fixes. The next minor version of IPython has dropped support for Python 3.8 – as
590 per Nep 29 and this IPython 8.12.x will now only receive bugfixes.
621 per Nep 29 and this IPython 8.12.x will now only receive bugfixes.
591
622
592
623
593 - :ghpull:`14004` Fix a bug introduced in IPython 8.12 that crash when
624 - :ghpull:`14004` Fix a bug introduced in IPython 8.12 that crash when
594 inspecting some docstrings.
625 inspecting some docstrings.
595 - :ghpull:`14010` Fix fast traceback code that was not working in some case.
626 - :ghpull:`14010` Fix fast traceback code that was not working in some case.
596 - :ghpull:`14014` Fix ``%page`` magic broken in some case.
627 - :ghpull:`14014` Fix ``%page`` magic broken in some case.
597 - :ghpull:`14026`, :ghpull:`14027` Tweak default shortcut with respect to
628 - :ghpull:`14026`, :ghpull:`14027` Tweak default shortcut with respect to
598 autosuggestions.
629 autosuggestions.
599 - :ghpull:`14033` add back the ability to use ``.get()`` on OInfo object for
630 - :ghpull:`14033` add back the ability to use ``.get()`` on OInfo object for
600 backward compatibility with h5py (this will be re-deprecated later, and h5py
631 backward compatibility with h5py (this will be re-deprecated later, and h5py
601 will also get a fix).
632 will also get a fix).
602
633
603 As usual you can find the full list of PRs on GitHub under `the 8.12.1 milestone
634 As usual you can find the full list of PRs on GitHub under `the 8.12.1 milestone
604 <https://github.com/ipython/ipython/milestone/116?closed=1>`__.
635 <https://github.com/ipython/ipython/milestone/116?closed=1>`__.
605
636
606 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
637 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
607 work on IPython and related libraries.
638 work on IPython and related libraries.
608
639
609 .. _version 8.12.0:
640 .. _version 8.12.0:
610
641
611 IPython 8.12
642 IPython 8.12
612 ------------
643 ------------
613
644
614 Hopefully slightly early release for IPython 8.12. Last Thursday of the month,
645 Hopefully slightly early release for IPython 8.12. Last Thursday of the month,
615 even if I guess it's likely already Friday somewhere in the pacific ocean.
646 even if I guess it's likely already Friday somewhere in the pacific ocean.
616
647
617 A number of PRs and bug fixes this month with close to 20 PRs merged !
648 A number of PRs and bug fixes this month with close to 20 PRs merged !
618
649
619
650
620 The IPython repo reached :ghpull:`14000` !! Actually the PR that create those exact release
651 The IPython repo reached :ghpull:`14000` !! Actually the PR that create those exact release
621 note is :ghpull:`14000`. Ok, more issues and PR is not always better, and I'd
652 note is :ghpull:`14000`. Ok, more issues and PR is not always better, and I'd
622 love to have more time to close issues and Pull Requests.
653 love to have more time to close issues and Pull Requests.
623
654
624 Let's note that in less than 2 month JupyterCon is back, in Paris please visit
655 Let's note that in less than 2 month JupyterCon is back, in Paris please visit
625 `jupytercon.com <https://jupytercon.com>`__, and looking forward to see you
656 `jupytercon.com <https://jupytercon.com>`__, and looking forward to see you
626 there.
657 there.
627
658
628 Packagers should take note that ``typing_extension`` is now a mandatory dependency
659 Packagers should take note that ``typing_extension`` is now a mandatory dependency
629 for Python versions ``<3.10``.
660 for Python versions ``<3.10``.
630
661
631
662
632
663
633 Let's note also that according to `NEP29
664 Let's note also that according to `NEP29
634 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, It is soon time to
665 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, It is soon time to
635 stop support for Python 3.8 that will be release more than 3 and 1/2 years ago::
666 stop support for Python 3.8 that will be release more than 3 and 1/2 years ago::
636
667
637 On Apr 14, 2023 drop support for Python 3.8 (initially released on Oct 14, 2019)
668 On Apr 14, 2023 drop support for Python 3.8 (initially released on Oct 14, 2019)
638
669
639 Thus I am likely to stop advertising support for Python 3.8 in the next
670 Thus I am likely to stop advertising support for Python 3.8 in the next
640 release at the end of April.
671 release at the end of April.
641
672
642
673
643 Here are some miscellaneous updates of interest:
674 Here are some miscellaneous updates of interest:
644
675
645 - :ghpull:`13957` brings updates to the Qt integration, particularly for Qt6.
676 - :ghpull:`13957` brings updates to the Qt integration, particularly for Qt6.
646 - :ghpull:`13960` fixes the %debug magic command to give access to the local
677 - :ghpull:`13960` fixes the %debug magic command to give access to the local
647 scope.
678 scope.
648 - :ghpull:`13964` fixes some crashes with the new fast traceback code. Note that
679 - :ghpull:`13964` fixes some crashes with the new fast traceback code. Note that
649 there are still some issues with the fast traceback code, and I a, likely
680 there are still some issues with the fast traceback code, and I a, likely
650 to fix and tweak behavior.
681 to fix and tweak behavior.
651 - :ghpull:`13973` We are slowly migrating IPython internals to use proper type
682 - :ghpull:`13973` We are slowly migrating IPython internals to use proper type
652 objects/dataclasses instead of dictionaries to allow static typing checks.
683 objects/dataclasses instead of dictionaries to allow static typing checks.
653 These are technically public API and could lead to breakage, so please let us
684 These are technically public API and could lead to breakage, so please let us
654 know if that's the case and I'll mitigate.
685 know if that's the case and I'll mitigate.
655 - :ghpull:`13990`, :ghpull:`13991`, :ghpull:`13994` all improve keybinding and
686 - :ghpull:`13990`, :ghpull:`13991`, :ghpull:`13994` all improve keybinding and
656 shortcut configurability.
687 shortcut configurability.
657
688
658 As usual you can find the full list of PRs on GitHub under `the 8.12 milestone
689 As usual you can find the full list of PRs on GitHub under `the 8.12 milestone
659 <https://github.com/ipython/ipython/milestone/114?closed=1>`__.
690 <https://github.com/ipython/ipython/milestone/114?closed=1>`__.
660
691
661 We want to thank the D.E. Shaw group for requesting and sponsoring the work on
692 We want to thank the D.E. Shaw group for requesting and sponsoring the work on
662 the following big feature. We had productive discussions on how to best expose
693 the following big feature. We had productive discussions on how to best expose
663 this feature
694 this feature
664
695
665 Dynamic documentation dispatch
696 Dynamic documentation dispatch
666 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
697 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
667
698
668 We are experimenting with dynamic documentation dispatch for object attribute.
699 We are experimenting with dynamic documentation dispatch for object attribute.
669 See :ghissue:`13860`. The goal is to allow object to define documentation for
700 See :ghissue:`13860`. The goal is to allow object to define documentation for
670 their attributes, properties, even when those are dynamically defined with
701 their attributes, properties, even when those are dynamically defined with
671 `__getattr__`.
702 `__getattr__`.
672
703
673 In particular when those objects are base types it can be useful to show the
704 In particular when those objects are base types it can be useful to show the
674 documentation
705 documentation
675
706
676
707
677 .. code-block:: ipython
708 .. code-block:: ipython
678
709
679
710
680 In [1]: class User:
711 In [1]: class User:
681 ...:
712 ...:
682 ...: __custom_documentations__ = {
713 ...: __custom_documentations__ = {
683 ...: "first": "The first name of the user.",
714 ...: "first": "The first name of the user.",
684 ...: "last": "The last name of the user.",
715 ...: "last": "The last name of the user.",
685 ...: }
716 ...: }
686 ...:
717 ...:
687 ...: first:str
718 ...: first:str
688 ...: last:str
719 ...: last:str
689 ...:
720 ...:
690 ...: def __init__(self, first, last):
721 ...: def __init__(self, first, last):
691 ...: self.first = first
722 ...: self.first = first
692 ...: self.last = last
723 ...: self.last = last
693 ...:
724 ...:
694 ...: @property
725 ...: @property
695 ...: def full(self):
726 ...: def full(self):
696 ...: """`self.first` and `self.last` joined by a space."""
727 ...: """`self.first` and `self.last` joined by a space."""
697 ...: return self.first + " " + self.last
728 ...: return self.first + " " + self.last
698 ...:
729 ...:
699 ...:
730 ...:
700 ...: user = Person('Jane', 'Doe')
731 ...: user = Person('Jane', 'Doe')
701
732
702 In [2]: user.first?
733 In [2]: user.first?
703 Type: str
734 Type: str
704 String form: Jane
735 String form: Jane
705 Length: 4
736 Length: 4
706 Docstring: the first name of a the person object, a str
737 Docstring: the first name of a the person object, a str
707 Class docstring:
738 Class docstring:
708 ....
739 ....
709
740
710 In [3]: user.last?
741 In [3]: user.last?
711 Type: str
742 Type: str
712 String form: Doe
743 String form: Doe
713 Length: 3
744 Length: 3
714 Docstring: the last name, also a str
745 Docstring: the last name, also a str
715 ...
746 ...
716
747
717
748
718 We can see here the symmetry with IPython looking for the docstring on the
749 We can see here the symmetry with IPython looking for the docstring on the
719 properties:
750 properties:
720
751
721 .. code-block:: ipython
752 .. code-block:: ipython
722
753
723
754
724 In [4]: user.full?
755 In [4]: user.full?
725 HERE
756 HERE
726 Type: property
757 Type: property
727 String form: <property object at 0x102bb15d0>
758 String form: <property object at 0x102bb15d0>
728 Docstring: first and last join by a space
759 Docstring: first and last join by a space
729
760
730
761
731 Note that while in the above example we use a static dictionary, libraries may
762 Note that while in the above example we use a static dictionary, libraries may
732 decide to use a custom object that define ``__getitem__``, we caution against
763 decide to use a custom object that define ``__getitem__``, we caution against
733 using objects that would trigger computation to show documentation, but it is
764 using objects that would trigger computation to show documentation, but it is
734 sometime preferable for highly dynamic code that for example export ans API as
765 sometime preferable for highly dynamic code that for example export ans API as
735 object.
766 object.
736
767
737
768
738
769
739 .. _version 8.11.0:
770 .. _version 8.11.0:
740
771
741 IPython 8.11
772 IPython 8.11
742 ------------
773 ------------
743
774
744 Back on almost regular monthly schedule for IPython with end-of-month
775 Back on almost regular monthly schedule for IPython with end-of-month
745 really-late-Friday release to make sure some bugs are properly fixed.
776 really-late-Friday release to make sure some bugs are properly fixed.
746 Small addition of with a few new features, bugfix and UX improvements.
777 Small addition of with a few new features, bugfix and UX improvements.
747
778
748 This is a non-exhaustive list, but among other you will find:
779 This is a non-exhaustive list, but among other you will find:
749
780
750 Faster Traceback Highlighting
781 Faster Traceback Highlighting
751 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
782 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
752
783
753 Resurrection of pre-IPython-8 traceback highlighting code.
784 Resurrection of pre-IPython-8 traceback highlighting code.
754
785
755 Really long and complicated files were slow to highlight in traceback with
786 Really long and complicated files were slow to highlight in traceback with
756 IPython 8 despite upstream improvement that make many case better. Therefore
787 IPython 8 despite upstream improvement that make many case better. Therefore
757 starting with IPython 8.11 when one of the highlighted file is more than 10 000
788 starting with IPython 8.11 when one of the highlighted file is more than 10 000
758 line long by default, we'll fallback to a faster path that does not have all the
789 line long by default, we'll fallback to a faster path that does not have all the
759 features of highlighting failing AST nodes.
790 features of highlighting failing AST nodes.
760
791
761 This can be configures by setting the value of
792 This can be configures by setting the value of
762 ``IPython.code.ultratb.FAST_THRESHOLD`` to an arbitrary low or large value.
793 ``IPython.code.ultratb.FAST_THRESHOLD`` to an arbitrary low or large value.
763
794
764
795
765 Autoreload verbosity
796 Autoreload verbosity
766 ~~~~~~~~~~~~~~~~~~~~
797 ~~~~~~~~~~~~~~~~~~~~
767
798
768 We introduce more descriptive names for the ``%autoreload`` parameter:
799 We introduce more descriptive names for the ``%autoreload`` parameter:
769
800
770 - ``%autoreload now`` (also ``%autoreload``) - perform autoreload immediately.
801 - ``%autoreload now`` (also ``%autoreload``) - perform autoreload immediately.
771 - ``%autoreload off`` (also ``%autoreload 0``) - turn off autoreload.
802 - ``%autoreload off`` (also ``%autoreload 0``) - turn off autoreload.
772 - ``%autoreload explicit`` (also ``%autoreload 1``) - turn on autoreload only for modules
803 - ``%autoreload explicit`` (also ``%autoreload 1``) - turn on autoreload only for modules
773 whitelisted by ``%aimport`` statements.
804 whitelisted by ``%aimport`` statements.
774 - ``%autoreload all`` (also ``%autoreload 2``) - turn on autoreload for all modules except those
805 - ``%autoreload all`` (also ``%autoreload 2``) - turn on autoreload for all modules except those
775 blacklisted by ``%aimport`` statements.
806 blacklisted by ``%aimport`` statements.
776 - ``%autoreload complete`` (also ``%autoreload 3``) - all the fatures of ``all`` but also adding new
807 - ``%autoreload complete`` (also ``%autoreload 3``) - all the fatures of ``all`` but also adding new
777 objects from the imported modules (see
808 objects from the imported modules (see
778 IPython/extensions/tests/test_autoreload.py::test_autoload_newly_added_objects).
809 IPython/extensions/tests/test_autoreload.py::test_autoload_newly_added_objects).
779
810
780 The original designations (e.g. "2") still work, and these new ones are case-insensitive.
811 The original designations (e.g. "2") still work, and these new ones are case-insensitive.
781
812
782 Additionally, the option ``--print`` or ``-p`` can be added to the line to print the names of
813 Additionally, the option ``--print`` or ``-p`` can be added to the line to print the names of
783 modules being reloaded. Similarly, ``--log`` or ``-l`` will output the names to the logger at INFO
814 modules being reloaded. Similarly, ``--log`` or ``-l`` will output the names to the logger at INFO
784 level. Both can be used simultaneously.
815 level. Both can be used simultaneously.
785
816
786 The parsing logic for ``%aimport`` is now improved such that modules can be whitelisted and
817 The parsing logic for ``%aimport`` is now improved such that modules can be whitelisted and
787 blacklisted in the same line, e.g. it's now possible to call ``%aimport os, -math`` to include
818 blacklisted in the same line, e.g. it's now possible to call ``%aimport os, -math`` to include
788 ``os`` for ``%autoreload explicit`` and exclude ``math`` for modes ``all`` and ``complete``.
819 ``os`` for ``%autoreload explicit`` and exclude ``math`` for modes ``all`` and ``complete``.
789
820
790 Terminal shortcuts customization
821 Terminal shortcuts customization
791 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
822 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
792
823
793 Previously modifying shortcuts was only possible by hooking into startup files
824 Previously modifying shortcuts was only possible by hooking into startup files
794 and practically limited to adding new shortcuts or removing all shortcuts bound
825 and practically limited to adding new shortcuts or removing all shortcuts bound
795 to a specific key. This release enables users to override existing terminal
826 to a specific key. This release enables users to override existing terminal
796 shortcuts, disable them or add new keybindings.
827 shortcuts, disable them or add new keybindings.
797
828
798 For example, to set the :kbd:`right` to accept a single character of auto-suggestion
829 For example, to set the :kbd:`right` to accept a single character of auto-suggestion
799 you could use::
830 you could use::
800
831
801 my_shortcuts = [
832 my_shortcuts = [
802 {
833 {
803 "command": "IPython:auto_suggest.accept_character",
834 "command": "IPython:auto_suggest.accept_character",
804 "new_keys": ["right"]
835 "new_keys": ["right"]
805 }
836 }
806 ]
837 ]
807 %config TerminalInteractiveShell.shortcuts = my_shortcuts
838 %config TerminalInteractiveShell.shortcuts = my_shortcuts
808
839
809 You can learn more in :std:configtrait:`TerminalInteractiveShell.shortcuts`
840 You can learn more in :std:configtrait:`TerminalInteractiveShell.shortcuts`
810 configuration reference.
841 configuration reference.
811
842
812 Miscellaneous
843 Miscellaneous
813 ~~~~~~~~~~~~~
844 ~~~~~~~~~~~~~
814
845
815 - ``%gui`` should now support PySide6. :ghpull:`13864`
846 - ``%gui`` should now support PySide6. :ghpull:`13864`
816 - Cli shortcuts can now be configured :ghpull:`13928`, see above.
847 - Cli shortcuts can now be configured :ghpull:`13928`, see above.
817 (note that there might be an issue with prompt_toolkit 3.0.37 and shortcut configuration).
848 (note that there might be an issue with prompt_toolkit 3.0.37 and shortcut configuration).
818
849
819 - Capture output should now respect ``;`` semicolon to suppress output.
850 - Capture output should now respect ``;`` semicolon to suppress output.
820 :ghpull:`13940`
851 :ghpull:`13940`
821 - Base64 encoded images (in jupyter frontend), will not have trailing newlines.
852 - Base64 encoded images (in jupyter frontend), will not have trailing newlines.
822 :ghpull:`13941`
853 :ghpull:`13941`
823
854
824 As usual you can find the full list of PRs on GitHub under `the 8.11 milestone
855 As usual you can find the full list of PRs on GitHub under `the 8.11 milestone
825 <https://github.com/ipython/ipython/milestone/113?closed=1>`__.
856 <https://github.com/ipython/ipython/milestone/113?closed=1>`__.
826
857
827 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
858 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
828 work on IPython and related libraries.
859 work on IPython and related libraries.
829
860
830 .. _version 8.10.0:
861 .. _version 8.10.0:
831
862
832 IPython 8.10
863 IPython 8.10
833 ------------
864 ------------
834
865
835 Out of schedule release of IPython with minor fixes to patch a potential CVE-2023-24816.
866 Out of schedule release of IPython with minor fixes to patch a potential CVE-2023-24816.
836 This is a really low severity CVE that you most likely are not affected by unless:
867 This is a really low severity CVE that you most likely are not affected by unless:
837
868
838 - You are on windows.
869 - You are on windows.
839 - You have a custom build of Python without ``_ctypes``
870 - You have a custom build of Python without ``_ctypes``
840 - You cd or start IPython or Jupyter in untrusted directory which names may be
871 - You cd or start IPython or Jupyter in untrusted directory which names may be
841 valid shell commands.
872 valid shell commands.
842
873
843 You can read more on `the advisory
874 You can read more on `the advisory
844 <https://github.com/ipython/ipython/security/advisories/GHSA-29gw-9793-fvw7>`__.
875 <https://github.com/ipython/ipython/security/advisories/GHSA-29gw-9793-fvw7>`__.
845
876
846 In addition to fixing this CVE we also fix a couple of outstanding bugs and issues.
877 In addition to fixing this CVE we also fix a couple of outstanding bugs and issues.
847
878
848 As usual you can find the full list of PRs on GitHub under `the 8.10 milestone
879 As usual you can find the full list of PRs on GitHub under `the 8.10 milestone
849 <https://github.com/ipython/ipython/milestone/112?closed=1>`__.
880 <https://github.com/ipython/ipython/milestone/112?closed=1>`__.
850
881
851 In Particular:
882 In Particular:
852
883
853 - bump minimum numpy to `>=1.21` version following NEP29. :ghpull:`13930`
884 - bump minimum numpy to `>=1.21` version following NEP29. :ghpull:`13930`
854 - fix for compatibility with MyPy 1.0. :ghpull:`13933`
885 - fix for compatibility with MyPy 1.0. :ghpull:`13933`
855 - fix nbgrader stalling when IPython's ``showtraceback`` function is
886 - fix nbgrader stalling when IPython's ``showtraceback`` function is
856 monkeypatched. :ghpull:`13934`
887 monkeypatched. :ghpull:`13934`
857
888
858
889
859
890
860 As this release also contains those minimal changes in addition to fixing the
891 As this release also contains those minimal changes in addition to fixing the
861 CVE I decided to bump the minor version anyway.
892 CVE I decided to bump the minor version anyway.
862
893
863 This will not affect the normal release schedule, so IPython 8.11 is due in
894 This will not affect the normal release schedule, so IPython 8.11 is due in
864 about 2 weeks.
895 about 2 weeks.
865
896
866 .. _version 8.9.0:
897 .. _version 8.9.0:
867
898
868 IPython 8.9.0
899 IPython 8.9.0
869 -------------
900 -------------
870
901
871 Second release of IPython in 2023, last Friday of the month, we are back on
902 Second release of IPython in 2023, last Friday of the month, we are back on
872 track. This is a small release with a few bug-fixes, and improvements, mostly
903 track. This is a small release with a few bug-fixes, and improvements, mostly
873 with respect to terminal shortcuts.
904 with respect to terminal shortcuts.
874
905
875
906
876 The biggest improvement for 8.9 is a drastic amelioration of the
907 The biggest improvement for 8.9 is a drastic amelioration of the
877 auto-suggestions sponsored by D.E. Shaw and implemented by the more and more
908 auto-suggestions sponsored by D.E. Shaw and implemented by the more and more
878 active contributor `@krassowski <https://github.com/krassowski>`.
909 active contributor `@krassowski <https://github.com/krassowski>`.
879
910
880 - ``right`` accepts a single character from suggestion
911 - ``right`` accepts a single character from suggestion
881 - ``ctrl+right`` accepts a semantic token (macos default shortcuts take
912 - ``ctrl+right`` accepts a semantic token (macos default shortcuts take
882 precedence and need to be disabled to make this work)
913 precedence and need to be disabled to make this work)
883 - ``backspace`` deletes a character and resumes hinting autosuggestions
914 - ``backspace`` deletes a character and resumes hinting autosuggestions
884 - ``ctrl-left`` accepts suggestion and moves cursor left one character.
915 - ``ctrl-left`` accepts suggestion and moves cursor left one character.
885 - ``backspace`` deletes a character and resumes hinting autosuggestions
916 - ``backspace`` deletes a character and resumes hinting autosuggestions
886 - ``down`` moves to suggestion to later in history when no lines are present below the cursors.
917 - ``down`` moves to suggestion to later in history when no lines are present below the cursors.
887 - ``up`` moves to suggestion from earlier in history when no lines are present above the cursor.
918 - ``up`` moves to suggestion from earlier in history when no lines are present above the cursor.
888
919
889 This is best described by the Gif posted by `@krassowski
920 This is best described by the Gif posted by `@krassowski
890 <https://github.com/krassowski>`, and in the PR itself :ghpull:`13888`.
921 <https://github.com/krassowski>`, and in the PR itself :ghpull:`13888`.
891
922
892 .. image:: ../_images/autosuggest.gif
923 .. image:: ../_images/autosuggest.gif
893
924
894 Please report any feedback in order for us to improve the user experience.
925 Please report any feedback in order for us to improve the user experience.
895 In particular we are also working on making the shortcuts configurable.
926 In particular we are also working on making the shortcuts configurable.
896
927
897 If you are interested in better terminal shortcuts, I also invite you to
928 If you are interested in better terminal shortcuts, I also invite you to
898 participate in issue `13879
929 participate in issue `13879
899 <https://github.com/ipython/ipython/issues/13879>`__.
930 <https://github.com/ipython/ipython/issues/13879>`__.
900
931
901
932
902 As we follow `NEP29
933 As we follow `NEP29
903 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, next version of
934 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, next version of
904 IPython will officially stop supporting numpy 1.20, and will stop supporting
935 IPython will officially stop supporting numpy 1.20, and will stop supporting
905 Python 3.8 after April release.
936 Python 3.8 after April release.
906
937
907 As usual you can find the full list of PRs on GitHub under `the 8.9 milestone
938 As usual you can find the full list of PRs on GitHub under `the 8.9 milestone
908 <https://github.com/ipython/ipython/milestone/111?closed=1>`__.
939 <https://github.com/ipython/ipython/milestone/111?closed=1>`__.
909
940
910
941
911 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
942 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
912 work on IPython and related libraries.
943 work on IPython and related libraries.
913
944
914 .. _version 8.8.0:
945 .. _version 8.8.0:
915
946
916 IPython 8.8.0
947 IPython 8.8.0
917 -------------
948 -------------
918
949
919 First release of IPython in 2023 as there was no release at the end of
950 First release of IPython in 2023 as there was no release at the end of
920 December.
951 December.
921
952
922 This is an unusually big release (relatively speaking) with more than 15 Pull
953 This is an unusually big release (relatively speaking) with more than 15 Pull
923 Requests merged.
954 Requests merged.
924
955
925 Of particular interest are:
956 Of particular interest are:
926
957
927 - :ghpull:`13852` that replaces the greedy completer and improves
958 - :ghpull:`13852` that replaces the greedy completer and improves
928 completion, in particular for dictionary keys.
959 completion, in particular for dictionary keys.
929 - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is
960 - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is
930 bundled in wheels.
961 bundled in wheels.
931 - :ghpull:`13869` that implements tab completions for IPython options in the
962 - :ghpull:`13869` that implements tab completions for IPython options in the
932 shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I
963 shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I
933 believe this also needs a recent version of Traitlets.
964 believe this also needs a recent version of Traitlets.
934 - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell`
965 - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell`
935 configurable.
966 configurable.
936 - :ghpull:`13880` that removes minor-version entrypoints as the minor version
967 - :ghpull:`13880` that removes minor-version entrypoints as the minor version
937 entry points that would be included in the wheel would be the one of the
968 entry points that would be included in the wheel would be the one of the
938 Python version that was used to build the ``whl`` file.
969 Python version that was used to build the ``whl`` file.
939
970
940 In no particular order, the rest of the changes update the test suite to be
971 In no particular order, the rest of the changes update the test suite to be
941 compatible with Pygments 2.14, various docfixes, testing on more recent python
972 compatible with Pygments 2.14, various docfixes, testing on more recent python
942 versions and various updates.
973 versions and various updates.
943
974
944 As usual you can find the full list of PRs on GitHub under `the 8.8 milestone
975 As usual you can find the full list of PRs on GitHub under `the 8.8 milestone
945 <https://github.com/ipython/ipython/milestone/110>`__.
976 <https://github.com/ipython/ipython/milestone/110>`__.
946
977
947 Many thanks to @krassowski for the many PRs and @jasongrout for reviewing and
978 Many thanks to @krassowski for the many PRs and @jasongrout for reviewing and
948 merging contributions.
979 merging contributions.
949
980
950 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
981 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
951 work on IPython and related libraries.
982 work on IPython and related libraries.
952
983
953 .. _version 8.7.0:
984 .. _version 8.7.0:
954
985
955 IPython 8.7.0
986 IPython 8.7.0
956 -------------
987 -------------
957
988
958
989
959 Small release of IPython with a couple of bug fixes and new features for this
990 Small release of IPython with a couple of bug fixes and new features for this
960 month. Next month is the end of year, it is unclear if there will be a release
991 month. Next month is the end of year, it is unclear if there will be a release
961 close to the new year's eve, or if the next release will be at the end of January.
992 close to the new year's eve, or if the next release will be at the end of January.
962
993
963 Here are a few of the relevant fixes,
994 Here are a few of the relevant fixes,
964 as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
995 as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
965 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
996 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
966
997
967
998
968 - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
999 - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
969 - IPython shipped with the ``py.typed`` marker now, and we are progressively
1000 - IPython shipped with the ``py.typed`` marker now, and we are progressively
970 adding more types. :ghpull:`13831`
1001 adding more types. :ghpull:`13831`
971 - :ghpull:`13817` add configuration of code blacks formatting.
1002 - :ghpull:`13817` add configuration of code blacks formatting.
972
1003
973
1004
974 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1005 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
975 work on IPython and related libraries.
1006 work on IPython and related libraries.
976
1007
977
1008
978 .. _version 8.6.0:
1009 .. _version 8.6.0:
979
1010
980 IPython 8.6.0
1011 IPython 8.6.0
981 -------------
1012 -------------
982
1013
983 Back to a more regular release schedule (at least I try), as Friday is
1014 Back to a more regular release schedule (at least I try), as Friday is
984 already over by more than 24h hours. This is a slightly bigger release with a
1015 already over by more than 24h hours. This is a slightly bigger release with a
985 few new features that contain no less than 25 PRs.
1016 few new features that contain no less than 25 PRs.
986
1017
987 We'll notably found a couple of non negligible changes:
1018 We'll notably found a couple of non negligible changes:
988
1019
989 The ``install_ext`` and related functions have been removed after being
1020 The ``install_ext`` and related functions have been removed after being
990 deprecated for years. You can use pip to install extensions. ``pip`` did not
1021 deprecated for years. You can use pip to install extensions. ``pip`` did not
991 exist when ``install_ext`` was introduced. You can still load local extensions
1022 exist when ``install_ext`` was introduced. You can still load local extensions
992 without installing them. Just set your ``sys.path`` for example. :ghpull:`13744`
1023 without installing them. Just set your ``sys.path`` for example. :ghpull:`13744`
993
1024
994 IPython now has extra entry points that use the major *and minor* version of
1025 IPython now has extra entry points that use the major *and minor* version of
995 python. For some of you this means that you can do a quick ``ipython3.10`` to
1026 python. For some of you this means that you can do a quick ``ipython3.10`` to
996 launch IPython from the Python 3.10 interpreter, while still using Python 3.11
1027 launch IPython from the Python 3.10 interpreter, while still using Python 3.11
997 as your main Python. :ghpull:`13743`
1028 as your main Python. :ghpull:`13743`
998
1029
999 The completer matcher API has been improved. See :ghpull:`13745`. This should
1030 The completer matcher API has been improved. See :ghpull:`13745`. This should
1000 improve the type inference and improve dict keys completions in many use case.
1031 improve the type inference and improve dict keys completions in many use case.
1001 Thanks ``@krassowski`` for all the work, and the D.E. Shaw group for sponsoring
1032 Thanks ``@krassowski`` for all the work, and the D.E. Shaw group for sponsoring
1002 it.
1033 it.
1003
1034
1004 The color of error nodes in tracebacks can now be customized. See
1035 The color of error nodes in tracebacks can now be customized. See
1005 :ghpull:`13756`. This is a private attribute until someone finds the time to
1036 :ghpull:`13756`. This is a private attribute until someone finds the time to
1006 properly add a configuration option. Note that with Python 3.11 that also shows
1037 properly add a configuration option. Note that with Python 3.11 that also shows
1007 the relevant nodes in traceback, it would be good to leverage this information
1038 the relevant nodes in traceback, it would be good to leverage this information
1008 (plus the "did you mean" info added on attribute errors). But that's likely work
1039 (plus the "did you mean" info added on attribute errors). But that's likely work
1009 I won't have time to do before long, so contributions welcome.
1040 I won't have time to do before long, so contributions welcome.
1010
1041
1011 As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`.
1042 As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`.
1012
1043
1013
1044
1014 The ``open()`` function present in the user namespace by default will now refuse
1045 The ``open()`` function present in the user namespace by default will now refuse
1015 to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
1046 to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
1016 This mostly occurs in teaching context when incorrect values get passed around.
1047 This mostly occurs in teaching context when incorrect values get passed around.
1017
1048
1018
1049
1019 The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
1050 The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
1020 objects inside arrays. That is to say, the following now works::
1051 objects inside arrays. That is to say, the following now works::
1021
1052
1022
1053
1023 >>> def my_func(*arg, **kwargs):pass
1054 >>> def my_func(*arg, **kwargs):pass
1024 >>> container = [my_func]
1055 >>> container = [my_func]
1025 >>> container[0]?
1056 >>> container[0]?
1026
1057
1027
1058
1028 If ``container`` define a custom ``getitem``, this __will__ trigger the custom
1059 If ``container`` define a custom ``getitem``, this __will__ trigger the custom
1029 method. So don't put side effects in your ``getitems``. Thanks to the D.E. Shaw
1060 method. So don't put side effects in your ``getitems``. Thanks to the D.E. Shaw
1030 group for the request and sponsoring the work.
1061 group for the request and sponsoring the work.
1031
1062
1032
1063
1033 As usual you can find the full list of PRs on GitHub under `the 8.6 milestone
1064 As usual you can find the full list of PRs on GitHub under `the 8.6 milestone
1034 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.6>`__.
1065 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.6>`__.
1035
1066
1036 Thanks to all hacktoberfest contributors, please contribute to
1067 Thanks to all hacktoberfest contributors, please contribute to
1037 `closember.org <https://closember.org/>`__.
1068 `closember.org <https://closember.org/>`__.
1038
1069
1039 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1070 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1040 work on IPython and related libraries.
1071 work on IPython and related libraries.
1041
1072
1042 .. _version 8.5.0:
1073 .. _version 8.5.0:
1043
1074
1044 IPython 8.5.0
1075 IPython 8.5.0
1045 -------------
1076 -------------
1046
1077
1047 First release since a couple of month due to various reasons and timing preventing
1078 First release since a couple of month due to various reasons and timing preventing
1048 me for sticking to the usual monthly release the last Friday of each month. This
1079 me for sticking to the usual monthly release the last Friday of each month. This
1049 is of non negligible size as it has more than two dozen PRs with various fixes
1080 is of non negligible size as it has more than two dozen PRs with various fixes
1050 an bug fixes.
1081 an bug fixes.
1051
1082
1052 Many thanks to everybody who contributed PRs for your patience in review and
1083 Many thanks to everybody who contributed PRs for your patience in review and
1053 merges.
1084 merges.
1054
1085
1055 Here is a non-exhaustive list of changes that have been implemented for IPython
1086 Here is a non-exhaustive list of changes that have been implemented for IPython
1056 8.5.0. As usual you can find the full list of issues and PRs tagged with `the
1087 8.5.0. As usual you can find the full list of issues and PRs tagged with `the
1057 8.5 milestone
1088 8.5 milestone
1058 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A8.5+>`__.
1089 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A8.5+>`__.
1059
1090
1060 - Added a shortcut for accepting auto suggestion. The End key shortcut for
1091 - Added a shortcut for accepting auto suggestion. The End key shortcut for
1061 accepting auto-suggestion This binding works in Vi mode too, provided
1092 accepting auto-suggestion This binding works in Vi mode too, provided
1062 ``TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode`` is set to be
1093 ``TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode`` is set to be
1063 ``True`` :ghpull:`13566`.
1094 ``True`` :ghpull:`13566`.
1064
1095
1065 - No popup in window for latex generation when generating latex (e.g. via
1096 - No popup in window for latex generation when generating latex (e.g. via
1066 `_latex_repr_`) no popup window is shows under Windows. :ghpull:`13679`
1097 `_latex_repr_`) no popup window is shows under Windows. :ghpull:`13679`
1067
1098
1068 - Fixed error raised when attempting to tab-complete an input string with
1099 - Fixed error raised when attempting to tab-complete an input string with
1069 consecutive periods or forward slashes (such as "file:///var/log/...").
1100 consecutive periods or forward slashes (such as "file:///var/log/...").
1070 :ghpull:`13675`
1101 :ghpull:`13675`
1071
1102
1072 - Relative filenames in Latex rendering :
1103 - Relative filenames in Latex rendering :
1073 The `latex_to_png_dvipng` command internally generates input and output file
1104 The `latex_to_png_dvipng` command internally generates input and output file
1074 arguments to `latex` and `dvipis`. These arguments are now generated as
1105 arguments to `latex` and `dvipis`. These arguments are now generated as
1075 relative files to the current working directory instead of absolute file
1106 relative files to the current working directory instead of absolute file
1076 paths. This solves a problem where the current working directory contains
1107 paths. This solves a problem where the current working directory contains
1077 characters that are not handled properly by `latex` and `dvips`. There are
1108 characters that are not handled properly by `latex` and `dvips`. There are
1078 no changes to the user API. :ghpull:`13680`
1109 no changes to the user API. :ghpull:`13680`
1079
1110
1080 - Stripping decorators bug: Fixed bug which meant that ipython code blocks in
1111 - Stripping decorators bug: Fixed bug which meant that ipython code blocks in
1081 restructured text documents executed with the ipython-sphinx extension
1112 restructured text documents executed with the ipython-sphinx extension
1082 skipped any lines of code containing python decorators. :ghpull:`13612`
1113 skipped any lines of code containing python decorators. :ghpull:`13612`
1083
1114
1084 - Allow some modules with frozen dataclasses to be reloaded. :ghpull:`13732`
1115 - Allow some modules with frozen dataclasses to be reloaded. :ghpull:`13732`
1085 - Fix paste magic on wayland. :ghpull:`13671`
1116 - Fix paste magic on wayland. :ghpull:`13671`
1086 - show maxlen in deque's repr. :ghpull:`13648`
1117 - show maxlen in deque's repr. :ghpull:`13648`
1087
1118
1088 Restore line numbers for Input
1119 Restore line numbers for Input
1089 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1120 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1090
1121
1091 Line number information in tracebacks from input are restored.
1122 Line number information in tracebacks from input are restored.
1092 Line numbers from input were removed during the transition to v8 enhanced traceback reporting.
1123 Line numbers from input were removed during the transition to v8 enhanced traceback reporting.
1093
1124
1094 So, instead of::
1125 So, instead of::
1095
1126
1096 ---------------------------------------------------------------------------
1127 ---------------------------------------------------------------------------
1097 ZeroDivisionError Traceback (most recent call last)
1128 ZeroDivisionError Traceback (most recent call last)
1098 Input In [3], in <cell line: 1>()
1129 Input In [3], in <cell line: 1>()
1099 ----> 1 myfunc(2)
1130 ----> 1 myfunc(2)
1100
1131
1101 Input In [2], in myfunc(z)
1132 Input In [2], in myfunc(z)
1102 1 def myfunc(z):
1133 1 def myfunc(z):
1103 ----> 2 foo.boo(z-1)
1134 ----> 2 foo.boo(z-1)
1104
1135
1105 File ~/code/python/ipython/foo.py:3, in boo(x)
1136 File ~/code/python/ipython/foo.py:3, in boo(x)
1106 2 def boo(x):
1137 2 def boo(x):
1107 ----> 3 return 1/(1-x)
1138 ----> 3 return 1/(1-x)
1108
1139
1109 ZeroDivisionError: division by zero
1140 ZeroDivisionError: division by zero
1110
1141
1111 The error traceback now looks like::
1142 The error traceback now looks like::
1112
1143
1113 ---------------------------------------------------------------------------
1144 ---------------------------------------------------------------------------
1114 ZeroDivisionError Traceback (most recent call last)
1145 ZeroDivisionError Traceback (most recent call last)
1115 Cell In [3], line 1
1146 Cell In [3], line 1
1116 ----> 1 myfunc(2)
1147 ----> 1 myfunc(2)
1117
1148
1118 Cell In [2], line 2, in myfunc(z)
1149 Cell In [2], line 2, in myfunc(z)
1119 1 def myfunc(z):
1150 1 def myfunc(z):
1120 ----> 2 foo.boo(z-1)
1151 ----> 2 foo.boo(z-1)
1121
1152
1122 File ~/code/python/ipython/foo.py:3, in boo(x)
1153 File ~/code/python/ipython/foo.py:3, in boo(x)
1123 2 def boo(x):
1154 2 def boo(x):
1124 ----> 3 return 1/(1-x)
1155 ----> 3 return 1/(1-x)
1125
1156
1126 ZeroDivisionError: division by zero
1157 ZeroDivisionError: division by zero
1127
1158
1128 or, with xmode=Plain::
1159 or, with xmode=Plain::
1129
1160
1130 Traceback (most recent call last):
1161 Traceback (most recent call last):
1131 Cell In [12], line 1
1162 Cell In [12], line 1
1132 myfunc(2)
1163 myfunc(2)
1133 Cell In [6], line 2 in myfunc
1164 Cell In [6], line 2 in myfunc
1134 foo.boo(z-1)
1165 foo.boo(z-1)
1135 File ~/code/python/ipython/foo.py:3 in boo
1166 File ~/code/python/ipython/foo.py:3 in boo
1136 return 1/(1-x)
1167 return 1/(1-x)
1137 ZeroDivisionError: division by zero
1168 ZeroDivisionError: division by zero
1138
1169
1139 :ghpull:`13560`
1170 :ghpull:`13560`
1140
1171
1141 New setting to silence warning if working inside a virtual environment
1172 New setting to silence warning if working inside a virtual environment
1142 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1173 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1143
1174
1144 Previously, when starting IPython in a virtual environment without IPython installed (so IPython from the global environment is used), the following warning was printed:
1175 Previously, when starting IPython in a virtual environment without IPython installed (so IPython from the global environment is used), the following warning was printed:
1145
1176
1146 Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
1177 Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
1147
1178
1148 This warning can be permanently silenced by setting ``c.InteractiveShell.warn_venv`` to ``False`` (the default is ``True``).
1179 This warning can be permanently silenced by setting ``c.InteractiveShell.warn_venv`` to ``False`` (the default is ``True``).
1149
1180
1150 :ghpull:`13706`
1181 :ghpull:`13706`
1151
1182
1152 -------
1183 -------
1153
1184
1154 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1185 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1155 work on IPython and related libraries.
1186 work on IPython and related libraries.
1156
1187
1157
1188
1158 .. _version 8.4.0:
1189 .. _version 8.4.0:
1159
1190
1160 IPython 8.4.0
1191 IPython 8.4.0
1161 -------------
1192 -------------
1162
1193
1163 As for 7.34, this version contains a single fix: fix uncaught BdbQuit exceptions on ipdb
1194 As for 7.34, this version contains a single fix: fix uncaught BdbQuit exceptions on ipdb
1164 exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682`
1195 exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682`
1165
1196
1166 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1197 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1167 work on IPython and related libraries.
1198 work on IPython and related libraries.
1168
1199
1169
1200
1170 .. _version 8.3.0:
1201 .. _version 8.3.0:
1171
1202
1172 IPython 8.3.0
1203 IPython 8.3.0
1173 -------------
1204 -------------
1174
1205
1175 - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call
1206 - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call
1176 ``set_next_input`` as most frontend allow proper multiline editing and it was
1207 ``set_next_input`` as most frontend allow proper multiline editing and it was
1177 causing issues for many users of multi-cell frontends. This has been backported to 7.33
1208 causing issues for many users of multi-cell frontends. This has been backported to 7.33
1178
1209
1179
1210
1180 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on
1211 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on
1181 the info object when frontend provides it. This has been backported to 7.33
1212 the info object when frontend provides it. This has been backported to 7.33
1182
1213
1183 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an
1214 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an
1184 auto-suggestion.
1215 auto-suggestion.
1185
1216
1186 - :ghpull:`13657` fixed an issue where history from different sessions would be mixed.
1217 - :ghpull:`13657` fixed an issue where history from different sessions would be mixed.
1187
1218
1188 .. _version 8.2.0:
1219 .. _version 8.2.0:
1189
1220
1190 IPython 8.2.0
1221 IPython 8.2.0
1191 -------------
1222 -------------
1192
1223
1193 IPython 8.2 mostly bring bugfixes to IPython.
1224 IPython 8.2 mostly bring bugfixes to IPython.
1194
1225
1195 - Auto-suggestion can now be elected with the ``end`` key. :ghpull:`13566`
1226 - Auto-suggestion can now be elected with the ``end`` key. :ghpull:`13566`
1196 - Some traceback issues with ``assert etb is not None`` have been fixed. :ghpull:`13588`
1227 - Some traceback issues with ``assert etb is not None`` have been fixed. :ghpull:`13588`
1197 - History is now pulled from the sqitel database and not from in-memory.
1228 - History is now pulled from the sqitel database and not from in-memory.
1198 In particular when using the ``%paste`` magic, the content of the pasted text will
1229 In particular when using the ``%paste`` magic, the content of the pasted text will
1199 be part of the history and not the verbatim text ``%paste`` anymore. :ghpull:`13592`
1230 be part of the history and not the verbatim text ``%paste`` anymore. :ghpull:`13592`
1200 - Fix ``Ctrl-\\`` exit cleanup :ghpull:`13603`
1231 - Fix ``Ctrl-\\`` exit cleanup :ghpull:`13603`
1201 - Fixes to ``ultratb`` ipdb support when used outside of IPython. :ghpull:`13498`
1232 - Fixes to ``ultratb`` ipdb support when used outside of IPython. :ghpull:`13498`
1202
1233
1203
1234
1204 I am still trying to fix and investigate :ghissue:`13598`, which seems to be
1235 I am still trying to fix and investigate :ghissue:`13598`, which seems to be
1205 random, and would appreciate help if you find a reproducible minimal case. I've
1236 random, and would appreciate help if you find a reproducible minimal case. I've
1206 tried to make various changes to the codebase to mitigate it, but a proper fix
1237 tried to make various changes to the codebase to mitigate it, but a proper fix
1207 will be difficult without understanding the cause.
1238 will be difficult without understanding the cause.
1208
1239
1209
1240
1210 All the issues on pull-requests for this release can be found in the `8.2
1241 All the issues on pull-requests for this release can be found in the `8.2
1211 milestone. <https://github.com/ipython/ipython/milestone/100>`__ . And some
1242 milestone. <https://github.com/ipython/ipython/milestone/100>`__ . And some
1212 documentation only PR can be found as part of the `7.33 milestone
1243 documentation only PR can be found as part of the `7.33 milestone
1213 <https://github.com/ipython/ipython/milestone/101>`__ (currently not released).
1244 <https://github.com/ipython/ipython/milestone/101>`__ (currently not released).
1214
1245
1215 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1246 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1216 work on IPython and related libraries.
1247 work on IPython and related libraries.
1217
1248
1218 .. _version 8.1.1:
1249 .. _version 8.1.1:
1219
1250
1220 IPython 8.1.1
1251 IPython 8.1.1
1221 -------------
1252 -------------
1222
1253
1223 Fix an issue with virtualenv and Python 3.8 introduced in 8.1
1254 Fix an issue with virtualenv and Python 3.8 introduced in 8.1
1224
1255
1225 Revert :ghpull:`13537` (fix an issue with symlinks in virtualenv) that raises an
1256 Revert :ghpull:`13537` (fix an issue with symlinks in virtualenv) that raises an
1226 error in Python 3.8, and fixed in a different way in :ghpull:`13559`.
1257 error in Python 3.8, and fixed in a different way in :ghpull:`13559`.
1227
1258
1228 .. _version 8.1:
1259 .. _version 8.1:
1229
1260
1230 IPython 8.1.0
1261 IPython 8.1.0
1231 -------------
1262 -------------
1232
1263
1233 IPython 8.1 is the first minor release after 8.0 and fixes a number of bugs and
1264 IPython 8.1 is the first minor release after 8.0 and fixes a number of bugs and
1234 updates a few behaviors that were problematic with the 8.0 as with many new major
1265 updates a few behaviors that were problematic with the 8.0 as with many new major
1235 release.
1266 release.
1236
1267
1237 Note that beyond the changes listed here, IPython 8.1.0 also contains all the
1268 Note that beyond the changes listed here, IPython 8.1.0 also contains all the
1238 features listed in :ref:`version 7.32`.
1269 features listed in :ref:`version 7.32`.
1239
1270
1240 - Misc and multiple fixes around quotation auto-closing. It is now disabled by
1271 - Misc and multiple fixes around quotation auto-closing. It is now disabled by
1241 default. Run with ``TerminalInteractiveShell.auto_match=True`` to re-enabled
1272 default. Run with ``TerminalInteractiveShell.auto_match=True`` to re-enabled
1242 - Require pygments>=2.4.0 :ghpull:`13459`, this was implicit in the code, but
1273 - Require pygments>=2.4.0 :ghpull:`13459`, this was implicit in the code, but
1243 is now explicit in ``setup.cfg``/``setup.py``
1274 is now explicit in ``setup.cfg``/``setup.py``
1244 - Docs improvement of ``core.magic_arguments`` examples. :ghpull:`13433`
1275 - Docs improvement of ``core.magic_arguments`` examples. :ghpull:`13433`
1245 - Multi-line edit executes too early with await. :ghpull:`13424`
1276 - Multi-line edit executes too early with await. :ghpull:`13424`
1246
1277
1247 - ``black`` is back as an optional dependency, and autoformatting disabled by
1278 - ``black`` is back as an optional dependency, and autoformatting disabled by
1248 default until some fixes are implemented (black improperly reformat magics).
1279 default until some fixes are implemented (black improperly reformat magics).
1249 :ghpull:`13471` Additionally the ability to use ``yapf`` as a code
1280 :ghpull:`13471` Additionally the ability to use ``yapf`` as a code
1250 reformatter has been added :ghpull:`13528` . You can use
1281 reformatter has been added :ghpull:`13528` . You can use
1251 ``TerminalInteractiveShell.autoformatter="black"``,
1282 ``TerminalInteractiveShell.autoformatter="black"``,
1252 ``TerminalInteractiveShell.autoformatter="yapf"`` to re-enable auto formatting
1283 ``TerminalInteractiveShell.autoformatter="yapf"`` to re-enable auto formatting
1253 with black, or switch to yapf.
1284 with black, or switch to yapf.
1254
1285
1255 - Fix and issue where ``display`` was not defined.
1286 - Fix and issue where ``display`` was not defined.
1256
1287
1257 - Auto suggestions are now configurable. Currently only
1288 - Auto suggestions are now configurable. Currently only
1258 ``AutoSuggestFromHistory`` (default) and ``None``. new provider contribution
1289 ``AutoSuggestFromHistory`` (default) and ``None``. new provider contribution
1259 welcomed. :ghpull:`13475`
1290 welcomed. :ghpull:`13475`
1260
1291
1261 - multiple packaging/testing improvement to simplify downstream packaging
1292 - multiple packaging/testing improvement to simplify downstream packaging
1262 (xfail with reasons, try to not access network...).
1293 (xfail with reasons, try to not access network...).
1263
1294
1264 - Update deprecation. ``InteractiveShell.magic`` internal method has been
1295 - Update deprecation. ``InteractiveShell.magic`` internal method has been
1265 deprecated for many years but did not emit a warning until now.
1296 deprecated for many years but did not emit a warning until now.
1266
1297
1267 - internal ``appended_to_syspath`` context manager has been deprecated.
1298 - internal ``appended_to_syspath`` context manager has been deprecated.
1268
1299
1269 - fix an issue with symlinks in virtualenv :ghpull:`13537` (Reverted in 8.1.1)
1300 - fix an issue with symlinks in virtualenv :ghpull:`13537` (Reverted in 8.1.1)
1270
1301
1271 - Fix an issue with vim mode, where cursor would not be reset on exit :ghpull:`13472`
1302 - Fix an issue with vim mode, where cursor would not be reset on exit :ghpull:`13472`
1272
1303
1273 - ipython directive now remove only known pseudo-decorators :ghpull:`13532`
1304 - ipython directive now remove only known pseudo-decorators :ghpull:`13532`
1274
1305
1275 - ``IPython/lib/security`` which used to be used for jupyter notebook has been
1306 - ``IPython/lib/security`` which used to be used for jupyter notebook has been
1276 removed.
1307 removed.
1277
1308
1278 - Fix an issue where ``async with`` would execute on new lines. :ghpull:`13436`
1309 - Fix an issue where ``async with`` would execute on new lines. :ghpull:`13436`
1279
1310
1280
1311
1281 We want to remind users that IPython is part of the Jupyter organisations, and
1312 We want to remind users that IPython is part of the Jupyter organisations, and
1282 thus governed by a Code of Conduct. Some of the behavior we have seen on GitHub is not acceptable.
1313 thus governed by a Code of Conduct. Some of the behavior we have seen on GitHub is not acceptable.
1283 Abuse and non-respectful comments on discussion will not be tolerated.
1314 Abuse and non-respectful comments on discussion will not be tolerated.
1284
1315
1285 Many thanks to all the contributors to this release, many of the above fixed issues and
1316 Many thanks to all the contributors to this release, many of the above fixed issues and
1286 new features were done by first time contributors, showing there is still
1317 new features were done by first time contributors, showing there is still
1287 plenty of easy contribution possible in IPython
1318 plenty of easy contribution possible in IPython
1288 . You can find all individual contributions
1319 . You can find all individual contributions
1289 to this milestone `on github <https://github.com/ipython/ipython/milestone/91>`__.
1320 to this milestone `on github <https://github.com/ipython/ipython/milestone/91>`__.
1290
1321
1291 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1322 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1292 work on IPython and related libraries. In particular the Lazy autoloading of
1323 work on IPython and related libraries. In particular the Lazy autoloading of
1293 magics that you will find described in the 7.32 release notes.
1324 magics that you will find described in the 7.32 release notes.
1294
1325
1295
1326
1296 .. _version 8.0.1:
1327 .. _version 8.0.1:
1297
1328
1298 IPython 8.0.1 (CVE-2022-21699)
1329 IPython 8.0.1 (CVE-2022-21699)
1299 ------------------------------
1330 ------------------------------
1300
1331
1301 IPython 8.0.1, 7.31.1 and 5.11 are security releases that change some default
1332 IPython 8.0.1, 7.31.1 and 5.11 are security releases that change some default
1302 values in order to prevent potential Execution with Unnecessary Privileges.
1333 values in order to prevent potential Execution with Unnecessary Privileges.
1303
1334
1304 Almost all version of IPython looks for configuration and profiles in current
1335 Almost all version of IPython looks for configuration and profiles in current
1305 working directory. Since IPython was developed before pip and environments
1336 working directory. Since IPython was developed before pip and environments
1306 existed it was used a convenient way to load code/packages in a project
1337 existed it was used a convenient way to load code/packages in a project
1307 dependant way.
1338 dependant way.
1308
1339
1309 In 2022, it is not necessary anymore, and can lead to confusing behavior where
1340 In 2022, it is not necessary anymore, and can lead to confusing behavior where
1310 for example cloning a repository and starting IPython or loading a notebook from
1341 for example cloning a repository and starting IPython or loading a notebook from
1311 any Jupyter-Compatible interface that has ipython set as a kernel can lead to
1342 any Jupyter-Compatible interface that has ipython set as a kernel can lead to
1312 code execution.
1343 code execution.
1313
1344
1314
1345
1315 I did not find any standard way for packaged to advertise CVEs they fix, I'm
1346 I did not find any standard way for packaged to advertise CVEs they fix, I'm
1316 thus trying to add a ``__patched_cves__`` attribute to the IPython module that
1347 thus trying to add a ``__patched_cves__`` attribute to the IPython module that
1317 list the CVEs that should have been fixed. This attribute is informational only
1348 list the CVEs that should have been fixed. This attribute is informational only
1318 as if a executable has a flaw, this value can always be changed by an attacker.
1349 as if a executable has a flaw, this value can always be changed by an attacker.
1319
1350
1320 .. code::
1351 .. code::
1321
1352
1322 In [1]: import IPython
1353 In [1]: import IPython
1323
1354
1324 In [2]: IPython.__patched_cves__
1355 In [2]: IPython.__patched_cves__
1325 Out[2]: {'CVE-2022-21699'}
1356 Out[2]: {'CVE-2022-21699'}
1326
1357
1327 In [3]: 'CVE-2022-21699' in IPython.__patched_cves__
1358 In [3]: 'CVE-2022-21699' in IPython.__patched_cves__
1328 Out[3]: True
1359 Out[3]: True
1329
1360
1330 Thus starting with this version:
1361 Thus starting with this version:
1331
1362
1332 - The current working directory is not searched anymore for profiles or
1363 - The current working directory is not searched anymore for profiles or
1333 configurations files.
1364 configurations files.
1334 - Added a ``__patched_cves__`` attribute (set of strings) to IPython module that contain
1365 - Added a ``__patched_cves__`` attribute (set of strings) to IPython module that contain
1335 the list of fixed CVE. This is informational only.
1366 the list of fixed CVE. This is informational only.
1336
1367
1337 Further details can be read on the `GitHub Advisory <https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x>`__
1368 Further details can be read on the `GitHub Advisory <https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x>`__
1338
1369
1339
1370
1340 .. _version 8.0:
1371 .. _version 8.0:
1341
1372
1342 IPython 8.0
1373 IPython 8.0
1343 -----------
1374 -----------
1344
1375
1345 IPython 8.0 is bringing a large number of new features and improvements to both the
1376 IPython 8.0 is bringing a large number of new features and improvements to both the
1346 user of the terminal and of the kernel via Jupyter. The removal of compatibility
1377 user of the terminal and of the kernel via Jupyter. The removal of compatibility
1347 with an older version of Python is also the opportunity to do a couple of
1378 with an older version of Python is also the opportunity to do a couple of
1348 performance improvements in particular with respect to startup time.
1379 performance improvements in particular with respect to startup time.
1349 The 8.x branch started diverging from its predecessor around IPython 7.12
1380 The 8.x branch started diverging from its predecessor around IPython 7.12
1350 (January 2020).
1381 (January 2020).
1351
1382
1352 This release contains 250+ pull requests, in addition to many of the features
1383 This release contains 250+ pull requests, in addition to many of the features
1353 and backports that have made it to the 7.x branch. Please see the
1384 and backports that have made it to the 7.x branch. Please see the
1354 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
1385 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
1355
1386
1356 Please feel free to send pull requests to update those notes after release,
1387 Please feel free to send pull requests to update those notes after release,
1357 I have likely forgotten a few things reviewing 250+ PRs.
1388 I have likely forgotten a few things reviewing 250+ PRs.
1358
1389
1359 Dependencies changes/downstream packaging
1390 Dependencies changes/downstream packaging
1360 -----------------------------------------
1391 -----------------------------------------
1361
1392
1362 Most of our building steps have been changed to be (mostly) declarative
1393 Most of our building steps have been changed to be (mostly) declarative
1363 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
1394 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
1364 looking for help to do so.
1395 looking for help to do so.
1365
1396
1366 - minimum supported ``traitlets`` version is now 5+
1397 - minimum supported ``traitlets`` version is now 5+
1367 - we now require ``stack_data``
1398 - we now require ``stack_data``
1368 - minimal Python is now 3.8
1399 - minimal Python is now 3.8
1369 - ``nose`` is not a testing requirement anymore
1400 - ``nose`` is not a testing requirement anymore
1370 - ``pytest`` replaces nose.
1401 - ``pytest`` replaces nose.
1371 - ``iptest``/``iptest3`` cli entrypoints do not exist anymore.
1402 - ``iptest``/``iptest3`` cli entrypoints do not exist anymore.
1372 - the minimum officially ​supported ``numpy`` version has been bumped, but this should
1403 - the minimum officially ​supported ``numpy`` version has been bumped, but this should
1373 not have much effect on packaging.
1404 not have much effect on packaging.
1374
1405
1375
1406
1376 Deprecation and removal
1407 Deprecation and removal
1377 -----------------------
1408 -----------------------
1378
1409
1379 We removed almost all features, arguments, functions, and modules that were
1410 We removed almost all features, arguments, functions, and modules that were
1380 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
1411 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
1381 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
1412 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
1382 The few remaining deprecated features we left have better deprecation warnings
1413 The few remaining deprecated features we left have better deprecation warnings
1383 or have been turned into explicit errors for better error messages.
1414 or have been turned into explicit errors for better error messages.
1384
1415
1385 I will use this occasion to add the following requests to anyone emitting a
1416 I will use this occasion to add the following requests to anyone emitting a
1386 deprecation warning:
1417 deprecation warning:
1387
1418
1388 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
1419 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
1389 caller context, and not the callee one.
1420 caller context, and not the callee one.
1390 - Please add **since which version** something is deprecated.
1421 - Please add **since which version** something is deprecated.
1391
1422
1392 As a side note, it is much easier to conditionally compare version
1423 As a side note, it is much easier to conditionally compare version
1393 numbers rather than using ``try/except`` when functionality changes with a version.
1424 numbers rather than using ``try/except`` when functionality changes with a version.
1394
1425
1395 I won't list all the removed features here, but modules like ``IPython.kernel``,
1426 I won't list all the removed features here, but modules like ``IPython.kernel``,
1396 which was just a shim module around ``ipykernel`` for the past 8 years, have been
1427 which was just a shim module around ``ipykernel`` for the past 8 years, have been
1397 removed, and so many other similar things that pre-date the name **Jupyter**
1428 removed, and so many other similar things that pre-date the name **Jupyter**
1398 itself.
1429 itself.
1399
1430
1400 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
1431 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
1401 handled by ``load_extension``.
1432 handled by ``load_extension``.
1402
1433
1403 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
1434 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
1404 other packages and no longer need to be inside IPython.
1435 other packages and no longer need to be inside IPython.
1405
1436
1406
1437
1407 Documentation
1438 Documentation
1408 -------------
1439 -------------
1409
1440
1410 The majority of our docstrings have now been reformatted and automatically fixed by
1441 The majority of our docstrings have now been reformatted and automatically fixed by
1411 the experimental `VΓ©lin <https://pypi.org/project/velin/>`_ project to conform
1442 the experimental `VΓ©lin <https://pypi.org/project/velin/>`_ project to conform
1412 to numpydoc.
1443 to numpydoc.
1413
1444
1414 Type annotations
1445 Type annotations
1415 ----------------
1446 ----------------
1416
1447
1417 While IPython itself is highly dynamic and can't be completely typed, many of
1448 While IPython itself is highly dynamic and can't be completely typed, many of
1418 the functions now have type annotations, and part of the codebase is now checked
1449 the functions now have type annotations, and part of the codebase is now checked
1419 by mypy.
1450 by mypy.
1420
1451
1421
1452
1422 Featured changes
1453 Featured changes
1423 ----------------
1454 ----------------
1424
1455
1425 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
1456 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
1426 Please note as well that many features have been added in the 7.x branch as well
1457 Please note as well that many features have been added in the 7.x branch as well
1427 (and hence why you want to read the 7.x what's new notes), in particular
1458 (and hence why you want to read the 7.x what's new notes), in particular
1428 features contributed by QuantStack (with respect to debugger protocol and Xeus
1459 features contributed by QuantStack (with respect to debugger protocol and Xeus
1429 Python), as well as many debugger features that I was pleased to implement as
1460 Python), as well as many debugger features that I was pleased to implement as
1430 part of my work at QuanSight and sponsored by DE Shaw.
1461 part of my work at QuanSight and sponsored by DE Shaw.
1431
1462
1432 Traceback improvements
1463 Traceback improvements
1433 ~~~~~~~~~~~~~~~~~~~~~~
1464 ~~~~~~~~~~~~~~~~~~~~~~
1434
1465
1435 Previously, error tracebacks for errors happening in code cells were showing a
1466 Previously, error tracebacks for errors happening in code cells were showing a
1436 hash, the one used for compiling the Python AST::
1467 hash, the one used for compiling the Python AST::
1437
1468
1438 In [1]: def foo():
1469 In [1]: def foo():
1439 ...: return 3 / 0
1470 ...: return 3 / 0
1440 ...:
1471 ...:
1441
1472
1442 In [2]: foo()
1473 In [2]: foo()
1443 ---------------------------------------------------------------------------
1474 ---------------------------------------------------------------------------
1444 ZeroDivisionError Traceback (most recent call last)
1475 ZeroDivisionError Traceback (most recent call last)
1445 <ipython-input-2-c19b6d9633cf> in <module>
1476 <ipython-input-2-c19b6d9633cf> in <module>
1446 ----> 1 foo()
1477 ----> 1 foo()
1447
1478
1448 <ipython-input-1-1595a74c32d5> in foo()
1479 <ipython-input-1-1595a74c32d5> in foo()
1449 1 def foo():
1480 1 def foo():
1450 ----> 2 return 3 / 0
1481 ----> 2 return 3 / 0
1451 3
1482 3
1452
1483
1453 ZeroDivisionError: division by zero
1484 ZeroDivisionError: division by zero
1454
1485
1455 The error traceback is now correctly formatted, showing the cell number in which the error happened::
1486 The error traceback is now correctly formatted, showing the cell number in which the error happened::
1456
1487
1457 In [1]: def foo():
1488 In [1]: def foo():
1458 ...: return 3 / 0
1489 ...: return 3 / 0
1459 ...:
1490 ...:
1460
1491
1461 Input In [2]: foo()
1492 Input In [2]: foo()
1462 ---------------------------------------------------------------------------
1493 ---------------------------------------------------------------------------
1463 ZeroDivisionError Traceback (most recent call last)
1494 ZeroDivisionError Traceback (most recent call last)
1464 input In [2], in <module>
1495 input In [2], in <module>
1465 ----> 1 foo()
1496 ----> 1 foo()
1466
1497
1467 Input In [1], in foo()
1498 Input In [1], in foo()
1468 1 def foo():
1499 1 def foo():
1469 ----> 2 return 3 / 0
1500 ----> 2 return 3 / 0
1470
1501
1471 ZeroDivisionError: division by zero
1502 ZeroDivisionError: division by zero
1472
1503
1473 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
1504 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
1474 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
1505 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
1475
1506
1476 For example in the following snippet::
1507 For example in the following snippet::
1477
1508
1478 def foo(i):
1509 def foo(i):
1479 x = [[[0]]]
1510 x = [[[0]]]
1480 return x[0][i][0]
1511 return x[0][i][0]
1481
1512
1482
1513
1483 def bar():
1514 def bar():
1484 return foo(0) + foo(
1515 return foo(0) + foo(
1485 1
1516 1
1486 ) + foo(2)
1517 ) + foo(2)
1487
1518
1488
1519
1489 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
1520 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
1490 and IPython 8.0 is capable of telling you where the index error occurs::
1521 and IPython 8.0 is capable of telling you where the index error occurs::
1491
1522
1492
1523
1493 IndexError
1524 IndexError
1494 Input In [2], in <module>
1525 Input In [2], in <module>
1495 ----> 1 bar()
1526 ----> 1 bar()
1496 ^^^^^
1527 ^^^^^
1497
1528
1498 Input In [1], in bar()
1529 Input In [1], in bar()
1499 6 def bar():
1530 6 def bar():
1500 ----> 7 return foo(0) + foo(
1531 ----> 7 return foo(0) + foo(
1501 ^^^^
1532 ^^^^
1502 8 1
1533 8 1
1503 ^^^^^^^^
1534 ^^^^^^^^
1504 9 ) + foo(2)
1535 9 ) + foo(2)
1505 ^^^^
1536 ^^^^
1506
1537
1507 Input In [1], in foo(i)
1538 Input In [1], in foo(i)
1508 1 def foo(i):
1539 1 def foo(i):
1509 2 x = [[[0]]]
1540 2 x = [[[0]]]
1510 ----> 3 return x[0][i][0]
1541 ----> 3 return x[0][i][0]
1511 ^^^^^^^
1542 ^^^^^^^
1512
1543
1513 The corresponding locations marked here with ``^`` will show up highlighted in
1544 The corresponding locations marked here with ``^`` will show up highlighted in
1514 the terminal and notebooks.
1545 the terminal and notebooks.
1515
1546
1516 Finally, a colon ``::`` and line number is appended after a filename in
1547 Finally, a colon ``::`` and line number is appended after a filename in
1517 traceback::
1548 traceback::
1518
1549
1519
1550
1520 ZeroDivisionError Traceback (most recent call last)
1551 ZeroDivisionError Traceback (most recent call last)
1521 File ~/error.py:4, in <module>
1552 File ~/error.py:4, in <module>
1522 1 def f():
1553 1 def f():
1523 2 1/0
1554 2 1/0
1524 ----> 4 f()
1555 ----> 4 f()
1525
1556
1526 File ~/error.py:2, in f()
1557 File ~/error.py:2, in f()
1527 1 def f():
1558 1 def f():
1528 ----> 2 1/0
1559 ----> 2 1/0
1529
1560
1530 Many terminals and editors have integrations enabling you to directly jump to the
1561 Many terminals and editors have integrations enabling you to directly jump to the
1531 relevant file/line when this syntax is used, so this small addition may have a high
1562 relevant file/line when this syntax is used, so this small addition may have a high
1532 impact on productivity.
1563 impact on productivity.
1533
1564
1534
1565
1535 Autosuggestions
1566 Autosuggestions
1536 ~~~~~~~~~~~~~~~
1567 ~~~~~~~~~~~~~~~
1537
1568
1538 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>`__.
1569 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>`__.
1539
1570
1540 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
1571 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
1541 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
1572 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
1542
1573
1543 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
1574 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
1544 or right arrow as described below.
1575 or right arrow as described below.
1545
1576
1546 1. Start ipython
1577 1. Start ipython
1547
1578
1548 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
1579 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
1549
1580
1550 2. Run ``print("hello")``
1581 2. Run ``print("hello")``
1551
1582
1552 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
1583 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
1553
1584
1554 3. start typing ``print`` again to see the autosuggestion
1585 3. start typing ``print`` again to see the autosuggestion
1555
1586
1556 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
1587 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
1557
1588
1558 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
1589 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
1559
1590
1560 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
1591 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
1561
1592
1562 You can also complete word by word:
1593 You can also complete word by word:
1563
1594
1564 1. Run ``def say_hello(): print("hello")``
1595 1. Run ``def say_hello(): print("hello")``
1565
1596
1566 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
1597 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
1567
1598
1568 2. Start typing the first letter if ``def`` to see the autosuggestion
1599 2. Start typing the first letter if ``def`` to see the autosuggestion
1569
1600
1570 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1601 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1571
1602
1572 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
1603 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
1573
1604
1574 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1605 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1575
1606
1576 Importantly, this feature does not interfere with tab completion:
1607 Importantly, this feature does not interfere with tab completion:
1577
1608
1578 1. After running ``def say_hello(): print("hello")``, press d
1609 1. After running ``def say_hello(): print("hello")``, press d
1579
1610
1580 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1611 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1581
1612
1582 2. Press Tab to start tab completion
1613 2. Press Tab to start tab completion
1583
1614
1584 .. image:: ../_images/8.0/auto_suggest_d_completions.png
1615 .. image:: ../_images/8.0/auto_suggest_d_completions.png
1585
1616
1586 3A. Press Tab again to select the first option
1617 3A. Press Tab again to select the first option
1587
1618
1588 .. image:: ../_images/8.0/auto_suggest_def_completions.png
1619 .. image:: ../_images/8.0/auto_suggest_def_completions.png
1589
1620
1590 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
1621 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
1591
1622
1592 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1623 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1593
1624
1594 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
1625 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
1595
1626
1596 .. image:: ../_images/8.0/auto_suggest_match_parens.png
1627 .. image:: ../_images/8.0/auto_suggest_match_parens.png
1597
1628
1598
1629
1599 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
1630 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
1600
1631
1601 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
1632 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
1602 - 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/>`__.
1633 - 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/>`__.
1603
1634
1604
1635
1605 Show pinfo information in ipdb using "?" and "??"
1636 Show pinfo information in ipdb using "?" and "??"
1606 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1637 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1607
1638
1608 In IPDB, it is now possible to show the information about an object using "?"
1639 In IPDB, it is now possible to show the information about an object using "?"
1609 and "??", in much the same way that it can be done when using the IPython prompt::
1640 and "??", in much the same way that it can be done when using the IPython prompt::
1610
1641
1611 ipdb> partial?
1642 ipdb> partial?
1612 Init signature: partial(self, /, *args, **kwargs)
1643 Init signature: partial(self, /, *args, **kwargs)
1613 Docstring:
1644 Docstring:
1614 partial(func, *args, **keywords) - new function with partial application
1645 partial(func, *args, **keywords) - new function with partial application
1615 of the given arguments and keywords.
1646 of the given arguments and keywords.
1616 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
1647 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
1617 Type: type
1648 Type: type
1618 Subclasses:
1649 Subclasses:
1619
1650
1620 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
1651 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
1621
1652
1622
1653
1623 Autoreload 3 feature
1654 Autoreload 3 feature
1624 ~~~~~~~~~~~~~~~~~~~~
1655 ~~~~~~~~~~~~~~~~~~~~
1625
1656
1626 Example: When an IPython session is run with the 'autoreload' extension loaded,
1657 Example: When an IPython session is run with the 'autoreload' extension loaded,
1627 you will now have the option '3' to select, which means the following:
1658 you will now have the option '3' to select, which means the following:
1628
1659
1629 1. replicate all functionality from option 2
1660 1. replicate all functionality from option 2
1630 2. autoload all new funcs/classes/enums/globals from the module when they are added
1661 2. autoload all new funcs/classes/enums/globals from the module when they are added
1631 3. autoload all newly imported funcs/classes/enums/globals from external modules
1662 3. autoload all newly imported funcs/classes/enums/globals from external modules
1632
1663
1633 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
1664 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
1634
1665
1635 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
1666 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
1636
1667
1637 Auto formatting with black in the CLI
1668 Auto formatting with black in the CLI
1638 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1669 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1639
1670
1640 This feature was present in 7.x, but disabled by default.
1671 This feature was present in 7.x, but disabled by default.
1641
1672
1642 In 8.0, input was automatically reformatted with Black when black was installed.
1673 In 8.0, input was automatically reformatted with Black when black was installed.
1643 This feature has been reverted for the time being.
1674 This feature has been reverted for the time being.
1644 You can re-enable it by setting ``TerminalInteractiveShell.autoformatter`` to ``"black"``
1675 You can re-enable it by setting ``TerminalInteractiveShell.autoformatter`` to ``"black"``
1645
1676
1646 History Range Glob feature
1677 History Range Glob feature
1647 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1678 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1648
1679
1649 Previously, when using ``%history``, users could specify either
1680 Previously, when using ``%history``, users could specify either
1650 a range of sessions and lines, for example:
1681 a range of sessions and lines, for example:
1651
1682
1652 .. code-block:: python
1683 .. code-block:: python
1653
1684
1654 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
1685 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
1655 # to the fifth line of 6 sessions ago.``
1686 # to the fifth line of 6 sessions ago.``
1656
1687
1657 Or users could specify a glob pattern:
1688 Or users could specify a glob pattern:
1658
1689
1659 .. code-block:: python
1690 .. code-block:: python
1660
1691
1661 -g <pattern> # glob ALL history for the specified pattern.
1692 -g <pattern> # glob ALL history for the specified pattern.
1662
1693
1663 However users could *not* specify both.
1694 However users could *not* specify both.
1664
1695
1665 If a user *did* specify both a range and a glob pattern,
1696 If a user *did* specify both a range and a glob pattern,
1666 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
1697 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
1667
1698
1668 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.
1699 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.
1669
1700
1670 Don't start a multi-line cell with sunken parenthesis
1701 Don't start a multi-line cell with sunken parenthesis
1671 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1702 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1672
1703
1673 From now on, IPython will not ask for the next line of input when given a single
1704 From now on, IPython will not ask for the next line of input when given a single
1674 line with more closing than opening brackets. For example, this means that if
1705 line with more closing than opening brackets. For example, this means that if
1675 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
1706 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
1676 the ``...:`` prompt continuation.
1707 the ``...:`` prompt continuation.
1677
1708
1678 IPython shell for ipdb interact
1709 IPython shell for ipdb interact
1679 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1710 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1680
1711
1681 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
1712 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
1682
1713
1683 Automatic Vi prompt stripping
1714 Automatic Vi prompt stripping
1684 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1715 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1685
1716
1686 When pasting code into IPython, it will strip the leading prompt characters if
1717 When pasting code into IPython, it will strip the leading prompt characters if
1687 there are any. For example, you can paste the following code into the console -
1718 there are any. For example, you can paste the following code into the console -
1688 it will still work, even though each line is prefixed with prompts (``In``,
1719 it will still work, even though each line is prefixed with prompts (``In``,
1689 ``Out``)::
1720 ``Out``)::
1690
1721
1691 In [1]: 2 * 2 == 4
1722 In [1]: 2 * 2 == 4
1692 Out[1]: True
1723 Out[1]: True
1693
1724
1694 In [2]: print("This still works as pasted")
1725 In [2]: print("This still works as pasted")
1695
1726
1696
1727
1697 Previously, this was not the case for the Vi-mode prompts::
1728 Previously, this was not the case for the Vi-mode prompts::
1698
1729
1699 In [1]: [ins] In [13]: 2 * 2 == 4
1730 In [1]: [ins] In [13]: 2 * 2 == 4
1700 ...: Out[13]: True
1731 ...: Out[13]: True
1701 ...:
1732 ...:
1702 File "<ipython-input-1-727bb88eaf33>", line 1
1733 File "<ipython-input-1-727bb88eaf33>", line 1
1703 [ins] In [13]: 2 * 2 == 4
1734 [ins] In [13]: 2 * 2 == 4
1704 ^
1735 ^
1705 SyntaxError: invalid syntax
1736 SyntaxError: invalid syntax
1706
1737
1707 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
1738 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
1708 skipped just as the normal ``In`` would be.
1739 skipped just as the normal ``In`` would be.
1709
1740
1710 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
1741 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
1711 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
1742 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
1712
1743
1713 Empty History Ranges
1744 Empty History Ranges
1714 ~~~~~~~~~~~~~~~~~~~~
1745 ~~~~~~~~~~~~~~~~~~~~
1715
1746
1716 A number of magics that take history ranges can now be used with an empty
1747 A number of magics that take history ranges can now be used with an empty
1717 range. These magics are:
1748 range. These magics are:
1718
1749
1719 * ``%save``
1750 * ``%save``
1720 * ``%load``
1751 * ``%load``
1721 * ``%pastebin``
1752 * ``%pastebin``
1722 * ``%pycat``
1753 * ``%pycat``
1723
1754
1724 Using them this way will make them take the history of the current session up
1755 Using them this way will make them take the history of the current session up
1725 to the point of the magic call (such that the magic itself will not be
1756 to the point of the magic call (such that the magic itself will not be
1726 included).
1757 included).
1727
1758
1728 Therefore it is now possible to save the whole history to a file using
1759 Therefore it is now possible to save the whole history to a file using
1729 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
1760 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
1730 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
1761 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
1731 ``%pastebin``, or view the whole thing syntax-highlighted with a single
1762 ``%pastebin``, or view the whole thing syntax-highlighted with a single
1732 ``%pycat``.
1763 ``%pycat``.
1733
1764
1734
1765
1735 Windows timing implementation: Switch to process_time
1766 Windows timing implementation: Switch to process_time
1736 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1767 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1737 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
1768 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
1738 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
1769 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
1739 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
1770 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
1740
1771
1741 Miscellaneous
1772 Miscellaneous
1742 ~~~~~~~~~~~~~
1773 ~~~~~~~~~~~~~
1743 - Non-text formatters are not disabled in the terminal, which should simplify
1774 - Non-text formatters are not disabled in the terminal, which should simplify
1744 writing extensions displaying images or other mimetypes in supporting terminals.
1775 writing extensions displaying images or other mimetypes in supporting terminals.
1745 :ghpull:`12315`
1776 :ghpull:`12315`
1746 - It is now possible to automatically insert matching brackets in Terminal IPython using the
1777 - It is now possible to automatically insert matching brackets in Terminal IPython using the
1747 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
1778 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
1748 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
1779 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
1749 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
1780 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
1750 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
1781 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
1751 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
1782 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
1752 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
1783 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
1753 - The debugger now has a persistent history, which should make it less
1784 - The debugger now has a persistent history, which should make it less
1754 annoying to retype commands :ghpull:`13246`
1785 annoying to retype commands :ghpull:`13246`
1755 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
1786 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
1756 now warn users if they use one of those commands. :ghpull:`12954`
1787 now warn users if they use one of those commands. :ghpull:`12954`
1757 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
1788 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
1758
1789
1759 Re-added support for XDG config directories
1790 Re-added support for XDG config directories
1760 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1791 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1761
1792
1762 XDG support through the years comes and goes. There is a tension between having
1793 XDG support through the years comes and goes. There is a tension between having
1763 an identical location for configuration in all platforms versus having simple instructions.
1794 an identical location for configuration in all platforms versus having simple instructions.
1764 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
1795 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
1765 config files back into ``~/.ipython``. That migration code has now been removed.
1796 config files back into ``~/.ipython``. That migration code has now been removed.
1766 IPython now checks the XDG locations, so if you _manually_ move your config
1797 IPython now checks the XDG locations, so if you _manually_ move your config
1767 files to your preferred location, IPython will not move them back.
1798 files to your preferred location, IPython will not move them back.
1768
1799
1769
1800
1770 Preparing for Python 3.10
1801 Preparing for Python 3.10
1771 -------------------------
1802 -------------------------
1772
1803
1773 To prepare for Python 3.10, we have started working on removing reliance and
1804 To prepare for Python 3.10, we have started working on removing reliance and
1774 any dependency that is not compatible with Python 3.10. This includes migrating our
1805 any dependency that is not compatible with Python 3.10. This includes migrating our
1775 test suite to pytest and starting to remove nose. This also means that the
1806 test suite to pytest and starting to remove nose. This also means that the
1776 ``iptest`` command is now gone and all testing is via pytest.
1807 ``iptest`` command is now gone and all testing is via pytest.
1777
1808
1778 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
1809 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
1779 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
1810 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
1780 who did a fantastic job at updating our code base, migrating to pytest, pushing
1811 who did a fantastic job at updating our code base, migrating to pytest, pushing
1781 our coverage, and fixing a large number of bugs. I highly recommend contacting
1812 our coverage, and fixing a large number of bugs. I highly recommend contacting
1782 them if you need help with C++ and Python projects.
1813 them if you need help with C++ and Python projects.
1783
1814
1784 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+>`__
1815 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+>`__
1785
1816
1786 Removing support for older Python versions
1817 Removing support for older Python versions
1787 ------------------------------------------
1818 ------------------------------------------
1788
1819
1789
1820
1790 We are removing support for Python up through 3.7, allowing internal code to use the more
1821 We are removing support for Python up through 3.7, allowing internal code to use the more
1791 efficient ``pathlib`` and to make better use of type annotations.
1822 efficient ``pathlib`` and to make better use of type annotations.
1792
1823
1793 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
1824 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
1794 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
1825 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
1795
1826
1796
1827
1797 We had about 34 PRs only to update some logic to update some functions from managing strings to
1828 We had about 34 PRs only to update some logic to update some functions from managing strings to
1798 using Pathlib.
1829 using Pathlib.
1799
1830
1800 The completer has also seen significant updates and now makes use of newer Jedi APIs,
1831 The completer has also seen significant updates and now makes use of newer Jedi APIs,
1801 offering faster and more reliable tab completion.
1832 offering faster and more reliable tab completion.
1802
1833
1803 Misc Statistics
1834 Misc Statistics
1804 ---------------
1835 ---------------
1805
1836
1806 Here are some numbers::
1837 Here are some numbers::
1807
1838
1808 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
1839 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
1809 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
1840 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
1810
1841
1811 $ git diff --stat 7.x...master | tail -1
1842 $ git diff --stat 7.x...master | tail -1
1812 340 files changed, 13399 insertions(+), 12421 deletions(-)
1843 340 files changed, 13399 insertions(+), 12421 deletions(-)
1813
1844
1814 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
1845 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
1815 maintainers pushing buttons).::
1846 maintainers pushing buttons).::
1816
1847
1817 $ git shortlog -s --no-merges 7.x...master | sort -nr
1848 $ git shortlog -s --no-merges 7.x...master | sort -nr
1818 535 Matthias Bussonnier
1849 535 Matthias Bussonnier
1819 86 Nikita Kniazev
1850 86 Nikita Kniazev
1820 69 Blazej Michalik
1851 69 Blazej Michalik
1821 49 Samuel Gaist
1852 49 Samuel Gaist
1822 27 Itamar Turner-Trauring
1853 27 Itamar Turner-Trauring
1823 18 Spas Kalaydzhisyki
1854 18 Spas Kalaydzhisyki
1824 17 Thomas Kluyver
1855 17 Thomas Kluyver
1825 17 Quentin Peter
1856 17 Quentin Peter
1826 17 James Morris
1857 17 James Morris
1827 17 Artur Svistunov
1858 17 Artur Svistunov
1828 15 Bart Skowron
1859 15 Bart Skowron
1829 14 Alex Hall
1860 14 Alex Hall
1830 13 rushabh-v
1861 13 rushabh-v
1831 13 Terry Davis
1862 13 Terry Davis
1832 13 Benjamin Ragan-Kelley
1863 13 Benjamin Ragan-Kelley
1833 8 martinRenou
1864 8 martinRenou
1834 8 farisachugthai
1865 8 farisachugthai
1835 7 dswij
1866 7 dswij
1836 7 Gal B
1867 7 Gal B
1837 7 Corentin Cadiou
1868 7 Corentin Cadiou
1838 6 yuji96
1869 6 yuji96
1839 6 Martin Skarzynski
1870 6 Martin Skarzynski
1840 6 Justin Palmer
1871 6 Justin Palmer
1841 6 Daniel Goldfarb
1872 6 Daniel Goldfarb
1842 6 Ben Greiner
1873 6 Ben Greiner
1843 5 Sammy Al Hashemi
1874 5 Sammy Al Hashemi
1844 5 Paul Ivanov
1875 5 Paul Ivanov
1845 5 Inception95
1876 5 Inception95
1846 5 Eyenpi
1877 5 Eyenpi
1847 5 Douglas Blank
1878 5 Douglas Blank
1848 5 Coco Mishra
1879 5 Coco Mishra
1849 5 Bibo Hao
1880 5 Bibo Hao
1850 5 AndrΓ© A. Gomes
1881 5 AndrΓ© A. Gomes
1851 5 Ahmed Fasih
1882 5 Ahmed Fasih
1852 4 takuya fujiwara
1883 4 takuya fujiwara
1853 4 palewire
1884 4 palewire
1854 4 Thomas A Caswell
1885 4 Thomas A Caswell
1855 4 Talley Lambert
1886 4 Talley Lambert
1856 4 Scott Sanderson
1887 4 Scott Sanderson
1857 4 Ram Rachum
1888 4 Ram Rachum
1858 4 Nick Muoh
1889 4 Nick Muoh
1859 4 Nathan Goldbaum
1890 4 Nathan Goldbaum
1860 4 Mithil Poojary
1891 4 Mithil Poojary
1861 4 Michael T
1892 4 Michael T
1862 4 Jakub Klus
1893 4 Jakub Klus
1863 4 Ian Castleden
1894 4 Ian Castleden
1864 4 Eli Rykoff
1895 4 Eli Rykoff
1865 4 Ashwin Vishnu
1896 4 Ashwin Vishnu
1866 3 谭九鼎
1897 3 谭九鼎
1867 3 sleeping
1898 3 sleeping
1868 3 Sylvain Corlay
1899 3 Sylvain Corlay
1869 3 Peter Corke
1900 3 Peter Corke
1870 3 Paul Bissex
1901 3 Paul Bissex
1871 3 Matthew Feickert
1902 3 Matthew Feickert
1872 3 Fernando Perez
1903 3 Fernando Perez
1873 3 Eric Wieser
1904 3 Eric Wieser
1874 3 Daniel Mietchen
1905 3 Daniel Mietchen
1875 3 Aditya Sathe
1906 3 Aditya Sathe
1876 3 007vedant
1907 3 007vedant
1877 2 rchiodo
1908 2 rchiodo
1878 2 nicolaslazo
1909 2 nicolaslazo
1879 2 luttik
1910 2 luttik
1880 2 gorogoroumaru
1911 2 gorogoroumaru
1881 2 foobarbyte
1912 2 foobarbyte
1882 2 bar-hen
1913 2 bar-hen
1883 2 Theo Ouzhinski
1914 2 Theo Ouzhinski
1884 2 Strawkage
1915 2 Strawkage
1885 2 Samreen Zarroug
1916 2 Samreen Zarroug
1886 2 Pete Blois
1917 2 Pete Blois
1887 2 Meysam Azad
1918 2 Meysam Azad
1888 2 Matthieu Ancellin
1919 2 Matthieu Ancellin
1889 2 Mark Schmitz
1920 2 Mark Schmitz
1890 2 Maor Kleinberger
1921 2 Maor Kleinberger
1891 2 MRCWirtz
1922 2 MRCWirtz
1892 2 Lumir Balhar
1923 2 Lumir Balhar
1893 2 Julien Rabinow
1924 2 Julien Rabinow
1894 2 Juan Luis Cano RodrΓ­guez
1925 2 Juan Luis Cano RodrΓ­guez
1895 2 Joyce Er
1926 2 Joyce Er
1896 2 Jakub
1927 2 Jakub
1897 2 Faris A Chugthai
1928 2 Faris A Chugthai
1898 2 Ethan Madden
1929 2 Ethan Madden
1899 2 Dimitri Papadopoulos
1930 2 Dimitri Papadopoulos
1900 2 Diego Fernandez
1931 2 Diego Fernandez
1901 2 Daniel Shimon
1932 2 Daniel Shimon
1902 2 Coco Bennett
1933 2 Coco Bennett
1903 2 Carlos Cordoba
1934 2 Carlos Cordoba
1904 2 Boyuan Liu
1935 2 Boyuan Liu
1905 2 BaoGiang HoangVu
1936 2 BaoGiang HoangVu
1906 2 Augusto
1937 2 Augusto
1907 2 Arthur Svistunov
1938 2 Arthur Svistunov
1908 2 Arthur Moreira
1939 2 Arthur Moreira
1909 2 Ali Nabipour
1940 2 Ali Nabipour
1910 2 Adam Hackbarth
1941 2 Adam Hackbarth
1911 1 richard
1942 1 richard
1912 1 linar-jether
1943 1 linar-jether
1913 1 lbennett
1944 1 lbennett
1914 1 juacrumar
1945 1 juacrumar
1915 1 gpotter2
1946 1 gpotter2
1916 1 digitalvirtuoso
1947 1 digitalvirtuoso
1917 1 dalthviz
1948 1 dalthviz
1918 1 Yonatan Goldschmidt
1949 1 Yonatan Goldschmidt
1919 1 Tomasz KΕ‚oczko
1950 1 Tomasz KΕ‚oczko
1920 1 Tobias Bengfort
1951 1 Tobias Bengfort
1921 1 Timur Kushukov
1952 1 Timur Kushukov
1922 1 Thomas
1953 1 Thomas
1923 1 Snir Broshi
1954 1 Snir Broshi
1924 1 Shao Yang Hong
1955 1 Shao Yang Hong
1925 1 Sanjana-03
1956 1 Sanjana-03
1926 1 Romulo Filho
1957 1 Romulo Filho
1927 1 Rodolfo Carvalho
1958 1 Rodolfo Carvalho
1928 1 Richard Shadrach
1959 1 Richard Shadrach
1929 1 Reilly Tucker Siemens
1960 1 Reilly Tucker Siemens
1930 1 Rakessh Roshan
1961 1 Rakessh Roshan
1931 1 Piers Titus van der Torren
1962 1 Piers Titus van der Torren
1932 1 PhanatosZou
1963 1 PhanatosZou
1933 1 Pavel Safronov
1964 1 Pavel Safronov
1934 1 Paulo S. Costa
1965 1 Paulo S. Costa
1935 1 Paul McCarthy
1966 1 Paul McCarthy
1936 1 NotWearingPants
1967 1 NotWearingPants
1937 1 Naelson Douglas
1968 1 Naelson Douglas
1938 1 Michael Tiemann
1969 1 Michael Tiemann
1939 1 Matt Wozniski
1970 1 Matt Wozniski
1940 1 Markus Wageringel
1971 1 Markus Wageringel
1941 1 Marcus Wirtz
1972 1 Marcus Wirtz
1942 1 Marcio Mazza
1973 1 Marcio Mazza
1943 1 LumΓ­r 'Frenzy' Balhar
1974 1 LumΓ­r 'Frenzy' Balhar
1944 1 Lightyagami1
1975 1 Lightyagami1
1945 1 Leon Anavi
1976 1 Leon Anavi
1946 1 LeafyLi
1977 1 LeafyLi
1947 1 L0uisJ0shua
1978 1 L0uisJ0shua
1948 1 Kyle Cutler
1979 1 Kyle Cutler
1949 1 Krzysztof Cybulski
1980 1 Krzysztof Cybulski
1950 1 Kevin Kirsche
1981 1 Kevin Kirsche
1951 1 KIU Shueng Chuan
1982 1 KIU Shueng Chuan
1952 1 Jonathan Slenders
1983 1 Jonathan Slenders
1953 1 Jay Qi
1984 1 Jay Qi
1954 1 Jake VanderPlas
1985 1 Jake VanderPlas
1955 1 Iwan Briquemont
1986 1 Iwan Briquemont
1956 1 Hussaina Begum Nandyala
1987 1 Hussaina Begum Nandyala
1957 1 Gordon Ball
1988 1 Gordon Ball
1958 1 Gabriel Simonetto
1989 1 Gabriel Simonetto
1959 1 Frank Tobia
1990 1 Frank Tobia
1960 1 Erik
1991 1 Erik
1961 1 Elliott Sales de Andrade
1992 1 Elliott Sales de Andrade
1962 1 Daniel Hahler
1993 1 Daniel Hahler
1963 1 Dan Green-Leipciger
1994 1 Dan Green-Leipciger
1964 1 Dan Green
1995 1 Dan Green
1965 1 Damian Yurzola
1996 1 Damian Yurzola
1966 1 Coon, Ethan T
1997 1 Coon, Ethan T
1967 1 Carol Willing
1998 1 Carol Willing
1968 1 Brian Lee
1999 1 Brian Lee
1969 1 Brendan Gerrity
2000 1 Brendan Gerrity
1970 1 Blake Griffin
2001 1 Blake Griffin
1971 1 Bastian Ebeling
2002 1 Bastian Ebeling
1972 1 Bartosz Telenczuk
2003 1 Bartosz Telenczuk
1973 1 Ankitsingh6299
2004 1 Ankitsingh6299
1974 1 Andrew Port
2005 1 Andrew Port
1975 1 Andrew J. Hesford
2006 1 Andrew J. Hesford
1976 1 Albert Zhang
2007 1 Albert Zhang
1977 1 Adam Johnson
2008 1 Adam Johnson
1978
2009
1979 This does not, of course, represent non-code contributions, for which we are also grateful.
2010 This does not, of course, represent non-code contributions, for which we are also grateful.
1980
2011
1981
2012
1982 API Changes using Frappuccino
2013 API Changes using Frappuccino
1983 -----------------------------
2014 -----------------------------
1984
2015
1985 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
2016 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
1986
2017
1987
2018
1988 The following items are new in IPython 8.0 ::
2019 The following items are new in IPython 8.0 ::
1989
2020
1990 + IPython.core.async_helpers.get_asyncio_loop()
2021 + IPython.core.async_helpers.get_asyncio_loop()
1991 + IPython.core.completer.Dict
2022 + IPython.core.completer.Dict
1992 + IPython.core.completer.Pattern
2023 + IPython.core.completer.Pattern
1993 + IPython.core.completer.Sequence
2024 + IPython.core.completer.Sequence
1994 + IPython.core.completer.__skip_doctest__
2025 + IPython.core.completer.__skip_doctest__
1995 + IPython.core.debugger.Pdb.precmd(self, line)
2026 + IPython.core.debugger.Pdb.precmd(self, line)
1996 + IPython.core.debugger.__skip_doctest__
2027 + IPython.core.debugger.__skip_doctest__
1997 + IPython.core.display.__getattr__(name)
2028 + IPython.core.display.__getattr__(name)
1998 + IPython.core.display.warn
2029 + IPython.core.display.warn
1999 + IPython.core.display_functions
2030 + IPython.core.display_functions
2000 + IPython.core.display_functions.DisplayHandle
2031 + IPython.core.display_functions.DisplayHandle
2001 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
2032 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
2002 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
2033 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
2003 + IPython.core.display_functions.__all__
2034 + IPython.core.display_functions.__all__
2004 + IPython.core.display_functions.__builtins__
2035 + IPython.core.display_functions.__builtins__
2005 + IPython.core.display_functions.__cached__
2036 + IPython.core.display_functions.__cached__
2006 + IPython.core.display_functions.__doc__
2037 + IPython.core.display_functions.__doc__
2007 + IPython.core.display_functions.__file__
2038 + IPython.core.display_functions.__file__
2008 + IPython.core.display_functions.__loader__
2039 + IPython.core.display_functions.__loader__
2009 + IPython.core.display_functions.__name__
2040 + IPython.core.display_functions.__name__
2010 + IPython.core.display_functions.__package__
2041 + IPython.core.display_functions.__package__
2011 + IPython.core.display_functions.__spec__
2042 + IPython.core.display_functions.__spec__
2012 + IPython.core.display_functions.b2a_hex
2043 + IPython.core.display_functions.b2a_hex
2013 + IPython.core.display_functions.clear_output(wait=False)
2044 + IPython.core.display_functions.clear_output(wait=False)
2014 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
2045 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
2015 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
2046 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
2016 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
2047 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
2017 + IPython.core.extensions.BUILTINS_EXTS
2048 + IPython.core.extensions.BUILTINS_EXTS
2018 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
2049 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
2019 + IPython.core.interactiveshell.Callable
2050 + IPython.core.interactiveshell.Callable
2020 + IPython.core.interactiveshell.__annotations__
2051 + IPython.core.interactiveshell.__annotations__
2021 + IPython.core.ultratb.List
2052 + IPython.core.ultratb.List
2022 + IPython.core.ultratb.Tuple
2053 + IPython.core.ultratb.Tuple
2023 + IPython.lib.pretty.CallExpression
2054 + IPython.lib.pretty.CallExpression
2024 + IPython.lib.pretty.CallExpression.factory(name)
2055 + IPython.lib.pretty.CallExpression.factory(name)
2025 + IPython.lib.pretty.RawStringLiteral
2056 + IPython.lib.pretty.RawStringLiteral
2026 + IPython.lib.pretty.RawText
2057 + IPython.lib.pretty.RawText
2027 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
2058 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
2028 + IPython.terminal.embed.Set
2059 + IPython.terminal.embed.Set
2029
2060
2030 The following items have been removed (or moved to superclass)::
2061 The following items have been removed (or moved to superclass)::
2031
2062
2032 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
2063 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
2033 - IPython.core.completer.Sentinel
2064 - IPython.core.completer.Sentinel
2034 - IPython.core.completer.skip_doctest
2065 - IPython.core.completer.skip_doctest
2035 - IPython.core.debugger.Tracer
2066 - IPython.core.debugger.Tracer
2036 - IPython.core.display.DisplayHandle
2067 - IPython.core.display.DisplayHandle
2037 - IPython.core.display.DisplayHandle.display
2068 - IPython.core.display.DisplayHandle.display
2038 - IPython.core.display.DisplayHandle.update
2069 - IPython.core.display.DisplayHandle.update
2039 - IPython.core.display.b2a_hex
2070 - IPython.core.display.b2a_hex
2040 - IPython.core.display.clear_output
2071 - IPython.core.display.clear_output
2041 - IPython.core.display.display
2072 - IPython.core.display.display
2042 - IPython.core.display.publish_display_data
2073 - IPython.core.display.publish_display_data
2043 - IPython.core.display.update_display
2074 - IPython.core.display.update_display
2044 - IPython.core.excolors.Deprec
2075 - IPython.core.excolors.Deprec
2045 - IPython.core.excolors.ExceptionColors
2076 - IPython.core.excolors.ExceptionColors
2046 - IPython.core.history.warn
2077 - IPython.core.history.warn
2047 - IPython.core.hooks.late_startup_hook
2078 - IPython.core.hooks.late_startup_hook
2048 - IPython.core.hooks.pre_run_code_hook
2079 - IPython.core.hooks.pre_run_code_hook
2049 - IPython.core.hooks.shutdown_hook
2080 - IPython.core.hooks.shutdown_hook
2050 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
2081 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
2051 - IPython.core.interactiveshell.InteractiveShell.init_readline
2082 - IPython.core.interactiveshell.InteractiveShell.init_readline
2052 - IPython.core.interactiveshell.InteractiveShell.write
2083 - IPython.core.interactiveshell.InteractiveShell.write
2053 - IPython.core.interactiveshell.InteractiveShell.write_err
2084 - IPython.core.interactiveshell.InteractiveShell.write_err
2054 - IPython.core.interactiveshell.get_default_colors
2085 - IPython.core.interactiveshell.get_default_colors
2055 - IPython.core.interactiveshell.removed_co_newlocals
2086 - IPython.core.interactiveshell.removed_co_newlocals
2056 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
2087 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
2057 - IPython.core.magics.script.PIPE
2088 - IPython.core.magics.script.PIPE
2058 - IPython.core.prefilter.PrefilterManager.init_transformers
2089 - IPython.core.prefilter.PrefilterManager.init_transformers
2059 - IPython.core.release.classifiers
2090 - IPython.core.release.classifiers
2060 - IPython.core.release.description
2091 - IPython.core.release.description
2061 - IPython.core.release.keywords
2092 - IPython.core.release.keywords
2062 - IPython.core.release.long_description
2093 - IPython.core.release.long_description
2063 - IPython.core.release.name
2094 - IPython.core.release.name
2064 - IPython.core.release.platforms
2095 - IPython.core.release.platforms
2065 - IPython.core.release.url
2096 - IPython.core.release.url
2066 - IPython.core.ultratb.VerboseTB.format_records
2097 - IPython.core.ultratb.VerboseTB.format_records
2067 - IPython.core.ultratb.find_recursion
2098 - IPython.core.ultratb.find_recursion
2068 - IPython.core.ultratb.findsource
2099 - IPython.core.ultratb.findsource
2069 - IPython.core.ultratb.fix_frame_records_filenames
2100 - IPython.core.ultratb.fix_frame_records_filenames
2070 - IPython.core.ultratb.inspect_error
2101 - IPython.core.ultratb.inspect_error
2071 - IPython.core.ultratb.is_recursion_error
2102 - IPython.core.ultratb.is_recursion_error
2072 - IPython.core.ultratb.with_patch_inspect
2103 - IPython.core.ultratb.with_patch_inspect
2073 - IPython.external.__all__
2104 - IPython.external.__all__
2074 - IPython.external.__builtins__
2105 - IPython.external.__builtins__
2075 - IPython.external.__cached__
2106 - IPython.external.__cached__
2076 - IPython.external.__doc__
2107 - IPython.external.__doc__
2077 - IPython.external.__file__
2108 - IPython.external.__file__
2078 - IPython.external.__loader__
2109 - IPython.external.__loader__
2079 - IPython.external.__name__
2110 - IPython.external.__name__
2080 - IPython.external.__package__
2111 - IPython.external.__package__
2081 - IPython.external.__path__
2112 - IPython.external.__path__
2082 - IPython.external.__spec__
2113 - IPython.external.__spec__
2083 - IPython.kernel.KernelConnectionInfo
2114 - IPython.kernel.KernelConnectionInfo
2084 - IPython.kernel.__builtins__
2115 - IPython.kernel.__builtins__
2085 - IPython.kernel.__cached__
2116 - IPython.kernel.__cached__
2086 - IPython.kernel.__warningregistry__
2117 - IPython.kernel.__warningregistry__
2087 - IPython.kernel.pkg
2118 - IPython.kernel.pkg
2088 - IPython.kernel.protocol_version
2119 - IPython.kernel.protocol_version
2089 - IPython.kernel.protocol_version_info
2120 - IPython.kernel.protocol_version_info
2090 - IPython.kernel.src
2121 - IPython.kernel.src
2091 - IPython.kernel.version_info
2122 - IPython.kernel.version_info
2092 - IPython.kernel.warn
2123 - IPython.kernel.warn
2093 - IPython.lib.backgroundjobs
2124 - IPython.lib.backgroundjobs
2094 - IPython.lib.backgroundjobs.BackgroundJobBase
2125 - IPython.lib.backgroundjobs.BackgroundJobBase
2095 - IPython.lib.backgroundjobs.BackgroundJobBase.run
2126 - IPython.lib.backgroundjobs.BackgroundJobBase.run
2096 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
2127 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
2097 - IPython.lib.backgroundjobs.BackgroundJobExpr
2128 - IPython.lib.backgroundjobs.BackgroundJobExpr
2098 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
2129 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
2099 - IPython.lib.backgroundjobs.BackgroundJobFunc
2130 - IPython.lib.backgroundjobs.BackgroundJobFunc
2100 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
2131 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
2101 - IPython.lib.backgroundjobs.BackgroundJobManager
2132 - IPython.lib.backgroundjobs.BackgroundJobManager
2102 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
2133 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
2103 - IPython.lib.backgroundjobs.BackgroundJobManager.new
2134 - IPython.lib.backgroundjobs.BackgroundJobManager.new
2104 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
2135 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
2105 - IPython.lib.backgroundjobs.BackgroundJobManager.result
2136 - IPython.lib.backgroundjobs.BackgroundJobManager.result
2106 - IPython.lib.backgroundjobs.BackgroundJobManager.status
2137 - IPython.lib.backgroundjobs.BackgroundJobManager.status
2107 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
2138 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
2108 - IPython.lib.backgroundjobs.__builtins__
2139 - IPython.lib.backgroundjobs.__builtins__
2109 - IPython.lib.backgroundjobs.__cached__
2140 - IPython.lib.backgroundjobs.__cached__
2110 - IPython.lib.backgroundjobs.__doc__
2141 - IPython.lib.backgroundjobs.__doc__
2111 - IPython.lib.backgroundjobs.__file__
2142 - IPython.lib.backgroundjobs.__file__
2112 - IPython.lib.backgroundjobs.__loader__
2143 - IPython.lib.backgroundjobs.__loader__
2113 - IPython.lib.backgroundjobs.__name__
2144 - IPython.lib.backgroundjobs.__name__
2114 - IPython.lib.backgroundjobs.__package__
2145 - IPython.lib.backgroundjobs.__package__
2115 - IPython.lib.backgroundjobs.__spec__
2146 - IPython.lib.backgroundjobs.__spec__
2116 - IPython.lib.kernel.__builtins__
2147 - IPython.lib.kernel.__builtins__
2117 - IPython.lib.kernel.__cached__
2148 - IPython.lib.kernel.__cached__
2118 - IPython.lib.kernel.__doc__
2149 - IPython.lib.kernel.__doc__
2119 - IPython.lib.kernel.__file__
2150 - IPython.lib.kernel.__file__
2120 - IPython.lib.kernel.__loader__
2151 - IPython.lib.kernel.__loader__
2121 - IPython.lib.kernel.__name__
2152 - IPython.lib.kernel.__name__
2122 - IPython.lib.kernel.__package__
2153 - IPython.lib.kernel.__package__
2123 - IPython.lib.kernel.__spec__
2154 - IPython.lib.kernel.__spec__
2124 - IPython.lib.kernel.__warningregistry__
2155 - IPython.lib.kernel.__warningregistry__
2125 - IPython.paths.fs_encoding
2156 - IPython.paths.fs_encoding
2126 - IPython.terminal.debugger.DEFAULT_BUFFER
2157 - IPython.terminal.debugger.DEFAULT_BUFFER
2127 - IPython.terminal.debugger.cursor_in_leading_ws
2158 - IPython.terminal.debugger.cursor_in_leading_ws
2128 - IPython.terminal.debugger.emacs_insert_mode
2159 - IPython.terminal.debugger.emacs_insert_mode
2129 - IPython.terminal.debugger.has_selection
2160 - IPython.terminal.debugger.has_selection
2130 - IPython.terminal.debugger.vi_insert_mode
2161 - IPython.terminal.debugger.vi_insert_mode
2131 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
2162 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
2132 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
2163 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
2133 - IPython.testing.test
2164 - IPython.testing.test
2134 - IPython.utils.contexts.NoOpContext
2165 - IPython.utils.contexts.NoOpContext
2135 - IPython.utils.io.IOStream
2166 - IPython.utils.io.IOStream
2136 - IPython.utils.io.IOStream.close
2167 - IPython.utils.io.IOStream.close
2137 - IPython.utils.io.IOStream.write
2168 - IPython.utils.io.IOStream.write
2138 - IPython.utils.io.IOStream.writelines
2169 - IPython.utils.io.IOStream.writelines
2139 - IPython.utils.io.__warningregistry__
2170 - IPython.utils.io.__warningregistry__
2140 - IPython.utils.io.atomic_writing
2171 - IPython.utils.io.atomic_writing
2141 - IPython.utils.io.stderr
2172 - IPython.utils.io.stderr
2142 - IPython.utils.io.stdin
2173 - IPython.utils.io.stdin
2143 - IPython.utils.io.stdout
2174 - IPython.utils.io.stdout
2144 - IPython.utils.io.unicode_std_stream
2175 - IPython.utils.io.unicode_std_stream
2145 - IPython.utils.path.get_ipython_cache_dir
2176 - IPython.utils.path.get_ipython_cache_dir
2146 - IPython.utils.path.get_ipython_dir
2177 - IPython.utils.path.get_ipython_dir
2147 - IPython.utils.path.get_ipython_module_path
2178 - IPython.utils.path.get_ipython_module_path
2148 - IPython.utils.path.get_ipython_package_dir
2179 - IPython.utils.path.get_ipython_package_dir
2149 - IPython.utils.path.locate_profile
2180 - IPython.utils.path.locate_profile
2150 - IPython.utils.path.unquote_filename
2181 - IPython.utils.path.unquote_filename
2151 - IPython.utils.py3compat.PY2
2182 - IPython.utils.py3compat.PY2
2152 - IPython.utils.py3compat.PY3
2183 - IPython.utils.py3compat.PY3
2153 - IPython.utils.py3compat.buffer_to_bytes
2184 - IPython.utils.py3compat.buffer_to_bytes
2154 - IPython.utils.py3compat.builtin_mod_name
2185 - IPython.utils.py3compat.builtin_mod_name
2155 - IPython.utils.py3compat.cast_bytes
2186 - IPython.utils.py3compat.cast_bytes
2156 - IPython.utils.py3compat.getcwd
2187 - IPython.utils.py3compat.getcwd
2157 - IPython.utils.py3compat.isidentifier
2188 - IPython.utils.py3compat.isidentifier
2158 - IPython.utils.py3compat.u_format
2189 - IPython.utils.py3compat.u_format
2159
2190
2160 The following signatures differ between 7.x and 8.0::
2191 The following signatures differ between 7.x and 8.0::
2161
2192
2162 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
2193 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
2163 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
2194 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
2164
2195
2165 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
2196 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
2166 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
2197 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
2167
2198
2168 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
2199 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
2169 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
2200 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
2170
2201
2171 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
2202 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
2172 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
2203 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
2173
2204
2174 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
2205 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
2175 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
2206 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
2176
2207
2177 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
2208 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
2178 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
2209 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
2179
2210
2180 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
2211 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
2181 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
2212 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
2182
2213
2183 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
2214 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
2184 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
2215 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
2185
2216
2186 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
2217 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
2187 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
2218 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
2188
2219
2189 - IPython.terminal.embed.embed(**kwargs)
2220 - IPython.terminal.embed.embed(**kwargs)
2190 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
2221 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
2191
2222
2192 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
2223 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
2193 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
2224 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
2194
2225
2195 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
2226 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
2196 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
2227 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
2197
2228
2198 - IPython.utils.path.get_py_filename(name, force_win32='None')
2229 - IPython.utils.path.get_py_filename(name, force_win32='None')
2199 + IPython.utils.path.get_py_filename(name)
2230 + IPython.utils.path.get_py_filename(name)
2200
2231
2201 The following are new attributes (that might be inherited)::
2232 The following are new attributes (that might be inherited)::
2202
2233
2203 + IPython.core.completer.IPCompleter.unicode_names
2234 + IPython.core.completer.IPCompleter.unicode_names
2204 + IPython.core.debugger.InterruptiblePdb.precmd
2235 + IPython.core.debugger.InterruptiblePdb.precmd
2205 + IPython.core.debugger.Pdb.precmd
2236 + IPython.core.debugger.Pdb.precmd
2206 + IPython.core.ultratb.AutoFormattedTB.has_colors
2237 + IPython.core.ultratb.AutoFormattedTB.has_colors
2207 + IPython.core.ultratb.ColorTB.has_colors
2238 + IPython.core.ultratb.ColorTB.has_colors
2208 + IPython.core.ultratb.FormattedTB.has_colors
2239 + IPython.core.ultratb.FormattedTB.has_colors
2209 + IPython.core.ultratb.ListTB.has_colors
2240 + IPython.core.ultratb.ListTB.has_colors
2210 + IPython.core.ultratb.SyntaxTB.has_colors
2241 + IPython.core.ultratb.SyntaxTB.has_colors
2211 + IPython.core.ultratb.TBTools.has_colors
2242 + IPython.core.ultratb.TBTools.has_colors
2212 + IPython.core.ultratb.VerboseTB.has_colors
2243 + IPython.core.ultratb.VerboseTB.has_colors
2213 + IPython.terminal.debugger.TerminalPdb.do_interact
2244 + IPython.terminal.debugger.TerminalPdb.do_interact
2214 + IPython.terminal.debugger.TerminalPdb.precmd
2245 + IPython.terminal.debugger.TerminalPdb.precmd
2215
2246
2216 The following attribute/methods have been removed::
2247 The following attribute/methods have been removed::
2217
2248
2218 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
2249 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
2219 - IPython.core.ultratb.AutoFormattedTB.format_records
2250 - IPython.core.ultratb.AutoFormattedTB.format_records
2220 - IPython.core.ultratb.ColorTB.format_records
2251 - IPython.core.ultratb.ColorTB.format_records
2221 - IPython.core.ultratb.FormattedTB.format_records
2252 - IPython.core.ultratb.FormattedTB.format_records
2222 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
2253 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
2223 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
2254 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
2224 - IPython.terminal.embed.InteractiveShellEmbed.write
2255 - IPython.terminal.embed.InteractiveShellEmbed.write
2225 - IPython.terminal.embed.InteractiveShellEmbed.write_err
2256 - IPython.terminal.embed.InteractiveShellEmbed.write_err
2226 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
2257 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
2227 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
2258 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
2228 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
2259 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
2229 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
2260 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
2230 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
2261 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
2231 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
2262 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
2232 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
2263 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
2233 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
2264 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
2234
2265
2235 ------
2266 ------
2236
2267
2237 .. [1] If this make you incomfortable feel free to not use IPython 8.23.
2268 .. [1] If this make you incomfortable feel free to not use IPython 8.23.
General Comments 0
You need to be logged in to leave comments. Login now