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