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