##// END OF EJS Templates
start whatsnew 7.15
Matthias Bussonnier -
Show More
@@ -1,906 +1,948 b''
1 ============
1 ============
2 7.x Series
2 7.x Series
3 ============
3 ============
4
4
5 .. _version 715:
6
7 IPython 7.15
8 ============
9
10 IPython 7.15 brings a number of bug fixes and user facing improvements.
11
12 Noticeable changes:
13 -------------------
14
15 - Long completion name have better elision in terminal :ghpull:`12284`
16 - We've started to test on Python 3.9 :ghpull:`12307` and fix some errors.
17 - Hi DPI scaling of figures when using qt eventloop :ghpull:`12314`
18 - Document the ability to have systemwide configuration for IPython.
19 :ghpull:`12328`
20 - Fix issues with input autoformatting :ghpull:`12336`
21
22
23 Highlighted features
24 --------------------
25
26 Increase Tab Completion Menu Height
27 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28
29 In terminal IPython it is possible to increase the hight of the tab-completion
30 menu. To do so set the value of
31 :configtrait:`TerminalInteractiveShell.space_for_menu`, this will reserve more
32 space at the bottom of the screen for various kind of menus in IPython including
33 tab completion and searching in history.
34
35 Autoformat Code in the terminal
36 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37
38 If you have a preferred code formatter, you can configure IPython to
39 reformat your code. Set the value of
40 :configtrait:`TerminalInteractiveShell.autoformatter` to for example ``'black'``
41 and IPython will auto format your code when possible.
42
43
44
45
46
5 .. _version 714:
47 .. _version 714:
6
48
7 IPython 7.14
49 IPython 7.14
8 ============
50 ============
9
51
10 IPython 7.14 is a minor release that fix a couple of bugs and prepare
52 IPython 7.14 is a minor release that fix a couple of bugs and prepare
11 compatibility with new or future versions of some libraries.
53 compatibility with new or future versions of some libraries.
12
54
13 Important changes:
55 Important changes:
14 ------------------
56 ------------------
15
57
16 - Fix compatibility with Sphinx 3+ :ghpull:`12235`
58 - Fix compatibility with Sphinx 3+ :ghpull:`12235`
17 - Remove deprecated matplotlib parameter usage, compatibility with matplotlib
59 - Remove deprecated matplotlib parameter usage, compatibility with matplotlib
18 3.3+ :`122250`
60 3.3+ :`122250`
19
61
20 Misc Changes
62 Misc Changes
21 ------------
63 ------------
22
64
23 - set ``.py`` extension when editing current buffer in vi/emacs. :ghpull:`12167`
65 - set ``.py`` extension when editing current buffer in vi/emacs. :ghpull:`12167`
24 - support for unicode identifiers in ``?``/``??`` :ghpull:`12208`
66 - support for unicode identifiers in ``?``/``??`` :ghpull:`12208`
25 - add extra options to the ``Video`` Rich objects :ghpull:`12212`
67 - add extra options to the ``Video`` Rich objects :ghpull:`12212`
26 - add pretty-printing to ``SimpleNamespace`` :ghpull:`12230`
68 - add pretty-printing to ``SimpleNamespace`` :ghpull:`12230`
27
69
28 Pending deprecated imports
70 Pending deprecated imports
29 --------------------------
71 --------------------------
30
72
31 Many object present in ``IPython.core.display`` are there for internal use only,
73 Many object present in ``IPython.core.display`` are there for internal use only,
32 and should already been imported from ``IPython.display`` by users and external
74 and should already been imported from ``IPython.display`` by users and external
33 libraries. Trying to import those from ``IPython.core.display`` is still possible
75 libraries. Trying to import those from ``IPython.core.display`` is still possible
34 but will trigger a
76 but will trigger a
35 deprecation warning in later versions of IPython and will become errors in the
77 deprecation warning in later versions of IPython and will become errors in the
36 future.
78 future.
37
79
38 This will simplify compatibility with other Python kernels (like Xeus-Python),
80 This will simplify compatibility with other Python kernels (like Xeus-Python),
39 and simplify code base.
81 and simplify code base.
40
82
41
83
42
84
43
85
44 .. _version 713:
86 .. _version 713:
45
87
46 IPython 7.13
88 IPython 7.13
47 ============
89 ============
48
90
49 IPython 7.13 is the final release of the 7.x branch since master is diverging
91 IPython 7.13 is the final release of the 7.x branch since master is diverging
50 toward an 8.0. Exiting new features have already been merged in 8.0 and will
92 toward an 8.0. Exiting new features have already been merged in 8.0 and will
51 not be available on the 7.x branch. All the changes below have been backported
93 not be available on the 7.x branch. All the changes below have been backported
52 from the master branch.
94 from the master branch.
53
95
54
96
55 - Fix inability to run PDB when inside an event loop :ghpull:`12141`
97 - Fix inability to run PDB when inside an event loop :ghpull:`12141`
56 - Fix ability to interrupt some processes on windows :ghpull:`12137`
98 - Fix ability to interrupt some processes on windows :ghpull:`12137`
57 - Fix debugger shortcuts :ghpull:`12132`
99 - Fix debugger shortcuts :ghpull:`12132`
58 - improve tab completion when inside a string by removing irrelevant elements :ghpull:`12128`
100 - improve tab completion when inside a string by removing irrelevant elements :ghpull:`12128`
59 - Fix display of filename tab completion when the path is long :ghpull:`12122`
101 - Fix display of filename tab completion when the path is long :ghpull:`12122`
60 - Many removal of Python 2 specific code path :ghpull:`12110`
102 - Many removal of Python 2 specific code path :ghpull:`12110`
61 - displaying wav files do not require NumPy anymore, and is 5x to 30x faster :ghpull:`12113`
103 - displaying wav files do not require NumPy anymore, and is 5x to 30x faster :ghpull:`12113`
62
104
63 See the list of all closed issues and pull request on `github
105 See the list of all closed issues and pull request on `github
64 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A7.13>`_.
106 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A7.13>`_.
65
107
66 .. _version 712:
108 .. _version 712:
67
109
68 IPython 7.12
110 IPython 7.12
69 ============
111 ============
70
112
71 IPython 7.12 is a minor update that mostly brings code cleanup, removal of
113 IPython 7.12 is a minor update that mostly brings code cleanup, removal of
72 longtime deprecated function and a couple update to documentation cleanup as well.
114 longtime deprecated function and a couple update to documentation cleanup as well.
73
115
74 Notable changes are the following:
116 Notable changes are the following:
75
117
76 - Exit non-zero when ipython is given a file path to run that doesn't exist :ghpull:`12074`
118 - Exit non-zero when ipython is given a file path to run that doesn't exist :ghpull:`12074`
77 - Test PR on ARM64 with Travis-CI :ghpull:`12073`
119 - Test PR on ARM64 with Travis-CI :ghpull:`12073`
78 - Update CI to work with latest Pytest :ghpull:`12086`
120 - Update CI to work with latest Pytest :ghpull:`12086`
79 - Add infrastructure to run ipykernel eventloop via trio :ghpull:`12097`
121 - Add infrastructure to run ipykernel eventloop via trio :ghpull:`12097`
80 - Support git blame ignore revs :ghpull:`12091`
122 - Support git blame ignore revs :ghpull:`12091`
81 - Start multi-line ``__repr__`` s on their own line :ghpull:`12099`
123 - Start multi-line ``__repr__`` s on their own line :ghpull:`12099`
82
124
83 .. _version 7111:
125 .. _version 7111:
84
126
85 IPython 7.11.1
127 IPython 7.11.1
86 ==============
128 ==============
87
129
88 A couple of deprecated functions (no-op) have been reintroduces in py3compat as
130 A couple of deprecated functions (no-op) have been reintroduces in py3compat as
89 Cython was still relying on them, and will be removed in a couple of versions.
131 Cython was still relying on them, and will be removed in a couple of versions.
90
132
91 .. _version 711:
133 .. _version 711:
92
134
93 IPython 7.11
135 IPython 7.11
94 ============
136 ============
95
137
96 IPython 7.11 received a couple of compatibility fixes and code cleanup.
138 IPython 7.11 received a couple of compatibility fixes and code cleanup.
97
139
98 A number of function in the ``py3compat`` have been removed; a number of types
140 A number of function in the ``py3compat`` have been removed; a number of types
99 in the IPython code base are now non-ambiguous and now always ``unicode``
141 in the IPython code base are now non-ambiguous and now always ``unicode``
100 instead of ``Union[Unicode,bytes]``; many of the relevant code path have thus
142 instead of ``Union[Unicode,bytes]``; many of the relevant code path have thus
101 been simplified/cleaned and types annotation added.
143 been simplified/cleaned and types annotation added.
102
144
103 IPython support several verbosity level from exceptions. ``xmode plain`` now
145 IPython support several verbosity level from exceptions. ``xmode plain`` now
104 support chained exceptions. :ghpull:`11999`
146 support chained exceptions. :ghpull:`11999`
105
147
106 We are starting to remove ``shell=True`` in some usages of subprocess. While not directly
148 We are starting to remove ``shell=True`` in some usages of subprocess. While not directly
107 a security issue (as IPython is made to run arbitrary code anyway) it is not good
149 a security issue (as IPython is made to run arbitrary code anyway) it is not good
108 practice and we'd like to show the example. :ghissue:`12023`. This discussion
150 practice and we'd like to show the example. :ghissue:`12023`. This discussion
109 was started by ``@mschwager`` thanks to a new auditing tool they are working on
151 was started by ``@mschwager`` thanks to a new auditing tool they are working on
110 with duo-labs (`dlint <https://github.com/duo-labs/dlint>`_).
152 with duo-labs (`dlint <https://github.com/duo-labs/dlint>`_).
111
153
112 Work around some bugs in Python 3.9 tokenizer :ghpull:`12057`
154 Work around some bugs in Python 3.9 tokenizer :ghpull:`12057`
113
155
114 IPython will now print its version after a crash. :ghpull:`11986`
156 IPython will now print its version after a crash. :ghpull:`11986`
115
157
116 This is likely the last release from the 7.x series that will see new feature.
158 This is likely the last release from the 7.x series that will see new feature.
117 The master branch will soon accept large code changes and thrilling new
159 The master branch will soon accept large code changes and thrilling new
118 features; the 7.x branch will only start to accept critical bug fixes, and
160 features; the 7.x branch will only start to accept critical bug fixes, and
119 update dependencies.
161 update dependencies.
120
162
121 .. _version 7102:
163 .. _version 7102:
122
164
123 IPython 7.10.2
165 IPython 7.10.2
124 ==============
166 ==============
125
167
126 IPython 7.10.2 fix a couple of extra incompatibility between IPython, ipdb,
168 IPython 7.10.2 fix a couple of extra incompatibility between IPython, ipdb,
127 asyncio and Prompt Toolkit 3.
169 asyncio and Prompt Toolkit 3.
128
170
129 .. _version 7101:
171 .. _version 7101:
130
172
131 IPython 7.10.1
173 IPython 7.10.1
132 ==============
174 ==============
133
175
134 IPython 7.10.1 fix a couple of incompatibilities with Prompt toolkit 3 (please
176 IPython 7.10.1 fix a couple of incompatibilities with Prompt toolkit 3 (please
135 update Prompt toolkit to 3.0.2 at least), and fixes some interaction with
177 update Prompt toolkit to 3.0.2 at least), and fixes some interaction with
136 headless IPython.
178 headless IPython.
137
179
138 .. _version 7100:
180 .. _version 7100:
139
181
140 IPython 7.10.0
182 IPython 7.10.0
141 ==============
183 ==============
142
184
143 IPython 7.10 is the first double digit minor release in the last decade, and
185 IPython 7.10 is the first double digit minor release in the last decade, and
144 first since the release of IPython 1.0, previous double digit minor release was
186 first since the release of IPython 1.0, previous double digit minor release was
145 in August 2009.
187 in August 2009.
146
188
147 We've been trying to give you regular release on the last Friday of every month
189 We've been trying to give you regular release on the last Friday of every month
148 for a guaranty of rapid access to bug fixes and new features.
190 for a guaranty of rapid access to bug fixes and new features.
149
191
150 Unlike the previous first few releases that have seen only a couple of code
192 Unlike the previous first few releases that have seen only a couple of code
151 changes, 7.10 bring a number of changes, new features and bugfixes.
193 changes, 7.10 bring a number of changes, new features and bugfixes.
152
194
153 Stop Support for Python 3.5 – Adopt NEP 29
195 Stop Support for Python 3.5 – Adopt NEP 29
154 ------------------------------------------
196 ------------------------------------------
155
197
156 IPython has decided to follow the informational `NEP 29
198 IPython has decided to follow the informational `NEP 29
157 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_ which layout a clear
199 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_ which layout a clear
158 policy as to which version of (C)Python and NumPy are supported.
200 policy as to which version of (C)Python and NumPy are supported.
159
201
160 We thus dropped support for Python 3.5, and cleaned up a number of code path
202 We thus dropped support for Python 3.5, and cleaned up a number of code path
161 that were Python-version dependant. If you are on 3.5 or earlier pip should
203 that were Python-version dependant. If you are on 3.5 or earlier pip should
162 automatically give you the latest compatible version of IPython so you do not
204 automatically give you the latest compatible version of IPython so you do not
163 need to pin to a given version.
205 need to pin to a given version.
164
206
165 Support for Prompt Toolkit 3.0
207 Support for Prompt Toolkit 3.0
166 ------------------------------
208 ------------------------------
167
209
168 Prompt Toolkit 3.0 was release a week before IPython 7.10 and introduces a few
210 Prompt Toolkit 3.0 was release a week before IPython 7.10 and introduces a few
169 breaking changes. We believe IPython 7.10 should be compatible with both Prompt
211 breaking changes. We believe IPython 7.10 should be compatible with both Prompt
170 Toolkit 2.x and 3.x, though it has not been extensively tested with 3.x so
212 Toolkit 2.x and 3.x, though it has not been extensively tested with 3.x so
171 please report any issues.
213 please report any issues.
172
214
173
215
174 Prompt Rendering Performance improvements
216 Prompt Rendering Performance improvements
175 -----------------------------------------
217 -----------------------------------------
176
218
177 Pull Request :ghpull:`11933` introduced an optimisation in the prompt rendering
219 Pull Request :ghpull:`11933` introduced an optimisation in the prompt rendering
178 logic that should decrease the resource usage of IPython when using the
220 logic that should decrease the resource usage of IPython when using the
179 _default_ configuration but could potentially introduce a regression of
221 _default_ configuration but could potentially introduce a regression of
180 functionalities if you are using a custom prompt.
222 functionalities if you are using a custom prompt.
181
223
182 We know assume if you haven't changed the default keybindings that the prompt
224 We know assume if you haven't changed the default keybindings that the prompt
183 **will not change** during the duration of your input – which is for example
225 **will not change** during the duration of your input – which is for example
184 not true when using vi insert mode that switches between `[ins]` and `[nor]`
226 not true when using vi insert mode that switches between `[ins]` and `[nor]`
185 for the current mode.
227 for the current mode.
186
228
187 If you are experiencing any issue let us know.
229 If you are experiencing any issue let us know.
188
230
189 Code autoformatting
231 Code autoformatting
190 -------------------
232 -------------------
191
233
192 The IPython terminal can now auto format your code just before entering a new
234 The IPython terminal can now auto format your code just before entering a new
193 line or executing a command. To do so use the
235 line or executing a command. To do so use the
194 ``--TerminalInteractiveShell.autoformatter`` option and set it to ``'black'``;
236 ``--TerminalInteractiveShell.autoformatter`` option and set it to ``'black'``;
195 if black is installed IPython will use black to format your code when possible.
237 if black is installed IPython will use black to format your code when possible.
196
238
197 IPython cannot always properly format your code; in particular it will
239 IPython cannot always properly format your code; in particular it will
198 auto formatting with *black* will only work if:
240 auto formatting with *black* will only work if:
199
241
200 - Your code does not contains magics or special python syntax.
242 - Your code does not contains magics or special python syntax.
201
243
202 - There is no code after your cursor.
244 - There is no code after your cursor.
203
245
204 The Black API is also still in motion; so this may not work with all versions of
246 The Black API is also still in motion; so this may not work with all versions of
205 black.
247 black.
206
248
207 It should be possible to register custom formatter, though the API is till in
249 It should be possible to register custom formatter, though the API is till in
208 flux.
250 flux.
209
251
210 Arbitrary Mimetypes Handing in Terminal (Aka inline images in terminal)
252 Arbitrary Mimetypes Handing in Terminal (Aka inline images in terminal)
211 -----------------------------------------------------------------------
253 -----------------------------------------------------------------------
212
254
213 When using IPython terminal it is now possible to register function to handle
255 When using IPython terminal it is now possible to register function to handle
214 arbitrary mimetypes. While rendering non-text based representation was possible in
256 arbitrary mimetypes. While rendering non-text based representation was possible in
215 many jupyter frontend; it was not possible in terminal IPython, as usually
257 many jupyter frontend; it was not possible in terminal IPython, as usually
216 terminal are limited to displaying text. As many terminal these days provide
258 terminal are limited to displaying text. As many terminal these days provide
217 escape sequences to display non-text; bringing this loved feature to IPython CLI
259 escape sequences to display non-text; bringing this loved feature to IPython CLI
218 made a lot of sens. This functionality will not only allow inline images; but
260 made a lot of sens. This functionality will not only allow inline images; but
219 allow opening of external program; for example ``mplayer`` to "display" sound
261 allow opening of external program; for example ``mplayer`` to "display" sound
220 files.
262 files.
221
263
222 So far only the hooks necessary for this are in place, but no default mime
264 So far only the hooks necessary for this are in place, but no default mime
223 renderers added; so inline images will only be available via extensions. We will
265 renderers added; so inline images will only be available via extensions. We will
224 progressively enable these features by default in the next few releases, and
266 progressively enable these features by default in the next few releases, and
225 contribution is welcomed.
267 contribution is welcomed.
226
268
227 We welcome any feedback on the API. See :ref:`shell_mimerenderer` for more
269 We welcome any feedback on the API. See :ref:`shell_mimerenderer` for more
228 informations.
270 informations.
229
271
230 This is originally based on work form in :ghpull:`10610` from @stephanh42
272 This is originally based on work form in :ghpull:`10610` from @stephanh42
231 started over two years ago, and still a lot need to be done.
273 started over two years ago, and still a lot need to be done.
232
274
233 MISC
275 MISC
234 ----
276 ----
235
277
236 - Completions can define their own ordering :ghpull:`11855`
278 - Completions can define their own ordering :ghpull:`11855`
237 - Enable Plotting in the same cell than the one that import matplotlib
279 - Enable Plotting in the same cell than the one that import matplotlib
238 :ghpull:`11916`
280 :ghpull:`11916`
239 - Allow to store and restore multiple variables at once :ghpull:`11930`
281 - Allow to store and restore multiple variables at once :ghpull:`11930`
240
282
241 You can see `all pull-requests <https://github.com/ipython/ipython/pulls?q=is%3Apr+milestone%3A7.10+is%3Aclosed>`_ for this release.
283 You can see `all pull-requests <https://github.com/ipython/ipython/pulls?q=is%3Apr+milestone%3A7.10+is%3Aclosed>`_ for this release.
242
284
243 API Changes
285 API Changes
244 -----------
286 -----------
245
287
246 Change of API and exposed objects automatically detected using `frappuccino <https://pypi.org/project/frappuccino/>`_ (still in beta):
288 Change of API and exposed objects automatically detected using `frappuccino <https://pypi.org/project/frappuccino/>`_ (still in beta):
247
289
248 The following items are new in IPython 7.10::
290 The following items are new in IPython 7.10::
249
291
250 + IPython.terminal.shortcuts.reformat_text_before_cursor(buffer, document, shell)
292 + IPython.terminal.shortcuts.reformat_text_before_cursor(buffer, document, shell)
251 + IPython.terminal.interactiveshell.PTK3
293 + IPython.terminal.interactiveshell.PTK3
252 + IPython.terminal.interactiveshell.black_reformat_handler(text_before_cursor)
294 + IPython.terminal.interactiveshell.black_reformat_handler(text_before_cursor)
253 + IPython.terminal.prompts.RichPromptDisplayHook.write_format_data(self, format_dict, md_dict='None')
295 + IPython.terminal.prompts.RichPromptDisplayHook.write_format_data(self, format_dict, md_dict='None')
254
296
255 The following items have been removed in 7.10::
297 The following items have been removed in 7.10::
256
298
257 - IPython.lib.pretty.DICT_IS_ORDERED
299 - IPython.lib.pretty.DICT_IS_ORDERED
258
300
259 The following signatures differ between versions::
301 The following signatures differ between versions::
260
302
261 - IPython.extensions.storemagic.restore_aliases(ip)
303 - IPython.extensions.storemagic.restore_aliases(ip)
262 + IPython.extensions.storemagic.restore_aliases(ip, alias='None')
304 + IPython.extensions.storemagic.restore_aliases(ip, alias='None')
263
305
264 Special Thanks
306 Special Thanks
265 --------------
307 --------------
266
308
267 - @stephanh42 who started the work on inline images in terminal 2 years ago
309 - @stephanh42 who started the work on inline images in terminal 2 years ago
268 - @augustogoulart who spent a lot of time triaging issues and responding to
310 - @augustogoulart who spent a lot of time triaging issues and responding to
269 users.
311 users.
270 - @con-f-use who is my (@Carreau) first sponsor on GitHub, as a reminder if you
312 - @con-f-use who is my (@Carreau) first sponsor on GitHub, as a reminder if you
271 like IPython, Jupyter and many other library of the SciPy stack you can
313 like IPython, Jupyter and many other library of the SciPy stack you can
272 donate to numfocus.org non profit
314 donate to numfocus.org non profit
273
315
274 .. _version 790:
316 .. _version 790:
275
317
276 IPython 7.9.0
318 IPython 7.9.0
277 =============
319 =============
278
320
279 IPython 7.9 is a small release with a couple of improvement and bug fixes.
321 IPython 7.9 is a small release with a couple of improvement and bug fixes.
280
322
281 - Xterm terminal title should be restored on exit :ghpull:`11910`
323 - Xterm terminal title should be restored on exit :ghpull:`11910`
282 - special variables ``_``,``__``, ``___`` are not set anymore when cache size
324 - special variables ``_``,``__``, ``___`` are not set anymore when cache size
283 is 0 or less. :ghpull:`11877`
325 is 0 or less. :ghpull:`11877`
284 - Autoreload should have regained some speed by using a new heuristic logic to
326 - Autoreload should have regained some speed by using a new heuristic logic to
285 find all objects needing reload. This should avoid large objects traversal
327 find all objects needing reload. This should avoid large objects traversal
286 like pandas dataframes. :ghpull:`11876`
328 like pandas dataframes. :ghpull:`11876`
287 - Get ready for Python 4. :ghpull:`11874`
329 - Get ready for Python 4. :ghpull:`11874`
288 - `%env` Magic now has heuristic to hide potentially sensitive values :ghpull:`11896`
330 - `%env` Magic now has heuristic to hide potentially sensitive values :ghpull:`11896`
289
331
290 This is a small release despite a number of Pull Request Pending that need to
332 This is a small release despite a number of Pull Request Pending that need to
291 be reviewed/worked on. Many of the core developers have been busy outside of
333 be reviewed/worked on. Many of the core developers have been busy outside of
292 IPython/Jupyter and we thanks all contributor for their patience; we'll work on
334 IPython/Jupyter and we thanks all contributor for their patience; we'll work on
293 these as soon as we have time.
335 these as soon as we have time.
294
336
295
337
296 .. _version780:
338 .. _version780:
297
339
298 IPython 7.8.0
340 IPython 7.8.0
299 =============
341 =============
300
342
301 IPython 7.8.0 contain a few bugfix and 2 new APIs:
343 IPython 7.8.0 contain a few bugfix and 2 new APIs:
302
344
303 - Enable changing the font color for LaTeX rendering :ghpull:`11840`
345 - Enable changing the font color for LaTeX rendering :ghpull:`11840`
304 - and Re-Expose some PDB API (see below)
346 - and Re-Expose some PDB API (see below)
305
347
306 Expose Pdb API
348 Expose Pdb API
307 --------------
349 --------------
308
350
309 Expose the built-in ``pdb.Pdb`` API. ``Pdb`` constructor arguments are generically
351 Expose the built-in ``pdb.Pdb`` API. ``Pdb`` constructor arguments are generically
310 exposed, regardless of python version.
352 exposed, regardless of python version.
311 Newly exposed arguments:
353 Newly exposed arguments:
312
354
313 - ``skip`` - Python 3.1+
355 - ``skip`` - Python 3.1+
314 - ``nosiginnt`` - Python 3.2+
356 - ``nosiginnt`` - Python 3.2+
315 - ``readrc`` - Python 3.6+
357 - ``readrc`` - Python 3.6+
316
358
317 Try it out::
359 Try it out::
318
360
319 from IPython.terminal.debugger import TerminalPdb
361 from IPython.terminal.debugger import TerminalPdb
320 pdb = TerminalPdb(skip=["skipthismodule"])
362 pdb = TerminalPdb(skip=["skipthismodule"])
321
363
322
364
323 See :ghpull:`11840`
365 See :ghpull:`11840`
324
366
325 .. _version770:
367 .. _version770:
326
368
327 IPython 7.7.0
369 IPython 7.7.0
328 =============
370 =============
329
371
330 IPython 7.7.0 contain multiple bug fixes and documentation updates; Here are a
372 IPython 7.7.0 contain multiple bug fixes and documentation updates; Here are a
331 few of the outstanding issue fixed:
373 few of the outstanding issue fixed:
332
374
333 - Fix a bug introduced in 7.6 where the ``%matplotlib`` magic would fail on
375 - Fix a bug introduced in 7.6 where the ``%matplotlib`` magic would fail on
334 previously acceptable arguments :ghpull:`11814`.
376 previously acceptable arguments :ghpull:`11814`.
335 - Fix the manage location on freebsd :ghpull:`11808`.
377 - Fix the manage location on freebsd :ghpull:`11808`.
336 - Fix error message about aliases after ``%reset`` call in ipykernel
378 - Fix error message about aliases after ``%reset`` call in ipykernel
337 :ghpull:`11806`
379 :ghpull:`11806`
338 - Fix Duplication completions in emacs :ghpull:`11803`
380 - Fix Duplication completions in emacs :ghpull:`11803`
339
381
340 We are planning to adopt `NEP29 <https://github.com/numpy/numpy/pull/14086>`_
382 We are planning to adopt `NEP29 <https://github.com/numpy/numpy/pull/14086>`_
341 (still currently in draft) which may make this minor version of IPython the
383 (still currently in draft) which may make this minor version of IPython the
342 last one to support Python 3.5 and will make the code base more aggressive
384 last one to support Python 3.5 and will make the code base more aggressive
343 toward removing compatibility with older versions of Python.
385 toward removing compatibility with older versions of Python.
344
386
345 GitHub now support to give only "Triage" permissions to users; if you'd like to
387 GitHub now support to give only "Triage" permissions to users; if you'd like to
346 help close stale issues and labels issues please reach to us with your GitHub
388 help close stale issues and labels issues please reach to us with your GitHub
347 Username and we'll add you to the triage team. It is a great way to start
389 Username and we'll add you to the triage team. It is a great way to start
348 contributing and a path toward getting commit rights.
390 contributing and a path toward getting commit rights.
349
391
350 .. _version761:
392 .. _version761:
351
393
352 IPython 7.6.1
394 IPython 7.6.1
353 =============
395 =============
354
396
355 IPython 7.6.1 contain a critical bugfix in the ``%timeit`` magic, which would
397 IPython 7.6.1 contain a critical bugfix in the ``%timeit`` magic, which would
356 crash on some inputs as a side effect of :ghpull:`11716`. See :ghpull:`11812`
398 crash on some inputs as a side effect of :ghpull:`11716`. See :ghpull:`11812`
357
399
358
400
359 .. _whatsnew760:
401 .. _whatsnew760:
360
402
361 IPython 7.6.0
403 IPython 7.6.0
362 =============
404 =============
363
405
364 IPython 7.6.0 contains a couple of bug fixes and number of small features
406 IPython 7.6.0 contains a couple of bug fixes and number of small features
365 additions as well as some compatibility with the current development version of
407 additions as well as some compatibility with the current development version of
366 Python 3.8.
408 Python 3.8.
367
409
368 - Add a ``-l`` option to :magic:`psearch` to list the available search
410 - Add a ``-l`` option to :magic:`psearch` to list the available search
369 types. :ghpull:`11672`
411 types. :ghpull:`11672`
370 - Support ``PathLike`` for ``DisplayObject`` and ``Image``. :ghpull:`11764`
412 - Support ``PathLike`` for ``DisplayObject`` and ``Image``. :ghpull:`11764`
371 - Configurability of timeout in the test suite for slow platforms.
413 - Configurability of timeout in the test suite for slow platforms.
372 :ghpull:`11756`
414 :ghpull:`11756`
373 - Accept any casing for matplotlib backend. :ghpull:`121748`
415 - Accept any casing for matplotlib backend. :ghpull:`121748`
374 - Properly skip test that requires numpy to be installed :ghpull:`11723`
416 - Properly skip test that requires numpy to be installed :ghpull:`11723`
375 - More support for Python 3.8 and positional only arguments (pep570)
417 - More support for Python 3.8 and positional only arguments (pep570)
376 :ghpull:`11720`
418 :ghpull:`11720`
377 - Unicode names for the completion are loaded lazily on first use which
419 - Unicode names for the completion are loaded lazily on first use which
378 should decrease startup time. :ghpull:`11693`
420 should decrease startup time. :ghpull:`11693`
379 - Autoreload now update the types of reloaded objects; this for example allow
421 - Autoreload now update the types of reloaded objects; this for example allow
380 pickling of reloaded objects. :ghpull:`11644`
422 pickling of reloaded objects. :ghpull:`11644`
381 - Fix a bug where ``%%time`` magic would suppress cell output. :ghpull:`11716`
423 - Fix a bug where ``%%time`` magic would suppress cell output. :ghpull:`11716`
382
424
383
425
384 Prepare migration to pytest (instead of nose) for testing
426 Prepare migration to pytest (instead of nose) for testing
385 ---------------------------------------------------------
427 ---------------------------------------------------------
386
428
387 Most of the work between 7.5 and 7.6 was to prepare the migration from our
429 Most of the work between 7.5 and 7.6 was to prepare the migration from our
388 testing framework to pytest. Most of the test suite should now work by simply
430 testing framework to pytest. Most of the test suite should now work by simply
389 issuing ``pytest`` from the root of the repository.
431 issuing ``pytest`` from the root of the repository.
390
432
391 The migration to pytest is just at its beginning. Many of our test still rely
433 The migration to pytest is just at its beginning. Many of our test still rely
392 on IPython-specific plugins for nose using pytest (doctest using IPython syntax
434 on IPython-specific plugins for nose using pytest (doctest using IPython syntax
393 is one example of this where test appear as "passing", while no code has been
435 is one example of this where test appear as "passing", while no code has been
394 ran). Many test also need to be updated like ``yield-test`` to be properly
436 ran). Many test also need to be updated like ``yield-test`` to be properly
395 parametrized tests.
437 parametrized tests.
396
438
397 Migration to pytest allowed me to discover a number of issues in our test
439 Migration to pytest allowed me to discover a number of issues in our test
398 suite; which was hiding a number of subtle issues – or not actually running
440 suite; which was hiding a number of subtle issues – or not actually running
399 some of the tests in our test suite – I have thus corrected many of those; like
441 some of the tests in our test suite – I have thus corrected many of those; like
400 improperly closed resources; or used of deprecated features. I also made use of
442 improperly closed resources; or used of deprecated features. I also made use of
401 the ``pytest --durations=...`` to find some of our slowest test and speed them
443 the ``pytest --durations=...`` to find some of our slowest test and speed them
402 up (our test suite can now be up to 10% faster). Pytest as also a variety of
444 up (our test suite can now be up to 10% faster). Pytest as also a variety of
403 plugins and flags which will make the code quality of IPython and the testing
445 plugins and flags which will make the code quality of IPython and the testing
404 experience better.
446 experience better.
405
447
406 Misc
448 Misc
407 ----
449 ----
408
450
409 We skipped the release of 7.6 at the end of May, but will attempt to get back
451 We skipped the release of 7.6 at the end of May, but will attempt to get back
410 on schedule. We are starting to think about making introducing backward
452 on schedule. We are starting to think about making introducing backward
411 incompatible change and start the 8.0 series.
453 incompatible change and start the 8.0 series.
412
454
413 Special Thanks to Gabriel (@gpotter2 on GitHub), who among other took care many
455 Special Thanks to Gabriel (@gpotter2 on GitHub), who among other took care many
414 of the remaining task for 7.4 and 7.5, like updating the website.
456 of the remaining task for 7.4 and 7.5, like updating the website.
415
457
416 .. _whatsnew750:
458 .. _whatsnew750:
417
459
418 IPython 7.5.0
460 IPython 7.5.0
419 =============
461 =============
420
462
421 IPython 7.5.0 consist mostly of bug-fixes, and documentation updates, with one
463 IPython 7.5.0 consist mostly of bug-fixes, and documentation updates, with one
422 minor new feature. The `Audio` display element can now be assigned an element
464 minor new feature. The `Audio` display element can now be assigned an element
423 id when displayed in browser. See :ghpull:`11670`
465 id when displayed in browser. See :ghpull:`11670`
424
466
425 The major outstanding bug fix correct a change of behavior that was introduce
467 The major outstanding bug fix correct a change of behavior that was introduce
426 in 7.4.0 where some cell magics would not be able to access or modify global
468 in 7.4.0 where some cell magics would not be able to access or modify global
427 scope when using the ``@needs_local_scope`` decorator. This was typically
469 scope when using the ``@needs_local_scope`` decorator. This was typically
428 encountered with the ``%%time`` and ``%%timeit`` magics. See :ghissue:`11659`
470 encountered with the ``%%time`` and ``%%timeit`` magics. See :ghissue:`11659`
429 and :ghpull:`11698`.
471 and :ghpull:`11698`.
430
472
431 .. _whatsnew740:
473 .. _whatsnew740:
432
474
433 IPython 7.4.0
475 IPython 7.4.0
434 =============
476 =============
435
477
436 Unicode name completions
478 Unicode name completions
437 ------------------------
479 ------------------------
438
480
439 Previously, we provided completion for a unicode name with its relative symbol.
481 Previously, we provided completion for a unicode name with its relative symbol.
440 With this, now IPython provides complete suggestions to unicode name symbols.
482 With this, now IPython provides complete suggestions to unicode name symbols.
441
483
442 As on the PR, if user types ``\LAT<tab>``, IPython provides a list of
484 As on the PR, if user types ``\LAT<tab>``, IPython provides a list of
443 possible completions. In this case, it would be something like::
485 possible completions. In this case, it would be something like::
444
486
445 'LATIN CAPITAL LETTER A',
487 'LATIN CAPITAL LETTER A',
446 'LATIN CAPITAL LETTER B',
488 'LATIN CAPITAL LETTER B',
447 'LATIN CAPITAL LETTER C',
489 'LATIN CAPITAL LETTER C',
448 'LATIN CAPITAL LETTER D',
490 'LATIN CAPITAL LETTER D',
449 ....
491 ....
450
492
451 This help to type unicode character that do not have short latex aliases, and
493 This help to type unicode character that do not have short latex aliases, and
452 have long unicode names. for example ``Ν°``, ``\GREEK CAPITAL LETTER HETA``.
494 have long unicode names. for example ``Ν°``, ``\GREEK CAPITAL LETTER HETA``.
453
495
454 This feature was contributed by Luciana Marques :ghpull:`11583`.
496 This feature was contributed by Luciana Marques :ghpull:`11583`.
455
497
456 Make audio normalization optional
498 Make audio normalization optional
457 ---------------------------------
499 ---------------------------------
458
500
459 Added 'normalize' argument to `IPython.display.Audio`. This argument applies
501 Added 'normalize' argument to `IPython.display.Audio`. This argument applies
460 when audio data is given as an array of samples. The default of `normalize=True`
502 when audio data is given as an array of samples. The default of `normalize=True`
461 preserves prior behavior of normalizing the audio to the maximum possible range.
503 preserves prior behavior of normalizing the audio to the maximum possible range.
462 Setting to `False` disables normalization.
504 Setting to `False` disables normalization.
463
505
464
506
465 Miscellaneous
507 Miscellaneous
466 -------------
508 -------------
467
509
468 - Fix improper acceptation of ``return`` outside of functions. :ghpull:`11641`.
510 - Fix improper acceptation of ``return`` outside of functions. :ghpull:`11641`.
469 - Fixed PyQt 5.11 backwards incompatibility causing sip import failure.
511 - Fixed PyQt 5.11 backwards incompatibility causing sip import failure.
470 :ghpull:`11613`.
512 :ghpull:`11613`.
471 - Fix Bug where ``type?`` would crash IPython. :ghpull:`1608`.
513 - Fix Bug where ``type?`` would crash IPython. :ghpull:`1608`.
472 - Allow to apply ``@needs_local_scope`` to cell magics for convenience.
514 - Allow to apply ``@needs_local_scope`` to cell magics for convenience.
473 :ghpull:`11542`.
515 :ghpull:`11542`.
474
516
475 .. _whatsnew730:
517 .. _whatsnew730:
476
518
477 IPython 7.3.0
519 IPython 7.3.0
478 =============
520 =============
479
521
480 .. _whatsnew720:
522 .. _whatsnew720:
481
523
482 IPython 7.3.0 bring several bug fixes and small improvements that you will
524 IPython 7.3.0 bring several bug fixes and small improvements that you will
483 described bellow.
525 described bellow.
484
526
485 The biggest change to this release is the implementation of the ``%conda`` and
527 The biggest change to this release is the implementation of the ``%conda`` and
486 ``%pip`` magics, that will attempt to install packages in the **current
528 ``%pip`` magics, that will attempt to install packages in the **current
487 environment**. You may still need to restart your interpreter or kernel for the
529 environment**. You may still need to restart your interpreter or kernel for the
488 change to be taken into account, but it should simplify installation of packages
530 change to be taken into account, but it should simplify installation of packages
489 into remote environment. Installing using pip/conda from the command line is
531 into remote environment. Installing using pip/conda from the command line is
490 still the prefer method.
532 still the prefer method.
491
533
492 The ``%pip`` magic was already present, but was only printing a warning; now it
534 The ``%pip`` magic was already present, but was only printing a warning; now it
493 will actually forward commands to pip.
535 will actually forward commands to pip.
494
536
495 Misc bug fixes and improvements:
537 Misc bug fixes and improvements:
496
538
497 - Compatibility with Python 3.8.
539 - Compatibility with Python 3.8.
498 - Do not expand shell variable in execution magics, and added the
540 - Do not expand shell variable in execution magics, and added the
499 ``no_var_expand`` decorator for magic requiring a similar functionality
541 ``no_var_expand`` decorator for magic requiring a similar functionality
500 :ghpull:`11516`
542 :ghpull:`11516`
501 - Add ``%pip`` and ``%conda`` magic :ghpull:`11524`
543 - Add ``%pip`` and ``%conda`` magic :ghpull:`11524`
502 - Re-initialize posix aliases after a ``%reset`` :ghpull:`11528`
544 - Re-initialize posix aliases after a ``%reset`` :ghpull:`11528`
503 - Allow the IPython command line to run ``*.ipynb`` files :ghpull:`11529`
545 - Allow the IPython command line to run ``*.ipynb`` files :ghpull:`11529`
504
546
505 IPython 7.2.0
547 IPython 7.2.0
506 =============
548 =============
507
549
508 IPython 7.2.0 brings minor bugfixes, improvements, and new configuration options:
550 IPython 7.2.0 brings minor bugfixes, improvements, and new configuration options:
509
551
510 - Fix a bug preventing PySide2 GUI integration from working :ghpull:`11464`
552 - Fix a bug preventing PySide2 GUI integration from working :ghpull:`11464`
511 - Run CI on Mac OS ! :ghpull:`11471`
553 - Run CI on Mac OS ! :ghpull:`11471`
512 - Fix IPython "Demo" mode. :ghpull:`11498`
554 - Fix IPython "Demo" mode. :ghpull:`11498`
513 - Fix ``%run`` magic with path in name :ghpull:`11499`
555 - Fix ``%run`` magic with path in name :ghpull:`11499`
514 - Fix: add CWD to sys.path *after* stdlib :ghpull:`11502`
556 - Fix: add CWD to sys.path *after* stdlib :ghpull:`11502`
515 - Better rendering of signatures, especially long ones. :ghpull:`11505`
557 - Better rendering of signatures, especially long ones. :ghpull:`11505`
516 - Re-enable jedi by default if it's installed :ghpull:`11506`
558 - Re-enable jedi by default if it's installed :ghpull:`11506`
517 - Add New ``minimal`` exception reporting mode (useful for educational purpose). See :ghpull:`11509`
559 - Add New ``minimal`` exception reporting mode (useful for educational purpose). See :ghpull:`11509`
518
560
519
561
520 Added ability to show subclasses when using pinfo and other utilities
562 Added ability to show subclasses when using pinfo and other utilities
521 ---------------------------------------------------------------------
563 ---------------------------------------------------------------------
522
564
523 When using ``?``/``??`` on a class, IPython will now list the first 10 subclasses.
565 When using ``?``/``??`` on a class, IPython will now list the first 10 subclasses.
524
566
525 Special Thanks to Chris Mentzel of the Moore Foundation for this feature. Chris
567 Special Thanks to Chris Mentzel of the Moore Foundation for this feature. Chris
526 is one of the people who played a critical role in IPython/Jupyter getting
568 is one of the people who played a critical role in IPython/Jupyter getting
527 funding.
569 funding.
528
570
529 We are grateful for all the help Chris has given us over the years,
571 We are grateful for all the help Chris has given us over the years,
530 and we're now proud to have code contributed by Chris in IPython.
572 and we're now proud to have code contributed by Chris in IPython.
531
573
532 OSMagics.cd_force_quiet configuration option
574 OSMagics.cd_force_quiet configuration option
533 --------------------------------------------
575 --------------------------------------------
534
576
535 You can set this option to force the %cd magic to behave as if ``-q`` was passed:
577 You can set this option to force the %cd magic to behave as if ``-q`` was passed:
536 ::
578 ::
537
579
538 In [1]: cd /
580 In [1]: cd /
539 /
581 /
540
582
541 In [2]: %config OSMagics.cd_force_quiet = True
583 In [2]: %config OSMagics.cd_force_quiet = True
542
584
543 In [3]: cd /tmp
585 In [3]: cd /tmp
544
586
545 In [4]:
587 In [4]:
546
588
547 See :ghpull:`11491`
589 See :ghpull:`11491`
548
590
549 In vi editing mode, whether the prompt includes the current vi mode can now be configured
591 In vi editing mode, whether the prompt includes the current vi mode can now be configured
550 -----------------------------------------------------------------------------------------
592 -----------------------------------------------------------------------------------------
551
593
552 Set the ``TerminalInteractiveShell.prompt_includes_vi_mode`` to a boolean value
594 Set the ``TerminalInteractiveShell.prompt_includes_vi_mode`` to a boolean value
553 (default: True) to control this feature. See :ghpull:`11492`
595 (default: True) to control this feature. See :ghpull:`11492`
554
596
555 .. _whatsnew710:
597 .. _whatsnew710:
556
598
557 IPython 7.1.0
599 IPython 7.1.0
558 =============
600 =============
559
601
560 IPython 7.1.0 is the first minor release after 7.0.0 and mostly brings fixes to
602 IPython 7.1.0 is the first minor release after 7.0.0 and mostly brings fixes to
561 new features, internal refactoring, and fixes for regressions that happened during the 6.x->7.x
603 new features, internal refactoring, and fixes for regressions that happened during the 6.x->7.x
562 transition. It also brings **Compatibility with Python 3.7.1**, as we're
604 transition. It also brings **Compatibility with Python 3.7.1**, as we're
563 unwillingly relying on a bug in CPython.
605 unwillingly relying on a bug in CPython.
564
606
565 New Core Dev:
607 New Core Dev:
566
608
567 - We welcome Jonathan Slenders to the commiters. Jonathan has done a fantastic
609 - We welcome Jonathan Slenders to the commiters. Jonathan has done a fantastic
568 work on prompt_toolkit, and we'd like to recognise his impact by giving him
610 work on prompt_toolkit, and we'd like to recognise his impact by giving him
569 commit rights. :ghissue:`11397`
611 commit rights. :ghissue:`11397`
570
612
571 Notable Changes
613 Notable Changes
572
614
573 - Major update of "latex to unicode" tab completion map (see below)
615 - Major update of "latex to unicode" tab completion map (see below)
574
616
575 Notable New Features:
617 Notable New Features:
576
618
577 - Restore functionality and documentation of the **sphinx directive**, which
619 - Restore functionality and documentation of the **sphinx directive**, which
578 is now stricter (fail on error by daefault), has new configuration options,
620 is now stricter (fail on error by daefault), has new configuration options,
579 has a brand new documentation page :ref:`ipython_directive` (which needs
621 has a brand new documentation page :ref:`ipython_directive` (which needs
580 some cleanup). It is also now *tested* so we hope to have less regressions.
622 some cleanup). It is also now *tested* so we hope to have less regressions.
581 :ghpull:`11402`
623 :ghpull:`11402`
582
624
583 - ``IPython.display.Video`` now supports ``width`` and ``height`` arguments,
625 - ``IPython.display.Video`` now supports ``width`` and ``height`` arguments,
584 allowing a custom width and height to be set instead of using the video's
626 allowing a custom width and height to be set instead of using the video's
585 width and height. :ghpull:`11353`
627 width and height. :ghpull:`11353`
586
628
587 - Warn when using ``HTML('<iframe>')`` instead of ``IFrame`` :ghpull:`11350`
629 - Warn when using ``HTML('<iframe>')`` instead of ``IFrame`` :ghpull:`11350`
588
630
589 - Allow Dynamic switching of editing mode between vi/emacs and show
631 - Allow Dynamic switching of editing mode between vi/emacs and show
590 normal/input mode in prompt when using vi. :ghpull:`11390`. Use ``%config
632 normal/input mode in prompt when using vi. :ghpull:`11390`. Use ``%config
591 TerminalInteractiveShell.editing_mode = 'vi'`` or ``%config
633 TerminalInteractiveShell.editing_mode = 'vi'`` or ``%config
592 TerminalInteractiveShell.editing_mode = 'emacs'`` to dynamically switch
634 TerminalInteractiveShell.editing_mode = 'emacs'`` to dynamically switch
593 between modes.
635 between modes.
594
636
595
637
596 Notable Fixes:
638 Notable Fixes:
597
639
598 - Fix entering of **multi-line blocks in terminal** IPython, and various
640 - Fix entering of **multi-line blocks in terminal** IPython, and various
599 crashes in the new input transformation machinery :ghpull:`11354`,
641 crashes in the new input transformation machinery :ghpull:`11354`,
600 :ghpull:`11356`, :ghpull:`11358`. These also fix a **Compatibility bug
642 :ghpull:`11356`, :ghpull:`11358`. These also fix a **Compatibility bug
601 with Python 3.7.1**.
643 with Python 3.7.1**.
602
644
603 - Fix moving through generator stack in ipdb :ghpull:`11266`
645 - Fix moving through generator stack in ipdb :ghpull:`11266`
604
646
605 - %Magic command arguments now support quoting. :ghpull:`11330`
647 - %Magic command arguments now support quoting. :ghpull:`11330`
606
648
607 - Re-add ``rprint`` and ``rprinte`` aliases. :ghpull:`11331`
649 - Re-add ``rprint`` and ``rprinte`` aliases. :ghpull:`11331`
608
650
609 - Remove implicit dependency on ``ipython_genutils`` :ghpull:`11317`
651 - Remove implicit dependency on ``ipython_genutils`` :ghpull:`11317`
610
652
611 - Make ``nonlocal`` raise ``SyntaxError`` instead of silently failing in async
653 - Make ``nonlocal`` raise ``SyntaxError`` instead of silently failing in async
612 mode. :ghpull:`11382`
654 mode. :ghpull:`11382`
613
655
614 - Fix mishandling of magics and ``= !`` assignment just after a dedent in
656 - Fix mishandling of magics and ``= !`` assignment just after a dedent in
615 nested code blocks :ghpull:`11418`
657 nested code blocks :ghpull:`11418`
616
658
617 - Fix instructions for custom shortcuts :ghpull:`11426`
659 - Fix instructions for custom shortcuts :ghpull:`11426`
618
660
619
661
620 Notable Internals improvements:
662 Notable Internals improvements:
621
663
622 - Use of ``os.scandir`` (Python 3 only) to speed up some file system operations.
664 - Use of ``os.scandir`` (Python 3 only) to speed up some file system operations.
623 :ghpull:`11365`
665 :ghpull:`11365`
624
666
625 - use ``perf_counter`` instead of ``clock`` for more precise
667 - use ``perf_counter`` instead of ``clock`` for more precise
626 timing results with ``%time`` :ghpull:`11376`
668 timing results with ``%time`` :ghpull:`11376`
627
669
628 Many thanks to all the contributors and in particular to ``bartskowron`` and
670 Many thanks to all the contributors and in particular to ``bartskowron`` and
629 ``tonyfast`` who handled some pretty complicated bugs in the input machinery. We
671 ``tonyfast`` who handled some pretty complicated bugs in the input machinery. We
630 had a number of first time contributors and maybe hacktoberfest participants that
672 had a number of first time contributors and maybe hacktoberfest participants that
631 made significant contributions and helped us free some time to focus on more
673 made significant contributions and helped us free some time to focus on more
632 complicated bugs.
674 complicated bugs.
633
675
634 You
676 You
635 can see all the closed issues and Merged PR, new features and fixes `here
677 can see all the closed issues and Merged PR, new features and fixes `here
636 <https://github.com/ipython/ipython/issues?utf8=%E2%9C%93&q=+is%3Aclosed+milestone%3A7.1+>`_.
678 <https://github.com/ipython/ipython/issues?utf8=%E2%9C%93&q=+is%3Aclosed+milestone%3A7.1+>`_.
637
679
638 Unicode Completion update
680 Unicode Completion update
639 -------------------------
681 -------------------------
640
682
641 In IPython 7.1 the Unicode completion map has been updated and synchronized with
683 In IPython 7.1 the Unicode completion map has been updated and synchronized with
642 the Julia language.
684 the Julia language.
643
685
644 Added and removed character characters:
686 Added and removed character characters:
645
687
646 ``\jmath`` (``Θ·``), ``\\underleftrightarrow`` (U+034D, combining) have been
688 ``\jmath`` (``Θ·``), ``\\underleftrightarrow`` (U+034D, combining) have been
647 added, while ``\\textasciicaron`` have been removed
689 added, while ``\\textasciicaron`` have been removed
648
690
649 Some sequences have seen their prefix removed:
691 Some sequences have seen their prefix removed:
650
692
651 - 6 characters ``\text...<tab>`` should now be inputed with ``\...<tab>`` directly,
693 - 6 characters ``\text...<tab>`` should now be inputed with ``\...<tab>`` directly,
652 - 45 characters ``\Elz...<tab>`` should now be inputed with ``\...<tab>`` directly,
694 - 45 characters ``\Elz...<tab>`` should now be inputed with ``\...<tab>`` directly,
653 - 65 characters ``\B...<tab>`` should now be inputed with ``\...<tab>`` directly,
695 - 65 characters ``\B...<tab>`` should now be inputed with ``\...<tab>`` directly,
654 - 450 characters ``\m...<tab>`` should now be inputed with ``\...<tab>`` directly,
696 - 450 characters ``\m...<tab>`` should now be inputed with ``\...<tab>`` directly,
655
697
656 Some sequences have seen their prefix shortened:
698 Some sequences have seen their prefix shortened:
657
699
658 - 5 characters ``\mitBbb...<tab>`` should now be inputed with ``\bbi...<tab>`` directly,
700 - 5 characters ``\mitBbb...<tab>`` should now be inputed with ``\bbi...<tab>`` directly,
659 - 52 characters ``\mit...<tab>`` should now be inputed with ``\i...<tab>`` directly,
701 - 52 characters ``\mit...<tab>`` should now be inputed with ``\i...<tab>`` directly,
660 - 216 characters ``\mbfit...<tab>`` should now be inputed with ``\bi...<tab>`` directly,
702 - 216 characters ``\mbfit...<tab>`` should now be inputed with ``\bi...<tab>`` directly,
661 - 222 characters ``\mbf...<tab>`` should now be inputed with ``\b...<tab>`` directly,
703 - 222 characters ``\mbf...<tab>`` should now be inputed with ``\b...<tab>`` directly,
662
704
663 A couple of characters had their sequence simplified:
705 A couple of characters had their sequence simplified:
664
706
665 - ``Γ°``, type ``\dh<tab>``, instead of ``\eth<tab>``
707 - ``Γ°``, type ``\dh<tab>``, instead of ``\eth<tab>``
666 - ``Δ§``, type ``\hbar<tab>``, instead of ``\Elzxh<tab>``
708 - ``Δ§``, type ``\hbar<tab>``, instead of ``\Elzxh<tab>``
667 - ``ΙΈ``, type ``\ltphi<tab>``, instead of ``\textphi<tab>``
709 - ``ΙΈ``, type ``\ltphi<tab>``, instead of ``\textphi<tab>``
668 - ``Ο΄``, type ``\varTheta<tab>``, instead of ``\textTheta<tab>``
710 - ``Ο΄``, type ``\varTheta<tab>``, instead of ``\textTheta<tab>``
669 - ``ℇ``, type ``\eulermascheroni<tab>``, instead of ``\Eulerconst<tab>``
711 - ``ℇ``, type ``\eulermascheroni<tab>``, instead of ``\Eulerconst<tab>``
670 - ``β„Ž``, type ``\planck<tab>``, instead of ``\Planckconst<tab>``
712 - ``β„Ž``, type ``\planck<tab>``, instead of ``\Planckconst<tab>``
671
713
672 - U+0336 (COMBINING LONG STROKE OVERLAY), type ``\strike<tab>``, instead of ``\Elzbar<tab>``.
714 - U+0336 (COMBINING LONG STROKE OVERLAY), type ``\strike<tab>``, instead of ``\Elzbar<tab>``.
673
715
674 A couple of sequences have been updated:
716 A couple of sequences have been updated:
675
717
676 - ``\varepsilon`` now gives ``Ι›`` (GREEK SMALL LETTER EPSILON) instead of ``Ξ΅`` (GREEK LUNATE EPSILON SYMBOL),
718 - ``\varepsilon`` now gives ``Ι›`` (GREEK SMALL LETTER EPSILON) instead of ``Ξ΅`` (GREEK LUNATE EPSILON SYMBOL),
677 - ``\underbar`` now gives U+0331 (COMBINING MACRON BELOW) instead of U+0332 (COMBINING LOW LINE).
719 - ``\underbar`` now gives U+0331 (COMBINING MACRON BELOW) instead of U+0332 (COMBINING LOW LINE).
678
720
679
721
680 .. _whatsnew700:
722 .. _whatsnew700:
681
723
682 IPython 7.0.0
724 IPython 7.0.0
683 =============
725 =============
684
726
685 Released Thursday September 27th, 2018
727 Released Thursday September 27th, 2018
686
728
687 IPython 7 includes major feature improvements.
729 IPython 7 includes major feature improvements.
688 This is also the second major version of IPython to support only
730 This is also the second major version of IPython to support only
689 Python 3 – starting at Python 3.4. Python 2 is still community-supported
731 Python 3 – starting at Python 3.4. Python 2 is still community-supported
690 on the bugfix only 5.x branch, but we remind you that Python 2 "end of life"
732 on the bugfix only 5.x branch, but we remind you that Python 2 "end of life"
691 is on Jan 1st 2020.
733 is on Jan 1st 2020.
692
734
693 We were able to backport bug fixes to the 5.x branch thanks to our backport bot which
735 We were able to backport bug fixes to the 5.x branch thanks to our backport bot which
694 backported more than `70 Pull-Requests
736 backported more than `70 Pull-Requests
695 <https://github.com/ipython/ipython/pulls?page=3&q=is%3Apr+sort%3Aupdated-desc+author%3Aapp%2Fmeeseeksdev++5.x&utf8=%E2%9C%93>`_, but there are still many PRs that required manual work. This is an area of the project where you can easily contribute by looking for `PRs that still need manual backport <https://github.com/ipython/ipython/issues?q=label%3A%22Still+Needs+Manual+Backport%22+is%3Aclosed+sort%3Aupdated-desc>`_
737 <https://github.com/ipython/ipython/pulls?page=3&q=is%3Apr+sort%3Aupdated-desc+author%3Aapp%2Fmeeseeksdev++5.x&utf8=%E2%9C%93>`_, but there are still many PRs that required manual work. This is an area of the project where you can easily contribute by looking for `PRs that still need manual backport <https://github.com/ipython/ipython/issues?q=label%3A%22Still+Needs+Manual+Backport%22+is%3Aclosed+sort%3Aupdated-desc>`_
696
738
697 The IPython 6.x branch will likely not see any further release unless critical
739 The IPython 6.x branch will likely not see any further release unless critical
698 bugs are found.
740 bugs are found.
699
741
700 Make sure you have pip > 9.0 before upgrading. You should be able to update by running:
742 Make sure you have pip > 9.0 before upgrading. You should be able to update by running:
701
743
702 .. code::
744 .. code::
703
745
704 pip install ipython --upgrade
746 pip install ipython --upgrade
705
747
706 .. only:: ipydev
748 .. only:: ipydev
707
749
708 If you are trying to install or update an ``alpha``, ``beta``, or ``rc``
750 If you are trying to install or update an ``alpha``, ``beta``, or ``rc``
709 version, use pip ``--pre`` flag.
751 version, use pip ``--pre`` flag.
710
752
711 .. code::
753 .. code::
712
754
713 pip install ipython --upgrade --pre
755 pip install ipython --upgrade --pre
714
756
715
757
716 Or, if you have conda installed:
758 Or, if you have conda installed:
717
759
718 .. code::
760 .. code::
719
761
720 conda install ipython
762 conda install ipython
721
763
722
764
723
765
724 Prompt Toolkit 2.0
766 Prompt Toolkit 2.0
725 ------------------
767 ------------------
726
768
727 IPython 7.0+ now uses ``prompt_toolkit 2.0``. If you still need to use an earlier
769 IPython 7.0+ now uses ``prompt_toolkit 2.0``. If you still need to use an earlier
728 ``prompt_toolkit`` version, you may need to pin IPython to ``<7.0``.
770 ``prompt_toolkit`` version, you may need to pin IPython to ``<7.0``.
729
771
730 Autowait: Asynchronous REPL
772 Autowait: Asynchronous REPL
731 ---------------------------
773 ---------------------------
732
774
733 Staring with IPython 7.0 on Python 3.6+, IPython can automatically ``await``
775 Staring with IPython 7.0 on Python 3.6+, IPython can automatically ``await``
734 top level code. You should not need to access an event loop or runner
776 top level code. You should not need to access an event loop or runner
735 yourself. To learn more, read the :ref:`autoawait` section of our docs, see
777 yourself. To learn more, read the :ref:`autoawait` section of our docs, see
736 :ghpull:`11265`, or try the following code::
778 :ghpull:`11265`, or try the following code::
737
779
738 Python 3.6.0
780 Python 3.6.0
739 Type 'copyright', 'credits' or 'license' for more information
781 Type 'copyright', 'credits' or 'license' for more information
740 IPython 7.0.0 -- An enhanced Interactive Python. Type '?' for help.
782 IPython 7.0.0 -- An enhanced Interactive Python. Type '?' for help.
741
783
742 In [1]: import aiohttp
784 In [1]: import aiohttp
743 ...: result = aiohttp.get('https://api.github.com')
785 ...: result = aiohttp.get('https://api.github.com')
744
786
745 In [2]: response = await result
787 In [2]: response = await result
746 <pause for a few 100s ms>
788 <pause for a few 100s ms>
747
789
748 In [3]: await response.json()
790 In [3]: await response.json()
749 Out[3]:
791 Out[3]:
750 {'authorizations_url': 'https://api.github.com/authorizations',
792 {'authorizations_url': 'https://api.github.com/authorizations',
751 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}',
793 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}',
752 ...
794 ...
753 }
795 }
754
796
755 .. note::
797 .. note::
756
798
757 Async integration is experimental code, behavior may change or be removed
799 Async integration is experimental code, behavior may change or be removed
758 between Python and IPython versions without warnings.
800 between Python and IPython versions without warnings.
759
801
760 Integration is by default with `asyncio`, but other libraries can be configured --
802 Integration is by default with `asyncio`, but other libraries can be configured --
761 like ``curio`` or ``trio`` -- to improve concurrency in the REPL::
803 like ``curio`` or ``trio`` -- to improve concurrency in the REPL::
762
804
763 In [1]: %autoawait trio
805 In [1]: %autoawait trio
764
806
765 In [2]: import trio
807 In [2]: import trio
766
808
767 In [3]: async def child(i):
809 In [3]: async def child(i):
768 ...: print(" child %s goes to sleep"%i)
810 ...: print(" child %s goes to sleep"%i)
769 ...: await trio.sleep(2)
811 ...: await trio.sleep(2)
770 ...: print(" child %s wakes up"%i)
812 ...: print(" child %s wakes up"%i)
771
813
772 In [4]: print('parent start')
814 In [4]: print('parent start')
773 ...: async with trio.open_nursery() as n:
815 ...: async with trio.open_nursery() as n:
774 ...: for i in range(3):
816 ...: for i in range(3):
775 ...: n.spawn(child, i)
817 ...: n.spawn(child, i)
776 ...: print('parent end')
818 ...: print('parent end')
777 parent start
819 parent start
778 child 2 goes to sleep
820 child 2 goes to sleep
779 child 0 goes to sleep
821 child 0 goes to sleep
780 child 1 goes to sleep
822 child 1 goes to sleep
781 <about 2 seconds pause>
823 <about 2 seconds pause>
782 child 2 wakes up
824 child 2 wakes up
783 child 1 wakes up
825 child 1 wakes up
784 child 0 wakes up
826 child 0 wakes up
785 parent end
827 parent end
786
828
787 See :ref:`autoawait` for more information.
829 See :ref:`autoawait` for more information.
788
830
789
831
790 Asynchronous code in a Notebook interface or any other frontend using the
832 Asynchronous code in a Notebook interface or any other frontend using the
791 Jupyter Protocol will require further updates to the IPykernel package.
833 Jupyter Protocol will require further updates to the IPykernel package.
792
834
793 Non-Asynchronous code
835 Non-Asynchronous code
794 ~~~~~~~~~~~~~~~~~~~~~
836 ~~~~~~~~~~~~~~~~~~~~~
795
837
796 As the internal API of IPython is now asynchronous, IPython needs to run under
838 As the internal API of IPython is now asynchronous, IPython needs to run under
797 an event loop. In order to allow many workflows, (like using the :magic:`%run`
839 an event loop. In order to allow many workflows, (like using the :magic:`%run`
798 magic, or copy-pasting code that explicitly starts/stop event loop), when
840 magic, or copy-pasting code that explicitly starts/stop event loop), when
799 top-level code is detected as not being asynchronous, IPython code is advanced
841 top-level code is detected as not being asynchronous, IPython code is advanced
800 via a pseudo-synchronous runner, and may not advance pending tasks.
842 via a pseudo-synchronous runner, and may not advance pending tasks.
801
843
802 Change to Nested Embed
844 Change to Nested Embed
803 ~~~~~~~~~~~~~~~~~~~~~~
845 ~~~~~~~~~~~~~~~~~~~~~~
804
846
805 The introduction of the ability to run async code had some effect on the
847 The introduction of the ability to run async code had some effect on the
806 ``IPython.embed()`` API. By default, embed will not allow you to run asynchronous
848 ``IPython.embed()`` API. By default, embed will not allow you to run asynchronous
807 code unless an event loop is specified.
849 code unless an event loop is specified.
808
850
809 Effects on Magics
851 Effects on Magics
810 ~~~~~~~~~~~~~~~~~
852 ~~~~~~~~~~~~~~~~~
811
853
812 Some magics will not work with async until they're updated.
854 Some magics will not work with async until they're updated.
813 Contributions welcome.
855 Contributions welcome.
814
856
815 Expected Future changes
857 Expected Future changes
816 ~~~~~~~~~~~~~~~~~~~~~~~
858 ~~~~~~~~~~~~~~~~~~~~~~~
817
859
818 We expect more internal but public IPython functions to become ``async``, and
860 We expect more internal but public IPython functions to become ``async``, and
819 will likely end up having a persistent event loop while IPython is running.
861 will likely end up having a persistent event loop while IPython is running.
820
862
821 Thanks
863 Thanks
822 ~~~~~~
864 ~~~~~~
823
865
824 This release took more than a year in the making.
866 This release took more than a year in the making.
825 The code was rebased a number of
867 The code was rebased a number of
826 times; leading to commit authorship that may have been lost in the final
868 times; leading to commit authorship that may have been lost in the final
827 Pull-Request. Huge thanks to many people for contribution, discussion, code,
869 Pull-Request. Huge thanks to many people for contribution, discussion, code,
828 documentation, use-cases: dalejung, danielballan, ellisonbg, fperez, gnestor,
870 documentation, use-cases: dalejung, danielballan, ellisonbg, fperez, gnestor,
829 minrk, njsmith, pganssle, tacaswell, takluyver , vidartf ... And many others.
871 minrk, njsmith, pganssle, tacaswell, takluyver , vidartf ... And many others.
830
872
831
873
832 Autoreload Improvement
874 Autoreload Improvement
833 ----------------------
875 ----------------------
834
876
835 The magic :magic:`%autoreload 2 <autoreload>` now captures new methods added to
877 The magic :magic:`%autoreload 2 <autoreload>` now captures new methods added to
836 classes. Earlier, only methods existing as of the initial import were being
878 classes. Earlier, only methods existing as of the initial import were being
837 tracked and updated.
879 tracked and updated.
838
880
839 This new feature helps dual environment development - Jupyter+IDE - where the
881 This new feature helps dual environment development - Jupyter+IDE - where the
840 code gradually moves from notebook cells to package files as it gets
882 code gradually moves from notebook cells to package files as it gets
841 structured.
883 structured.
842
884
843 **Example**: An instance of the class ``MyClass`` will be able to access the
885 **Example**: An instance of the class ``MyClass`` will be able to access the
844 method ``cube()`` after it is uncommented and the file ``file1.py`` is saved on
886 method ``cube()`` after it is uncommented and the file ``file1.py`` is saved on
845 disk.
887 disk.
846
888
847
889
848 .. code::
890 .. code::
849
891
850 # notebook
892 # notebook
851
893
852 from mymodule import MyClass
894 from mymodule import MyClass
853 first = MyClass(5)
895 first = MyClass(5)
854
896
855 .. code::
897 .. code::
856
898
857 # mymodule/file1.py
899 # mymodule/file1.py
858
900
859 class MyClass:
901 class MyClass:
860
902
861 def __init__(self, a=10):
903 def __init__(self, a=10):
862 self.a = a
904 self.a = a
863
905
864 def square(self):
906 def square(self):
865 print('compute square')
907 print('compute square')
866 return self.a*self.a
908 return self.a*self.a
867
909
868 # def cube(self):
910 # def cube(self):
869 # print('compute cube')
911 # print('compute cube')
870 # return self.a*self.a*self.a
912 # return self.a*self.a*self.a
871
913
872
914
873
915
874
916
875 Misc
917 Misc
876 ----
918 ----
877
919
878 The autoindent feature that was deprecated in 5.x was re-enabled and
920 The autoindent feature that was deprecated in 5.x was re-enabled and
879 un-deprecated in :ghpull:`11257`
921 un-deprecated in :ghpull:`11257`
880
922
881 Make :magic:`%run -n -i ... <run>` work correctly. Earlier, if :magic:`%run` was
923 Make :magic:`%run -n -i ... <run>` work correctly. Earlier, if :magic:`%run` was
882 passed both arguments, ``-n`` would be silently ignored. See :ghpull:`10308`
924 passed both arguments, ``-n`` would be silently ignored. See :ghpull:`10308`
883
925
884
926
885 The :cellmagic:`%%script` (as well as :cellmagic:`%%bash`,
927 The :cellmagic:`%%script` (as well as :cellmagic:`%%bash`,
886 :cellmagic:`%%ruby`... ) cell magics now raise by default if the return code of
928 :cellmagic:`%%ruby`... ) cell magics now raise by default if the return code of
887 the given code is non-zero (thus halting execution of further cells in a
929 the given code is non-zero (thus halting execution of further cells in a
888 notebook). The behavior can be disable by passing the ``--no-raise-error`` flag.
930 notebook). The behavior can be disable by passing the ``--no-raise-error`` flag.
889
931
890
932
891 Deprecations
933 Deprecations
892 ------------
934 ------------
893
935
894 A couple of unused functions and methods have been deprecated and will be removed
936 A couple of unused functions and methods have been deprecated and will be removed
895 in future versions:
937 in future versions:
896
938
897 - ``IPython.utils.io.raw_print_err``
939 - ``IPython.utils.io.raw_print_err``
898 - ``IPython.utils.io.raw_print``
940 - ``IPython.utils.io.raw_print``
899
941
900
942
901 Backwards incompatible changes
943 Backwards incompatible changes
902 ------------------------------
944 ------------------------------
903
945
904 * The API for transforming input before it is parsed as Python code has been
946 * The API for transforming input before it is parsed as Python code has been
905 completely redesigned: any custom input transformations will need to be
947 completely redesigned: any custom input transformations will need to be
906 rewritten. See :doc:`/config/inputtransforms` for details of the new API.
948 rewritten. See :doc:`/config/inputtransforms` for details of the new API.
General Comments 0
You need to be logged in to leave comments. Login now