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