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