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