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