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