##// END OF EJS Templates
whats new 8.14
Matthias Bussonnier -
Show More
@@ -1,1701 +1,1746 b''
1 ============
1 ============
2 8.x Series
2 8.x Series
3 ============
3 ============
4 .. _version 8.14:
5
6 IPython 8.14
7 ------------
8
9 Small release of IPython.
10
11 - :ghpull:`14080` fixes some shortcuts issues.
12 - :ghpull:`14056` Add option to ``%autoreload`` to hide errors when reloading code. This will be the default for spyder
13 user is my understanding.
14 - :ghpull:`14039` (and :ghpull:`14040`) to show exception notes in tracebacks.
15
16 - :ghpull:`14076` Add option to EventManager to prevent printing
17
18
19 SPEC 0 and SPEC 4
20 ~~~~~~~~~~~~~~~~~
21
22 You've heard about the NEPs, (NumPy enhancement Proposal), having a NEP for something non-numpy specific was sometime confusing.
23 Long live the `SPECs <https://scientific-python.org/specs/>`_.
24
25 We are now trying to follow SPEC 0 (aka old NEP 29) for of support of upstream libraries.
26
27 We also now try to follow SPEC 4 (test and publish nightly on a centralized nightly repository).
28 We encourage you to do so as well in order to report breakage, and contribute to the SPEC process !
29
30
31 Python 3.12 compatibility ?
32 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33
34 Python 3.12 changed its tokenizer to have better support for f-strings and allow arbitrary expression.
35 This is a great new feature and performance improvement in python 3.12.
36
37 Unfortunately this means the new tokenizer does not support incomplete or invalid Python which will
38 break many features of IPython. Thus compatibility of IPython with Python 3.12 is not guarantied.
39 It is unclear to which extent IPython is affected, and whether we can/should try to still support magics, shell
40 escape (``! ....``), ..., as well as how to do it if we can.
41
42 In addition even if we there is technical feasibility to do so, it is no clear we have the resources to do it.
43 We are thus looking for your help if you can _test_ on Python 3.12 to see to which extent this affects users and which
44 features are critical.
45
46 We are not going to pin IPython to Python ``<3.12`` as otherwise on install pip would downgrade/resolve to IPython 8.13,
47 so if you plan to update to Python 3.12 after its release, we encourage for extra care.
48
4
49
5 .. _version 8.13.1:
50 .. _version 8.13.1:
6 .. _version 8.13.2:
51 .. _version 8.13.2:
7 .. _version 8.12.3:
52 .. _version 8.12.3:
8
53
9 IPython 8.13.1, 8.13.2 and 8.12.2
54 IPython 8.13.1, 8.13.2 and 8.12.2
10 ---------------------------------
55 ---------------------------------
11
56
12 3 quick in succession patch release of IPython in addition to IPython 8.13.0
57 3 quick in succession patch release of IPython in addition to IPython 8.13.0
13 having been yanked.
58 having been yanked.
14
59
15 IPython 8.13.0 was improperly tagged as still compatible with Python 3.8, and
60 IPython 8.13.0 was improperly tagged as still compatible with Python 3.8, and
16 still had some mention of compatibility woth 3.8. IPython 8.13.1 is identical to
61 still had some mention of compatibility woth 3.8. IPython 8.13.1 is identical to
17 8.13 but with the exception of being correctly tagged. This release and yank was
62 8.13 but with the exception of being correctly tagged. This release and yank was
18 mostly done to fix CI.
63 mostly done to fix CI.
19
64
20 IPython 8.12.2 and 8.13.2 contain UI fixes, with respect to right arrow not
65 IPython 8.12.2 and 8.13.2 contain UI fixes, with respect to right arrow not
21 working in some case in the terminal, and 8.12.2 contain also a requested
66 working in some case in the terminal, and 8.12.2 contain also a requested
22 backport of :ghpull:`14029` (Allow safe access to the ``__getattribute__``
67 backport of :ghpull:`14029` (Allow safe access to the ``__getattribute__``
23 method of modules) for tab completion.
68 method of modules) for tab completion.
24
69
25 .. _version 8.13:
70 .. _version 8.13:
26
71
27 IPython 8.13
72 IPython 8.13
28 ------------
73 ------------
29
74
30 As usual for the end of the month, minor release of IPython. This release is
75 As usual for the end of the month, minor release of IPython. This release is
31 significant in that it not only has a number of bugfixes, but also drop support
76 significant in that it not only has a number of bugfixes, but also drop support
32 for Python 3.8 as per NEP 29 (:ghpull:`14023`).
77 for Python 3.8 as per NEP 29 (:ghpull:`14023`).
33
78
34 All the critical bugfixes have been backported onto the 8.12.1 release (see
79 All the critical bugfixes have been backported onto the 8.12.1 release (see
35 below). In addition to that went into 8.12.1 you'll find:
80 below). In addition to that went into 8.12.1 you'll find:
36
81
37 - Pretty reprensentation for ``Counter`` has been fixed to match the Python one
82 - Pretty reprensentation for ``Counter`` has been fixed to match the Python one
38 and be in decreasing order. :ghpull:`14032`
83 and be in decreasing order. :ghpull:`14032`
39 - Module completion is better when jedi is disabled :ghpull:`14029`.
84 - Module completion is better when jedi is disabled :ghpull:`14029`.
40 - Improvment of ``%%bash`` magic that would get stuck :ghpull:`14019`
85 - Improvment of ``%%bash`` magic that would get stuck :ghpull:`14019`
41
86
42
87
43 We hope you enjoy this release an will maybe see you at JupyterCon in less than
88 We hope you enjoy this release an will maybe see you at JupyterCon in less than
44 two weeks.
89 two weeks.
45
90
46 As usual you can find the full list of PRs on GitHub under `the 8.12.1 milestone
91 As usual you can find the full list of PRs on GitHub under `the 8.12.1 milestone
47 <https://github.com/ipython/ipython/milestone/115?closed=1>`__.
92 <https://github.com/ipython/ipython/milestone/115?closed=1>`__.
48
93
49 Thanks to the D.E. Shaw group for the request and sponsoring the work.
94 Thanks to the D.E. Shaw group for the request and sponsoring the work.
50
95
51
96
52 .. _version 8.12.1:
97 .. _version 8.12.1:
53
98
54 IPython 8.12.1
99 IPython 8.12.1
55 --------------
100 --------------
56
101
57 This is the twin release of IPython 8.13 that contain only critical UI and bug
102 This is the twin release of IPython 8.13 that contain only critical UI and bug
58 fixes. The next minor version of IPython has dropped support for Python 3.8 – as
103 fixes. The next minor version of IPython has dropped support for Python 3.8 – as
59 per Nep 29 and this IPython 8.12.x will now only receive bugfixes.
104 per Nep 29 and this IPython 8.12.x will now only receive bugfixes.
60
105
61
106
62 - :ghpull:`14004` Fix a bug introduced in IPython 8.12 that crash when
107 - :ghpull:`14004` Fix a bug introduced in IPython 8.12 that crash when
63 inspecting some docstrings.
108 inspecting some docstrings.
64 - :ghpull:`14010` Fix fast traceback code that was not working in some case.
109 - :ghpull:`14010` Fix fast traceback code that was not working in some case.
65 - :ghpull:`14014` Fix ``%page`` magic broken in some case.
110 - :ghpull:`14014` Fix ``%page`` magic broken in some case.
66 - :ghpull:`14026`, :ghpull:`14027` Tweak default shortcut with respect to
111 - :ghpull:`14026`, :ghpull:`14027` Tweak default shortcut with respect to
67 autosuggestions.
112 autosuggestions.
68 - :ghpull:`14033` add back the ability to use ``.get()`` on OInfo object for
113 - :ghpull:`14033` add back the ability to use ``.get()`` on OInfo object for
69 backward compatibility with h5py (this will be re-deprecated later, and h5py
114 backward compatibility with h5py (this will be re-deprecated later, and h5py
70 will also get a fix).
115 will also get a fix).
71
116
72 As usual you can find the full list of PRs on GitHub under `the 8.12.1 milestone
117 As usual you can find the full list of PRs on GitHub under `the 8.12.1 milestone
73 <https://github.com/ipython/ipython/milestone/116?closed=1>`__.
118 <https://github.com/ipython/ipython/milestone/116?closed=1>`__.
74
119
75 Thanks to the D.E. Shaw group for the request and sponsoring the work.
120 Thanks to the D.E. Shaw group for the request and sponsoring the work.
76
121
77 .. _version 8.12.0:
122 .. _version 8.12.0:
78
123
79 IPython 8.12
124 IPython 8.12
80 ------------
125 ------------
81
126
82 Hopefully slightly early release for IPython 8.12. Last Thursday of the month,
127 Hopefully slightly early release for IPython 8.12. Last Thursday of the month,
83 even if I guess it's likely already Friday somewhere in the pacific ocean.
128 even if I guess it's likely already Friday somewhere in the pacific ocean.
84
129
85 A number of PRs and bug fixes this month with close to 20 PRs merged !
130 A number of PRs and bug fixes this month with close to 20 PRs merged !
86
131
87
132
88 The IPython repo reached :ghpull:`14000` !! Actually the PR that create those exact release
133 The IPython repo reached :ghpull:`14000` !! Actually the PR that create those exact release
89 note is :ghpull:`14000`. Ok, more issues and PR is not always better, and I'd
134 note is :ghpull:`14000`. Ok, more issues and PR is not always better, and I'd
90 love to have more time to close issues and Pull Requests.
135 love to have more time to close issues and Pull Requests.
91
136
92 Let's note that in less than 2 month JupyterCon is back, in Paris please visit
137 Let's note that in less than 2 month JupyterCon is back, in Paris please visit
93 `jupytercon.com <https://jupytercon.com>`__, and looking forward to see you
138 `jupytercon.com <https://jupytercon.com>`__, and looking forward to see you
94 there.
139 there.
95
140
96 Packagers should take note that ``typing_extension`` is now a mandatory dependency
141 Packagers should take note that ``typing_extension`` is now a mandatory dependency
97 for Python versions ``<3.10``.
142 for Python versions ``<3.10``.
98
143
99
144
100
145
101 Let's note also that according to `NEP29
146 Let's note also that according to `NEP29
102 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, It is soon time to
147 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, It is soon time to
103 stop support for Python 3.8 that will be release more than 3 and 1/2 years ago::
148 stop support for Python 3.8 that will be release more than 3 and 1/2 years ago::
104
149
105 On Apr 14, 2023 drop support for Python 3.8 (initially released on Oct 14, 2019)
150 On Apr 14, 2023 drop support for Python 3.8 (initially released on Oct 14, 2019)
106
151
107 Thus I am likely to stop advertising support for Python 3.8 in the next
152 Thus I am likely to stop advertising support for Python 3.8 in the next
108 release at the end of April.
153 release at the end of April.
109
154
110
155
111 Here are some miscellaneous updates of interest:
156 Here are some miscellaneous updates of interest:
112
157
113 - :ghpull:`13957` brings updates to the Qt integration, particularly for Qt6.
158 - :ghpull:`13957` brings updates to the Qt integration, particularly for Qt6.
114 - :ghpull:`13960` fixes the %debug magic command to give access to the local
159 - :ghpull:`13960` fixes the %debug magic command to give access to the local
115 scope.
160 scope.
116 - :ghpull:`13964` fixes some crashes with the new fast traceback code. Note that
161 - :ghpull:`13964` fixes some crashes with the new fast traceback code. Note that
117 there are still some issues with the fast traceback code, and I a, likely
162 there are still some issues with the fast traceback code, and I a, likely
118 to fix and tweak behavior.
163 to fix and tweak behavior.
119 - :ghpull:`13973` We are slowly migrating IPython internals to use proper type
164 - :ghpull:`13973` We are slowly migrating IPython internals to use proper type
120 objects/dataclasses instead of dictionaries to allow static typing checks.
165 objects/dataclasses instead of dictionaries to allow static typing checks.
121 These are technically public API and could lead to breakage, so please let us
166 These are technically public API and could lead to breakage, so please let us
122 know if that's the case and I'll mitigate.
167 know if that's the case and I'll mitigate.
123 - :ghpull:`13990`, :ghpull:`13991`, :ghpull:`13994` all improve keybinding and
168 - :ghpull:`13990`, :ghpull:`13991`, :ghpull:`13994` all improve keybinding and
124 shortcut configurability.
169 shortcut configurability.
125
170
126 As usual you can find the full list of PRs on GitHub under `the 8.12 milestone
171 As usual you can find the full list of PRs on GitHub under `the 8.12 milestone
127 <https://github.com/ipython/ipython/milestone/114?closed=1>`__.
172 <https://github.com/ipython/ipython/milestone/114?closed=1>`__.
128
173
129 We want to thank the D.E. Shaw group for requesting and sponsoring the work on
174 We want to thank the D.E. Shaw group for requesting and sponsoring the work on
130 the following big feature. We had productive discussions on how to best expose
175 the following big feature. We had productive discussions on how to best expose
131 this feature
176 this feature
132
177
133 Dynamic documentation dispatch
178 Dynamic documentation dispatch
134 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
179 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
135
180
136 We are experimenting with dynamic documentation dispatch for object attribute.
181 We are experimenting with dynamic documentation dispatch for object attribute.
137 See :ghissue:`13860`. The goal is to allow object to define documentation for
182 See :ghissue:`13860`. The goal is to allow object to define documentation for
138 their attributes, properties, even when those are dynamically defined with
183 their attributes, properties, even when those are dynamically defined with
139 `__getattr__`.
184 `__getattr__`.
140
185
141 In particular when those objects are base types it can be useful to show the
186 In particular when those objects are base types it can be useful to show the
142 documentation
187 documentation
143
188
144
189
145 .. code-block:: ipython
190 .. code-block:: ipython
146
191
147
192
148 In [1]: class User:
193 In [1]: class User:
149 ...:
194 ...:
150 ...: __custom_documentations__ = {
195 ...: __custom_documentations__ = {
151 ...: "first": "The first name of the user.",
196 ...: "first": "The first name of the user.",
152 ...: "last": "The last name of the user.",
197 ...: "last": "The last name of the user.",
153 ...: }
198 ...: }
154 ...:
199 ...:
155 ...: first:str
200 ...: first:str
156 ...: last:str
201 ...: last:str
157 ...:
202 ...:
158 ...: def __init__(self, first, last):
203 ...: def __init__(self, first, last):
159 ...: self.first = first
204 ...: self.first = first
160 ...: self.last = last
205 ...: self.last = last
161 ...:
206 ...:
162 ...: @property
207 ...: @property
163 ...: def full(self):
208 ...: def full(self):
164 ...: """`self.first` and `self.last` joined by a space."""
209 ...: """`self.first` and `self.last` joined by a space."""
165 ...: return self.first + " " + self.last
210 ...: return self.first + " " + self.last
166 ...:
211 ...:
167 ...:
212 ...:
168 ...: user = Person('Jane', 'Doe')
213 ...: user = Person('Jane', 'Doe')
169
214
170 In [2]: user.first?
215 In [2]: user.first?
171 Type: str
216 Type: str
172 String form: Jane
217 String form: Jane
173 Length: 4
218 Length: 4
174 Docstring: the first name of a the person object, a str
219 Docstring: the first name of a the person object, a str
175 Class docstring:
220 Class docstring:
176 ....
221 ....
177
222
178 In [3]: user.last?
223 In [3]: user.last?
179 Type: str
224 Type: str
180 String form: Doe
225 String form: Doe
181 Length: 3
226 Length: 3
182 Docstring: the last name, also a str
227 Docstring: the last name, also a str
183 ...
228 ...
184
229
185
230
186 We can see here the symmetry with IPython looking for the docstring on the
231 We can see here the symmetry with IPython looking for the docstring on the
187 properties:
232 properties:
188
233
189 .. code-block:: ipython
234 .. code-block:: ipython
190
235
191
236
192 In [4]: user.full?
237 In [4]: user.full?
193 HERE
238 HERE
194 Type: property
239 Type: property
195 String form: <property object at 0x102bb15d0>
240 String form: <property object at 0x102bb15d0>
196 Docstring: first and last join by a space
241 Docstring: first and last join by a space
197
242
198
243
199 Note that while in the above example we use a static dictionary, libraries may
244 Note that while in the above example we use a static dictionary, libraries may
200 decide to use a custom object that define ``__getitem__``, we caution against
245 decide to use a custom object that define ``__getitem__``, we caution against
201 using objects that would trigger computation to show documentation, but it is
246 using objects that would trigger computation to show documentation, but it is
202 sometime preferable for highly dynamic code that for example export ans API as
247 sometime preferable for highly dynamic code that for example export ans API as
203 object.
248 object.
204
249
205
250
206
251
207 .. _version 8.11.0:
252 .. _version 8.11.0:
208
253
209 IPython 8.11
254 IPython 8.11
210 ------------
255 ------------
211
256
212 Back on almost regular monthly schedule for IPython with end-of-month
257 Back on almost regular monthly schedule for IPython with end-of-month
213 really-late-Friday release to make sure some bugs are properly fixed.
258 really-late-Friday release to make sure some bugs are properly fixed.
214 Small addition of with a few new features, bugfix and UX improvements.
259 Small addition of with a few new features, bugfix and UX improvements.
215
260
216 This is a non-exhaustive list, but among other you will find:
261 This is a non-exhaustive list, but among other you will find:
217
262
218 Faster Traceback Highlighting
263 Faster Traceback Highlighting
219 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
264 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
220
265
221 Resurrection of pre-IPython-8 traceback highlighting code.
266 Resurrection of pre-IPython-8 traceback highlighting code.
222
267
223 Really long and complicated files were slow to highlight in traceback with
268 Really long and complicated files were slow to highlight in traceback with
224 IPython 8 despite upstream improvement that make many case better. Therefore
269 IPython 8 despite upstream improvement that make many case better. Therefore
225 starting with IPython 8.11 when one of the highlighted file is more than 10 000
270 starting with IPython 8.11 when one of the highlighted file is more than 10 000
226 line long by default, we'll fallback to a faster path that does not have all the
271 line long by default, we'll fallback to a faster path that does not have all the
227 features of highlighting failing AST nodes.
272 features of highlighting failing AST nodes.
228
273
229 This can be configures by setting the value of
274 This can be configures by setting the value of
230 ``IPython.code.ultratb.FAST_THRESHOLD`` to an arbitrary low or large value.
275 ``IPython.code.ultratb.FAST_THRESHOLD`` to an arbitrary low or large value.
231
276
232
277
233 Autoreload verbosity
278 Autoreload verbosity
234 ~~~~~~~~~~~~~~~~~~~~
279 ~~~~~~~~~~~~~~~~~~~~
235
280
236 We introduce more descriptive names for the ``%autoreload`` parameter:
281 We introduce more descriptive names for the ``%autoreload`` parameter:
237
282
238 - ``%autoreload now`` (also ``%autoreload``) - perform autoreload immediately.
283 - ``%autoreload now`` (also ``%autoreload``) - perform autoreload immediately.
239 - ``%autoreload off`` (also ``%autoreload 0``) - turn off autoreload.
284 - ``%autoreload off`` (also ``%autoreload 0``) - turn off autoreload.
240 - ``%autoreload explicit`` (also ``%autoreload 1``) - turn on autoreload only for modules
285 - ``%autoreload explicit`` (also ``%autoreload 1``) - turn on autoreload only for modules
241 whitelisted by ``%aimport`` statements.
286 whitelisted by ``%aimport`` statements.
242 - ``%autoreload all`` (also ``%autoreload 2``) - turn on autoreload for all modules except those
287 - ``%autoreload all`` (also ``%autoreload 2``) - turn on autoreload for all modules except those
243 blacklisted by ``%aimport`` statements.
288 blacklisted by ``%aimport`` statements.
244 - ``%autoreload complete`` (also ``%autoreload 3``) - all the fatures of ``all`` but also adding new
289 - ``%autoreload complete`` (also ``%autoreload 3``) - all the fatures of ``all`` but also adding new
245 objects from the imported modules (see
290 objects from the imported modules (see
246 IPython/extensions/tests/test_autoreload.py::test_autoload_newly_added_objects).
291 IPython/extensions/tests/test_autoreload.py::test_autoload_newly_added_objects).
247
292
248 The original designations (e.g. "2") still work, and these new ones are case-insensitive.
293 The original designations (e.g. "2") still work, and these new ones are case-insensitive.
249
294
250 Additionally, the option ``--print`` or ``-p`` can be added to the line to print the names of
295 Additionally, the option ``--print`` or ``-p`` can be added to the line to print the names of
251 modules being reloaded. Similarly, ``--log`` or ``-l`` will output the names to the logger at INFO
296 modules being reloaded. Similarly, ``--log`` or ``-l`` will output the names to the logger at INFO
252 level. Both can be used simultaneously.
297 level. Both can be used simultaneously.
253
298
254 The parsing logic for ``%aimport`` is now improved such that modules can be whitelisted and
299 The parsing logic for ``%aimport`` is now improved such that modules can be whitelisted and
255 blacklisted in the same line, e.g. it's now possible to call ``%aimport os, -math`` to include
300 blacklisted in the same line, e.g. it's now possible to call ``%aimport os, -math`` to include
256 ``os`` for ``%autoreload explicit`` and exclude ``math`` for modes ``all`` and ``complete``.
301 ``os`` for ``%autoreload explicit`` and exclude ``math`` for modes ``all`` and ``complete``.
257
302
258 Terminal shortcuts customization
303 Terminal shortcuts customization
259 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
304 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
260
305
261 Previously modifying shortcuts was only possible by hooking into startup files
306 Previously modifying shortcuts was only possible by hooking into startup files
262 and practically limited to adding new shortcuts or removing all shortcuts bound
307 and practically limited to adding new shortcuts or removing all shortcuts bound
263 to a specific key. This release enables users to override existing terminal
308 to a specific key. This release enables users to override existing terminal
264 shortcuts, disable them or add new keybindings.
309 shortcuts, disable them or add new keybindings.
265
310
266 For example, to set the :kbd:`right` to accept a single character of auto-suggestion
311 For example, to set the :kbd:`right` to accept a single character of auto-suggestion
267 you could use::
312 you could use::
268
313
269 my_shortcuts = [
314 my_shortcuts = [
270 {
315 {
271 "command": "IPython:auto_suggest.accept_character",
316 "command": "IPython:auto_suggest.accept_character",
272 "new_keys": ["right"]
317 "new_keys": ["right"]
273 }
318 }
274 ]
319 ]
275 %config TerminalInteractiveShell.shortcuts = my_shortcuts
320 %config TerminalInteractiveShell.shortcuts = my_shortcuts
276
321
277 You can learn more in :std:configtrait:`TerminalInteractiveShell.shortcuts`
322 You can learn more in :std:configtrait:`TerminalInteractiveShell.shortcuts`
278 configuration reference.
323 configuration reference.
279
324
280 Miscellaneous
325 Miscellaneous
281 ~~~~~~~~~~~~~
326 ~~~~~~~~~~~~~
282
327
283 - ``%gui`` should now support PySide6. :ghpull:`13864`
328 - ``%gui`` should now support PySide6. :ghpull:`13864`
284 - Cli shortcuts can now be configured :ghpull:`13928`, see above.
329 - Cli shortcuts can now be configured :ghpull:`13928`, see above.
285 (note that there might be an issue with prompt_toolkit 3.0.37 and shortcut configuration).
330 (note that there might be an issue with prompt_toolkit 3.0.37 and shortcut configuration).
286
331
287 - Capture output should now respect ``;`` semicolon to suppress output.
332 - Capture output should now respect ``;`` semicolon to suppress output.
288 :ghpull:`13940`
333 :ghpull:`13940`
289 - Base64 encoded images (in jupyter frontend), will not have trailing newlines.
334 - Base64 encoded images (in jupyter frontend), will not have trailing newlines.
290 :ghpull:`13941`
335 :ghpull:`13941`
291
336
292 As usual you can find the full list of PRs on GitHub under `the 8.11 milestone
337 As usual you can find the full list of PRs on GitHub under `the 8.11 milestone
293 <https://github.com/ipython/ipython/milestone/113?closed=1>`__.
338 <https://github.com/ipython/ipython/milestone/113?closed=1>`__.
294
339
295 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
340 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
296 work on IPython and related libraries.
341 work on IPython and related libraries.
297
342
298 .. _version 8.10.0:
343 .. _version 8.10.0:
299
344
300 IPython 8.10
345 IPython 8.10
301 ------------
346 ------------
302
347
303 Out of schedule release of IPython with minor fixes to patch a potential CVE-2023-24816.
348 Out of schedule release of IPython with minor fixes to patch a potential CVE-2023-24816.
304 This is a really low severity CVE that you most likely are not affected by unless:
349 This is a really low severity CVE that you most likely are not affected by unless:
305
350
306 - You are on windows.
351 - You are on windows.
307 - You have a custom build of Python without ``_ctypes``
352 - You have a custom build of Python without ``_ctypes``
308 - You cd or start IPython or Jupyter in untrusted directory which names may be
353 - You cd or start IPython or Jupyter in untrusted directory which names may be
309 valid shell commands.
354 valid shell commands.
310
355
311 You can read more on `the advisory
356 You can read more on `the advisory
312 <https://github.com/ipython/ipython/security/advisories/GHSA-29gw-9793-fvw7>`__.
357 <https://github.com/ipython/ipython/security/advisories/GHSA-29gw-9793-fvw7>`__.
313
358
314 In addition to fixing this CVE we also fix a couple of outstanding bugs and issues.
359 In addition to fixing this CVE we also fix a couple of outstanding bugs and issues.
315
360
316 As usual you can find the full list of PRs on GitHub under `the 8.10 milestone
361 As usual you can find the full list of PRs on GitHub under `the 8.10 milestone
317 <https://github.com/ipython/ipython/milestone/112?closed=1>`__.
362 <https://github.com/ipython/ipython/milestone/112?closed=1>`__.
318
363
319 In Particular:
364 In Particular:
320
365
321 - bump minimum numpy to `>=1.21` version following NEP29. :ghpull:`13930`
366 - bump minimum numpy to `>=1.21` version following NEP29. :ghpull:`13930`
322 - fix for compatibility with MyPy 1.0. :ghpull:`13933`
367 - fix for compatibility with MyPy 1.0. :ghpull:`13933`
323 - fix nbgrader stalling when IPython's ``showtraceback`` function is
368 - fix nbgrader stalling when IPython's ``showtraceback`` function is
324 monkeypatched. :ghpull:`13934`
369 monkeypatched. :ghpull:`13934`
325
370
326
371
327
372
328 As this release also contains those minimal changes in addition to fixing the
373 As this release also contains those minimal changes in addition to fixing the
329 CVE I decided to bump the minor version anyway.
374 CVE I decided to bump the minor version anyway.
330
375
331 This will not affect the normal release schedule, so IPython 8.11 is due in
376 This will not affect the normal release schedule, so IPython 8.11 is due in
332 about 2 weeks.
377 about 2 weeks.
333
378
334 .. _version 8.9.0:
379 .. _version 8.9.0:
335
380
336 IPython 8.9.0
381 IPython 8.9.0
337 -------------
382 -------------
338
383
339 Second release of IPython in 2023, last Friday of the month, we are back on
384 Second release of IPython in 2023, last Friday of the month, we are back on
340 track. This is a small release with a few bug-fixes, and improvements, mostly
385 track. This is a small release with a few bug-fixes, and improvements, mostly
341 with respect to terminal shortcuts.
386 with respect to terminal shortcuts.
342
387
343
388
344 The biggest improvement for 8.9 is a drastic amelioration of the
389 The biggest improvement for 8.9 is a drastic amelioration of the
345 auto-suggestions sponsored by D.E. Shaw and implemented by the more and more
390 auto-suggestions sponsored by D.E. Shaw and implemented by the more and more
346 active contributor `@krassowski <https://github.com/krassowski>`.
391 active contributor `@krassowski <https://github.com/krassowski>`.
347
392
348 - ``right`` accepts a single character from suggestion
393 - ``right`` accepts a single character from suggestion
349 - ``ctrl+right`` accepts a semantic token (macos default shortcuts take
394 - ``ctrl+right`` accepts a semantic token (macos default shortcuts take
350 precedence and need to be disabled to make this work)
395 precedence and need to be disabled to make this work)
351 - ``backspace`` deletes a character and resumes hinting autosuggestions
396 - ``backspace`` deletes a character and resumes hinting autosuggestions
352 - ``ctrl-left`` accepts suggestion and moves cursor left one character.
397 - ``ctrl-left`` accepts suggestion and moves cursor left one character.
353 - ``backspace`` deletes a character and resumes hinting autosuggestions
398 - ``backspace`` deletes a character and resumes hinting autosuggestions
354 - ``down`` moves to suggestion to later in history when no lines are present below the cursors.
399 - ``down`` moves to suggestion to later in history when no lines are present below the cursors.
355 - ``up`` moves to suggestion from earlier in history when no lines are present above the cursor.
400 - ``up`` moves to suggestion from earlier in history when no lines are present above the cursor.
356
401
357 This is best described by the Gif posted by `@krassowski
402 This is best described by the Gif posted by `@krassowski
358 <https://github.com/krassowski>`, and in the PR itself :ghpull:`13888`.
403 <https://github.com/krassowski>`, and in the PR itself :ghpull:`13888`.
359
404
360 .. image:: ../_images/autosuggest.gif
405 .. image:: ../_images/autosuggest.gif
361
406
362 Please report any feedback in order for us to improve the user experience.
407 Please report any feedback in order for us to improve the user experience.
363 In particular we are also working on making the shortcuts configurable.
408 In particular we are also working on making the shortcuts configurable.
364
409
365 If you are interested in better terminal shortcuts, I also invite you to
410 If you are interested in better terminal shortcuts, I also invite you to
366 participate in issue `13879
411 participate in issue `13879
367 <https://github.com/ipython/ipython/issues/13879>`__.
412 <https://github.com/ipython/ipython/issues/13879>`__.
368
413
369
414
370 As we follow `NEP29
415 As we follow `NEP29
371 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, next version of
416 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, next version of
372 IPython will officially stop supporting numpy 1.20, and will stop supporting
417 IPython will officially stop supporting numpy 1.20, and will stop supporting
373 Python 3.8 after April release.
418 Python 3.8 after April release.
374
419
375 As usual you can find the full list of PRs on GitHub under `the 8.9 milestone
420 As usual you can find the full list of PRs on GitHub under `the 8.9 milestone
376 <https://github.com/ipython/ipython/milestone/111?closed=1>`__.
421 <https://github.com/ipython/ipython/milestone/111?closed=1>`__.
377
422
378
423
379 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
424 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
380 work on IPython and related libraries.
425 work on IPython and related libraries.
381
426
382 .. _version 8.8.0:
427 .. _version 8.8.0:
383
428
384 IPython 8.8.0
429 IPython 8.8.0
385 -------------
430 -------------
386
431
387 First release of IPython in 2023 as there was no release at the end of
432 First release of IPython in 2023 as there was no release at the end of
388 December.
433 December.
389
434
390 This is an unusually big release (relatively speaking) with more than 15 Pull
435 This is an unusually big release (relatively speaking) with more than 15 Pull
391 Requests merged.
436 Requests merged.
392
437
393 Of particular interest are:
438 Of particular interest are:
394
439
395 - :ghpull:`13852` that replaces the greedy completer and improves
440 - :ghpull:`13852` that replaces the greedy completer and improves
396 completion, in particular for dictionary keys.
441 completion, in particular for dictionary keys.
397 - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is
442 - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is
398 bundled in wheels.
443 bundled in wheels.
399 - :ghpull:`13869` that implements tab completions for IPython options in the
444 - :ghpull:`13869` that implements tab completions for IPython options in the
400 shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I
445 shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I
401 believe this also needs a recent version of Traitlets.
446 believe this also needs a recent version of Traitlets.
402 - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell`
447 - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell`
403 configurable.
448 configurable.
404 - :ghpull:`13880` that removes minor-version entrypoints as the minor version
449 - :ghpull:`13880` that removes minor-version entrypoints as the minor version
405 entry points that would be included in the wheel would be the one of the
450 entry points that would be included in the wheel would be the one of the
406 Python version that was used to build the ``whl`` file.
451 Python version that was used to build the ``whl`` file.
407
452
408 In no particular order, the rest of the changes update the test suite to be
453 In no particular order, the rest of the changes update the test suite to be
409 compatible with Pygments 2.14, various docfixes, testing on more recent python
454 compatible with Pygments 2.14, various docfixes, testing on more recent python
410 versions and various updates.
455 versions and various updates.
411
456
412 As usual you can find the full list of PRs on GitHub under `the 8.8 milestone
457 As usual you can find the full list of PRs on GitHub under `the 8.8 milestone
413 <https://github.com/ipython/ipython/milestone/110>`__.
458 <https://github.com/ipython/ipython/milestone/110>`__.
414
459
415 Many thanks to @krassowski for the many PRs and @jasongrout for reviewing and
460 Many thanks to @krassowski for the many PRs and @jasongrout for reviewing and
416 merging contributions.
461 merging contributions.
417
462
418 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
463 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
419 work on IPython and related libraries.
464 work on IPython and related libraries.
420
465
421 .. _version 8.7.0:
466 .. _version 8.7.0:
422
467
423 IPython 8.7.0
468 IPython 8.7.0
424 -------------
469 -------------
425
470
426
471
427 Small release of IPython with a couple of bug fixes and new features for this
472 Small release of IPython with a couple of bug fixes and new features for this
428 month. Next month is the end of year, it is unclear if there will be a release
473 month. Next month is the end of year, it is unclear if there will be a release
429 close to the new year's eve, or if the next release will be at the end of January.
474 close to the new year's eve, or if the next release will be at the end of January.
430
475
431 Here are a few of the relevant fixes,
476 Here are a few of the relevant fixes,
432 as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
477 as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
433 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
478 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
434
479
435
480
436 - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
481 - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
437 - IPython shipped with the ``py.typed`` marker now, and we are progressively
482 - IPython shipped with the ``py.typed`` marker now, and we are progressively
438 adding more types. :ghpull:`13831`
483 adding more types. :ghpull:`13831`
439 - :ghpull:`13817` add configuration of code blacks formatting.
484 - :ghpull:`13817` add configuration of code blacks formatting.
440
485
441
486
442 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
487 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
443 work on IPython and related libraries.
488 work on IPython and related libraries.
444
489
445
490
446 .. _version 8.6.0:
491 .. _version 8.6.0:
447
492
448 IPython 8.6.0
493 IPython 8.6.0
449 -------------
494 -------------
450
495
451 Back to a more regular release schedule (at least I try), as Friday is
496 Back to a more regular release schedule (at least I try), as Friday is
452 already over by more than 24h hours. This is a slightly bigger release with a
497 already over by more than 24h hours. This is a slightly bigger release with a
453 few new features that contain no less than 25 PRs.
498 few new features that contain no less than 25 PRs.
454
499
455 We'll notably found a couple of non negligible changes:
500 We'll notably found a couple of non negligible changes:
456
501
457 The ``install_ext`` and related functions have been removed after being
502 The ``install_ext`` and related functions have been removed after being
458 deprecated for years. You can use pip to install extensions. ``pip`` did not
503 deprecated for years. You can use pip to install extensions. ``pip`` did not
459 exist when ``install_ext`` was introduced. You can still load local extensions
504 exist when ``install_ext`` was introduced. You can still load local extensions
460 without installing them. Just set your ``sys.path`` for example. :ghpull:`13744`
505 without installing them. Just set your ``sys.path`` for example. :ghpull:`13744`
461
506
462 IPython now has extra entry points that use the major *and minor* version of
507 IPython now has extra entry points that use the major *and minor* version of
463 python. For some of you this means that you can do a quick ``ipython3.10`` to
508 python. For some of you this means that you can do a quick ``ipython3.10`` to
464 launch IPython from the Python 3.10 interpreter, while still using Python 3.11
509 launch IPython from the Python 3.10 interpreter, while still using Python 3.11
465 as your main Python. :ghpull:`13743`
510 as your main Python. :ghpull:`13743`
466
511
467 The completer matcher API has been improved. See :ghpull:`13745`. This should
512 The completer matcher API has been improved. See :ghpull:`13745`. This should
468 improve the type inference and improve dict keys completions in many use case.
513 improve the type inference and improve dict keys completions in many use case.
469 Thanks ``@krassowski`` for all the work, and the D.E. Shaw group for sponsoring
514 Thanks ``@krassowski`` for all the work, and the D.E. Shaw group for sponsoring
470 it.
515 it.
471
516
472 The color of error nodes in tracebacks can now be customized. See
517 The color of error nodes in tracebacks can now be customized. See
473 :ghpull:`13756`. This is a private attribute until someone finds the time to
518 :ghpull:`13756`. This is a private attribute until someone finds the time to
474 properly add a configuration option. Note that with Python 3.11 that also shows
519 properly add a configuration option. Note that with Python 3.11 that also shows
475 the relevant nodes in traceback, it would be good to leverage this information
520 the relevant nodes in traceback, it would be good to leverage this information
476 (plus the "did you mean" info added on attribute errors). But that's likely work
521 (plus the "did you mean" info added on attribute errors). But that's likely work
477 I won't have time to do before long, so contributions welcome.
522 I won't have time to do before long, so contributions welcome.
478
523
479 As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`.
524 As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`.
480
525
481
526
482 The ``open()`` function present in the user namespace by default will now refuse
527 The ``open()`` function present in the user namespace by default will now refuse
483 to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
528 to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
484 This mostly occurs in teaching context when incorrect values get passed around.
529 This mostly occurs in teaching context when incorrect values get passed around.
485
530
486
531
487 The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
532 The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
488 objects inside arrays. That is to say, the following now works::
533 objects inside arrays. That is to say, the following now works::
489
534
490
535
491 >>> def my_func(*arg, **kwargs):pass
536 >>> def my_func(*arg, **kwargs):pass
492 >>> container = [my_func]
537 >>> container = [my_func]
493 >>> container[0]?
538 >>> container[0]?
494
539
495
540
496 If ``container`` define a custom ``getitem``, this __will__ trigger the custom
541 If ``container`` define a custom ``getitem``, this __will__ trigger the custom
497 method. So don't put side effects in your ``getitems``. Thanks to the D.E. Shaw
542 method. So don't put side effects in your ``getitems``. Thanks to the D.E. Shaw
498 group for the request and sponsoring the work.
543 group for the request and sponsoring the work.
499
544
500
545
501 As usual you can find the full list of PRs on GitHub under `the 8.6 milestone
546 As usual you can find the full list of PRs on GitHub under `the 8.6 milestone
502 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.6>`__.
547 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.6>`__.
503
548
504 Thanks to all hacktoberfest contributors, please contribute to
549 Thanks to all hacktoberfest contributors, please contribute to
505 `closember.org <https://closember.org/>`__.
550 `closember.org <https://closember.org/>`__.
506
551
507 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
552 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
508 work on IPython and related libraries.
553 work on IPython and related libraries.
509
554
510 .. _version 8.5.0:
555 .. _version 8.5.0:
511
556
512 IPython 8.5.0
557 IPython 8.5.0
513 -------------
558 -------------
514
559
515 First release since a couple of month due to various reasons and timing preventing
560 First release since a couple of month due to various reasons and timing preventing
516 me for sticking to the usual monthly release the last Friday of each month. This
561 me for sticking to the usual monthly release the last Friday of each month. This
517 is of non negligible size as it has more than two dozen PRs with various fixes
562 is of non negligible size as it has more than two dozen PRs with various fixes
518 an bug fixes.
563 an bug fixes.
519
564
520 Many thanks to everybody who contributed PRs for your patience in review and
565 Many thanks to everybody who contributed PRs for your patience in review and
521 merges.
566 merges.
522
567
523 Here is a non-exhaustive list of changes that have been implemented for IPython
568 Here is a non-exhaustive list of changes that have been implemented for IPython
524 8.5.0. As usual you can find the full list of issues and PRs tagged with `the
569 8.5.0. As usual you can find the full list of issues and PRs tagged with `the
525 8.5 milestone
570 8.5 milestone
526 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A8.5+>`__.
571 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A8.5+>`__.
527
572
528 - Added a shortcut for accepting auto suggestion. The End key shortcut for
573 - Added a shortcut for accepting auto suggestion. The End key shortcut for
529 accepting auto-suggestion This binding works in Vi mode too, provided
574 accepting auto-suggestion This binding works in Vi mode too, provided
530 ``TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode`` is set to be
575 ``TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode`` is set to be
531 ``True`` :ghpull:`13566`.
576 ``True`` :ghpull:`13566`.
532
577
533 - No popup in window for latex generation when generating latex (e.g. via
578 - No popup in window for latex generation when generating latex (e.g. via
534 `_latex_repr_`) no popup window is shows under Windows. :ghpull:`13679`
579 `_latex_repr_`) no popup window is shows under Windows. :ghpull:`13679`
535
580
536 - Fixed error raised when attempting to tab-complete an input string with
581 - Fixed error raised when attempting to tab-complete an input string with
537 consecutive periods or forward slashes (such as "file:///var/log/...").
582 consecutive periods or forward slashes (such as "file:///var/log/...").
538 :ghpull:`13675`
583 :ghpull:`13675`
539
584
540 - Relative filenames in Latex rendering :
585 - Relative filenames in Latex rendering :
541 The `latex_to_png_dvipng` command internally generates input and output file
586 The `latex_to_png_dvipng` command internally generates input and output file
542 arguments to `latex` and `dvipis`. These arguments are now generated as
587 arguments to `latex` and `dvipis`. These arguments are now generated as
543 relative files to the current working directory instead of absolute file
588 relative files to the current working directory instead of absolute file
544 paths. This solves a problem where the current working directory contains
589 paths. This solves a problem where the current working directory contains
545 characters that are not handled properly by `latex` and `dvips`. There are
590 characters that are not handled properly by `latex` and `dvips`. There are
546 no changes to the user API. :ghpull:`13680`
591 no changes to the user API. :ghpull:`13680`
547
592
548 - Stripping decorators bug: Fixed bug which meant that ipython code blocks in
593 - Stripping decorators bug: Fixed bug which meant that ipython code blocks in
549 restructured text documents executed with the ipython-sphinx extension
594 restructured text documents executed with the ipython-sphinx extension
550 skipped any lines of code containing python decorators. :ghpull:`13612`
595 skipped any lines of code containing python decorators. :ghpull:`13612`
551
596
552 - Allow some modules with frozen dataclasses to be reloaded. :ghpull:`13732`
597 - Allow some modules with frozen dataclasses to be reloaded. :ghpull:`13732`
553 - Fix paste magic on wayland. :ghpull:`13671`
598 - Fix paste magic on wayland. :ghpull:`13671`
554 - show maxlen in deque's repr. :ghpull:`13648`
599 - show maxlen in deque's repr. :ghpull:`13648`
555
600
556 Restore line numbers for Input
601 Restore line numbers for Input
557 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
602 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
558
603
559 Line number information in tracebacks from input are restored.
604 Line number information in tracebacks from input are restored.
560 Line numbers from input were removed during the transition to v8 enhanced traceback reporting.
605 Line numbers from input were removed during the transition to v8 enhanced traceback reporting.
561
606
562 So, instead of::
607 So, instead of::
563
608
564 ---------------------------------------------------------------------------
609 ---------------------------------------------------------------------------
565 ZeroDivisionError Traceback (most recent call last)
610 ZeroDivisionError Traceback (most recent call last)
566 Input In [3], in <cell line: 1>()
611 Input In [3], in <cell line: 1>()
567 ----> 1 myfunc(2)
612 ----> 1 myfunc(2)
568
613
569 Input In [2], in myfunc(z)
614 Input In [2], in myfunc(z)
570 1 def myfunc(z):
615 1 def myfunc(z):
571 ----> 2 foo.boo(z-1)
616 ----> 2 foo.boo(z-1)
572
617
573 File ~/code/python/ipython/foo.py:3, in boo(x)
618 File ~/code/python/ipython/foo.py:3, in boo(x)
574 2 def boo(x):
619 2 def boo(x):
575 ----> 3 return 1/(1-x)
620 ----> 3 return 1/(1-x)
576
621
577 ZeroDivisionError: division by zero
622 ZeroDivisionError: division by zero
578
623
579 The error traceback now looks like::
624 The error traceback now looks like::
580
625
581 ---------------------------------------------------------------------------
626 ---------------------------------------------------------------------------
582 ZeroDivisionError Traceback (most recent call last)
627 ZeroDivisionError Traceback (most recent call last)
583 Cell In [3], line 1
628 Cell In [3], line 1
584 ----> 1 myfunc(2)
629 ----> 1 myfunc(2)
585
630
586 Cell In [2], line 2, in myfunc(z)
631 Cell In [2], line 2, in myfunc(z)
587 1 def myfunc(z):
632 1 def myfunc(z):
588 ----> 2 foo.boo(z-1)
633 ----> 2 foo.boo(z-1)
589
634
590 File ~/code/python/ipython/foo.py:3, in boo(x)
635 File ~/code/python/ipython/foo.py:3, in boo(x)
591 2 def boo(x):
636 2 def boo(x):
592 ----> 3 return 1/(1-x)
637 ----> 3 return 1/(1-x)
593
638
594 ZeroDivisionError: division by zero
639 ZeroDivisionError: division by zero
595
640
596 or, with xmode=Plain::
641 or, with xmode=Plain::
597
642
598 Traceback (most recent call last):
643 Traceback (most recent call last):
599 Cell In [12], line 1
644 Cell In [12], line 1
600 myfunc(2)
645 myfunc(2)
601 Cell In [6], line 2 in myfunc
646 Cell In [6], line 2 in myfunc
602 foo.boo(z-1)
647 foo.boo(z-1)
603 File ~/code/python/ipython/foo.py:3 in boo
648 File ~/code/python/ipython/foo.py:3 in boo
604 return 1/(1-x)
649 return 1/(1-x)
605 ZeroDivisionError: division by zero
650 ZeroDivisionError: division by zero
606
651
607 :ghpull:`13560`
652 :ghpull:`13560`
608
653
609 New setting to silence warning if working inside a virtual environment
654 New setting to silence warning if working inside a virtual environment
610 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
655 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
611
656
612 Previously, when starting IPython in a virtual environment without IPython installed (so IPython from the global environment is used), the following warning was printed:
657 Previously, when starting IPython in a virtual environment without IPython installed (so IPython from the global environment is used), the following warning was printed:
613
658
614 Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
659 Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
615
660
616 This warning can be permanently silenced by setting ``c.InteractiveShell.warn_venv`` to ``False`` (the default is ``True``).
661 This warning can be permanently silenced by setting ``c.InteractiveShell.warn_venv`` to ``False`` (the default is ``True``).
617
662
618 :ghpull:`13706`
663 :ghpull:`13706`
619
664
620 -------
665 -------
621
666
622 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
667 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
623 work on IPython and related libraries.
668 work on IPython and related libraries.
624
669
625
670
626 .. _version 8.4.0:
671 .. _version 8.4.0:
627
672
628 IPython 8.4.0
673 IPython 8.4.0
629 -------------
674 -------------
630
675
631 As for 7.34, this version contains a single fix: fix uncaught BdbQuit exceptions on ipdb
676 As for 7.34, this version contains a single fix: fix uncaught BdbQuit exceptions on ipdb
632 exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682`
677 exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682`
633
678
634 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
679 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
635 work on IPython and related libraries.
680 work on IPython and related libraries.
636
681
637
682
638 .. _version 8.3.0:
683 .. _version 8.3.0:
639
684
640 IPython 8.3.0
685 IPython 8.3.0
641 -------------
686 -------------
642
687
643 - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call
688 - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call
644 ``set_next_input`` as most frontend allow proper multiline editing and it was
689 ``set_next_input`` as most frontend allow proper multiline editing and it was
645 causing issues for many users of multi-cell frontends. This has been backported to 7.33
690 causing issues for many users of multi-cell frontends. This has been backported to 7.33
646
691
647
692
648 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on
693 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on
649 the info object when frontend provides it. This has been backported to 7.33
694 the info object when frontend provides it. This has been backported to 7.33
650
695
651 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an
696 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an
652 auto-suggestion.
697 auto-suggestion.
653
698
654 - :ghpull:`13657` fixed an issue where history from different sessions would be mixed.
699 - :ghpull:`13657` fixed an issue where history from different sessions would be mixed.
655
700
656 .. _version 8.2.0:
701 .. _version 8.2.0:
657
702
658 IPython 8.2.0
703 IPython 8.2.0
659 -------------
704 -------------
660
705
661 IPython 8.2 mostly bring bugfixes to IPython.
706 IPython 8.2 mostly bring bugfixes to IPython.
662
707
663 - Auto-suggestion can now be elected with the ``end`` key. :ghpull:`13566`
708 - Auto-suggestion can now be elected with the ``end`` key. :ghpull:`13566`
664 - Some traceback issues with ``assert etb is not None`` have been fixed. :ghpull:`13588`
709 - Some traceback issues with ``assert etb is not None`` have been fixed. :ghpull:`13588`
665 - History is now pulled from the sqitel database and not from in-memory.
710 - History is now pulled from the sqitel database and not from in-memory.
666 In particular when using the ``%paste`` magic, the content of the pasted text will
711 In particular when using the ``%paste`` magic, the content of the pasted text will
667 be part of the history and not the verbatim text ``%paste`` anymore. :ghpull:`13592`
712 be part of the history and not the verbatim text ``%paste`` anymore. :ghpull:`13592`
668 - Fix ``Ctrl-\\`` exit cleanup :ghpull:`13603`
713 - Fix ``Ctrl-\\`` exit cleanup :ghpull:`13603`
669 - Fixes to ``ultratb`` ipdb support when used outside of IPython. :ghpull:`13498`
714 - Fixes to ``ultratb`` ipdb support when used outside of IPython. :ghpull:`13498`
670
715
671
716
672 I am still trying to fix and investigate :ghissue:`13598`, which seems to be
717 I am still trying to fix and investigate :ghissue:`13598`, which seems to be
673 random, and would appreciate help if you find a reproducible minimal case. I've
718 random, and would appreciate help if you find a reproducible minimal case. I've
674 tried to make various changes to the codebase to mitigate it, but a proper fix
719 tried to make various changes to the codebase to mitigate it, but a proper fix
675 will be difficult without understanding the cause.
720 will be difficult without understanding the cause.
676
721
677
722
678 All the issues on pull-requests for this release can be found in the `8.2
723 All the issues on pull-requests for this release can be found in the `8.2
679 milestone. <https://github.com/ipython/ipython/milestone/100>`__ . And some
724 milestone. <https://github.com/ipython/ipython/milestone/100>`__ . And some
680 documentation only PR can be found as part of the `7.33 milestone
725 documentation only PR can be found as part of the `7.33 milestone
681 <https://github.com/ipython/ipython/milestone/101>`__ (currently not released).
726 <https://github.com/ipython/ipython/milestone/101>`__ (currently not released).
682
727
683 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
728 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
684 work on IPython and related libraries.
729 work on IPython and related libraries.
685
730
686 .. _version 8.1.1:
731 .. _version 8.1.1:
687
732
688 IPython 8.1.1
733 IPython 8.1.1
689 -------------
734 -------------
690
735
691 Fix an issue with virtualenv and Python 3.8 introduced in 8.1
736 Fix an issue with virtualenv and Python 3.8 introduced in 8.1
692
737
693 Revert :ghpull:`13537` (fix an issue with symlinks in virtualenv) that raises an
738 Revert :ghpull:`13537` (fix an issue with symlinks in virtualenv) that raises an
694 error in Python 3.8, and fixed in a different way in :ghpull:`13559`.
739 error in Python 3.8, and fixed in a different way in :ghpull:`13559`.
695
740
696 .. _version 8.1:
741 .. _version 8.1:
697
742
698 IPython 8.1.0
743 IPython 8.1.0
699 -------------
744 -------------
700
745
701 IPython 8.1 is the first minor release after 8.0 and fixes a number of bugs and
746 IPython 8.1 is the first minor release after 8.0 and fixes a number of bugs and
702 updates a few behaviors that were problematic with the 8.0 as with many new major
747 updates a few behaviors that were problematic with the 8.0 as with many new major
703 release.
748 release.
704
749
705 Note that beyond the changes listed here, IPython 8.1.0 also contains all the
750 Note that beyond the changes listed here, IPython 8.1.0 also contains all the
706 features listed in :ref:`version 7.32`.
751 features listed in :ref:`version 7.32`.
707
752
708 - Misc and multiple fixes around quotation auto-closing. It is now disabled by
753 - Misc and multiple fixes around quotation auto-closing. It is now disabled by
709 default. Run with ``TerminalInteractiveShell.auto_match=True`` to re-enabled
754 default. Run with ``TerminalInteractiveShell.auto_match=True`` to re-enabled
710 - Require pygments>=2.4.0 :ghpull:`13459`, this was implicit in the code, but
755 - Require pygments>=2.4.0 :ghpull:`13459`, this was implicit in the code, but
711 is now explicit in ``setup.cfg``/``setup.py``
756 is now explicit in ``setup.cfg``/``setup.py``
712 - Docs improvement of ``core.magic_arguments`` examples. :ghpull:`13433`
757 - Docs improvement of ``core.magic_arguments`` examples. :ghpull:`13433`
713 - Multi-line edit executes too early with await. :ghpull:`13424`
758 - Multi-line edit executes too early with await. :ghpull:`13424`
714
759
715 - ``black`` is back as an optional dependency, and autoformatting disabled by
760 - ``black`` is back as an optional dependency, and autoformatting disabled by
716 default until some fixes are implemented (black improperly reformat magics).
761 default until some fixes are implemented (black improperly reformat magics).
717 :ghpull:`13471` Additionally the ability to use ``yapf`` as a code
762 :ghpull:`13471` Additionally the ability to use ``yapf`` as a code
718 reformatter has been added :ghpull:`13528` . You can use
763 reformatter has been added :ghpull:`13528` . You can use
719 ``TerminalInteractiveShell.autoformatter="black"``,
764 ``TerminalInteractiveShell.autoformatter="black"``,
720 ``TerminalInteractiveShell.autoformatter="yapf"`` to re-enable auto formating
765 ``TerminalInteractiveShell.autoformatter="yapf"`` to re-enable auto formating
721 with black, or switch to yapf.
766 with black, or switch to yapf.
722
767
723 - Fix and issue where ``display`` was not defined.
768 - Fix and issue where ``display`` was not defined.
724
769
725 - Auto suggestions are now configurable. Currently only
770 - Auto suggestions are now configurable. Currently only
726 ``AutoSuggestFromHistory`` (default) and ``None``. new provider contribution
771 ``AutoSuggestFromHistory`` (default) and ``None``. new provider contribution
727 welcomed. :ghpull:`13475`
772 welcomed. :ghpull:`13475`
728
773
729 - multiple packaging/testing improvement to simplify downstream packaging
774 - multiple packaging/testing improvement to simplify downstream packaging
730 (xfail with reasons, try to not access network...).
775 (xfail with reasons, try to not access network...).
731
776
732 - Update deprecation. ``InteractiveShell.magic`` internal method has been
777 - Update deprecation. ``InteractiveShell.magic`` internal method has been
733 deprecated for many years but did not emit a warning until now.
778 deprecated for many years but did not emit a warning until now.
734
779
735 - internal ``appended_to_syspath`` context manager has been deprecated.
780 - internal ``appended_to_syspath`` context manager has been deprecated.
736
781
737 - fix an issue with symlinks in virtualenv :ghpull:`13537` (Reverted in 8.1.1)
782 - fix an issue with symlinks in virtualenv :ghpull:`13537` (Reverted in 8.1.1)
738
783
739 - Fix an issue with vim mode, where cursor would not be reset on exit :ghpull:`13472`
784 - Fix an issue with vim mode, where cursor would not be reset on exit :ghpull:`13472`
740
785
741 - ipython directive now remove only known pseudo-decorators :ghpull:`13532`
786 - ipython directive now remove only known pseudo-decorators :ghpull:`13532`
742
787
743 - ``IPython/lib/security`` which used to be used for jupyter notebook has been
788 - ``IPython/lib/security`` which used to be used for jupyter notebook has been
744 removed.
789 removed.
745
790
746 - Fix an issue where ``async with`` would execute on new lines. :ghpull:`13436`
791 - Fix an issue where ``async with`` would execute on new lines. :ghpull:`13436`
747
792
748
793
749 We want to remind users that IPython is part of the Jupyter organisations, and
794 We want to remind users that IPython is part of the Jupyter organisations, and
750 thus governed by a Code of Conduct. Some of the behavior we have seen on GitHub is not acceptable.
795 thus governed by a Code of Conduct. Some of the behavior we have seen on GitHub is not acceptable.
751 Abuse and non-respectful comments on discussion will not be tolerated.
796 Abuse and non-respectful comments on discussion will not be tolerated.
752
797
753 Many thanks to all the contributors to this release, many of the above fixed issues and
798 Many thanks to all the contributors to this release, many of the above fixed issues and
754 new features were done by first time contributors, showing there is still
799 new features were done by first time contributors, showing there is still
755 plenty of easy contribution possible in IPython
800 plenty of easy contribution possible in IPython
756 . You can find all individual contributions
801 . You can find all individual contributions
757 to this milestone `on github <https://github.com/ipython/ipython/milestone/91>`__.
802 to this milestone `on github <https://github.com/ipython/ipython/milestone/91>`__.
758
803
759 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
804 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
760 work on IPython and related libraries. In particular the Lazy autoloading of
805 work on IPython and related libraries. In particular the Lazy autoloading of
761 magics that you will find described in the 7.32 release notes.
806 magics that you will find described in the 7.32 release notes.
762
807
763
808
764 .. _version 8.0.1:
809 .. _version 8.0.1:
765
810
766 IPython 8.0.1 (CVE-2022-21699)
811 IPython 8.0.1 (CVE-2022-21699)
767 ------------------------------
812 ------------------------------
768
813
769 IPython 8.0.1, 7.31.1 and 5.11 are security releases that change some default
814 IPython 8.0.1, 7.31.1 and 5.11 are security releases that change some default
770 values in order to prevent potential Execution with Unnecessary Privileges.
815 values in order to prevent potential Execution with Unnecessary Privileges.
771
816
772 Almost all version of IPython looks for configuration and profiles in current
817 Almost all version of IPython looks for configuration and profiles in current
773 working directory. Since IPython was developed before pip and environments
818 working directory. Since IPython was developed before pip and environments
774 existed it was used a convenient way to load code/packages in a project
819 existed it was used a convenient way to load code/packages in a project
775 dependant way.
820 dependant way.
776
821
777 In 2022, it is not necessary anymore, and can lead to confusing behavior where
822 In 2022, it is not necessary anymore, and can lead to confusing behavior where
778 for example cloning a repository and starting IPython or loading a notebook from
823 for example cloning a repository and starting IPython or loading a notebook from
779 any Jupyter-Compatible interface that has ipython set as a kernel can lead to
824 any Jupyter-Compatible interface that has ipython set as a kernel can lead to
780 code execution.
825 code execution.
781
826
782
827
783 I did not find any standard way for packaged to advertise CVEs they fix, I'm
828 I did not find any standard way for packaged to advertise CVEs they fix, I'm
784 thus trying to add a ``__patched_cves__`` attribute to the IPython module that
829 thus trying to add a ``__patched_cves__`` attribute to the IPython module that
785 list the CVEs that should have been fixed. This attribute is informational only
830 list the CVEs that should have been fixed. This attribute is informational only
786 as if a executable has a flaw, this value can always be changed by an attacker.
831 as if a executable has a flaw, this value can always be changed by an attacker.
787
832
788 .. code::
833 .. code::
789
834
790 In [1]: import IPython
835 In [1]: import IPython
791
836
792 In [2]: IPython.__patched_cves__
837 In [2]: IPython.__patched_cves__
793 Out[2]: {'CVE-2022-21699'}
838 Out[2]: {'CVE-2022-21699'}
794
839
795 In [3]: 'CVE-2022-21699' in IPython.__patched_cves__
840 In [3]: 'CVE-2022-21699' in IPython.__patched_cves__
796 Out[3]: True
841 Out[3]: True
797
842
798 Thus starting with this version:
843 Thus starting with this version:
799
844
800 - The current working directory is not searched anymore for profiles or
845 - The current working directory is not searched anymore for profiles or
801 configurations files.
846 configurations files.
802 - Added a ``__patched_cves__`` attribute (set of strings) to IPython module that contain
847 - Added a ``__patched_cves__`` attribute (set of strings) to IPython module that contain
803 the list of fixed CVE. This is informational only.
848 the list of fixed CVE. This is informational only.
804
849
805 Further details can be read on the `GitHub Advisory <https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x>`__
850 Further details can be read on the `GitHub Advisory <https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x>`__
806
851
807
852
808 .. _version 8.0:
853 .. _version 8.0:
809
854
810 IPython 8.0
855 IPython 8.0
811 -----------
856 -----------
812
857
813 IPython 8.0 is bringing a large number of new features and improvements to both the
858 IPython 8.0 is bringing a large number of new features and improvements to both the
814 user of the terminal and of the kernel via Jupyter. The removal of compatibility
859 user of the terminal and of the kernel via Jupyter. The removal of compatibility
815 with an older version of Python is also the opportunity to do a couple of
860 with an older version of Python is also the opportunity to do a couple of
816 performance improvements in particular with respect to startup time.
861 performance improvements in particular with respect to startup time.
817 The 8.x branch started diverging from its predecessor around IPython 7.12
862 The 8.x branch started diverging from its predecessor around IPython 7.12
818 (January 2020).
863 (January 2020).
819
864
820 This release contains 250+ pull requests, in addition to many of the features
865 This release contains 250+ pull requests, in addition to many of the features
821 and backports that have made it to the 7.x branch. Please see the
866 and backports that have made it to the 7.x branch. Please see the
822 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
867 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
823
868
824 Please feel free to send pull requests to update those notes after release,
869 Please feel free to send pull requests to update those notes after release,
825 I have likely forgotten a few things reviewing 250+ PRs.
870 I have likely forgotten a few things reviewing 250+ PRs.
826
871
827 Dependencies changes/downstream packaging
872 Dependencies changes/downstream packaging
828 -----------------------------------------
873 -----------------------------------------
829
874
830 Most of our building steps have been changed to be (mostly) declarative
875 Most of our building steps have been changed to be (mostly) declarative
831 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
876 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
832 looking for help to do so.
877 looking for help to do so.
833
878
834 - minimum supported ``traitlets`` version is now 5+
879 - minimum supported ``traitlets`` version is now 5+
835 - we now require ``stack_data``
880 - we now require ``stack_data``
836 - minimal Python is now 3.8
881 - minimal Python is now 3.8
837 - ``nose`` is not a testing requirement anymore
882 - ``nose`` is not a testing requirement anymore
838 - ``pytest`` replaces nose.
883 - ``pytest`` replaces nose.
839 - ``iptest``/``iptest3`` cli entrypoints do not exist anymore.
884 - ``iptest``/``iptest3`` cli entrypoints do not exist anymore.
840 - the minimum officially ​supported ``numpy`` version has been bumped, but this should
885 - the minimum officially ​supported ``numpy`` version has been bumped, but this should
841 not have much effect on packaging.
886 not have much effect on packaging.
842
887
843
888
844 Deprecation and removal
889 Deprecation and removal
845 -----------------------
890 -----------------------
846
891
847 We removed almost all features, arguments, functions, and modules that were
892 We removed almost all features, arguments, functions, and modules that were
848 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
893 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
849 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
894 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
850 The few remaining deprecated features we left have better deprecation warnings
895 The few remaining deprecated features we left have better deprecation warnings
851 or have been turned into explicit errors for better error messages.
896 or have been turned into explicit errors for better error messages.
852
897
853 I will use this occasion to add the following requests to anyone emitting a
898 I will use this occasion to add the following requests to anyone emitting a
854 deprecation warning:
899 deprecation warning:
855
900
856 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
901 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
857 caller context, and not the callee one.
902 caller context, and not the callee one.
858 - Please add **since which version** something is deprecated.
903 - Please add **since which version** something is deprecated.
859
904
860 As a side note, it is much easier to conditionally compare version
905 As a side note, it is much easier to conditionally compare version
861 numbers rather than using ``try/except`` when functionality changes with a version.
906 numbers rather than using ``try/except`` when functionality changes with a version.
862
907
863 I won't list all the removed features here, but modules like ``IPython.kernel``,
908 I won't list all the removed features here, but modules like ``IPython.kernel``,
864 which was just a shim module around ``ipykernel`` for the past 8 years, have been
909 which was just a shim module around ``ipykernel`` for the past 8 years, have been
865 removed, and so many other similar things that pre-date the name **Jupyter**
910 removed, and so many other similar things that pre-date the name **Jupyter**
866 itself.
911 itself.
867
912
868 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
913 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
869 handled by ``load_extension``.
914 handled by ``load_extension``.
870
915
871 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
916 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
872 other packages and no longer need to be inside IPython.
917 other packages and no longer need to be inside IPython.
873
918
874
919
875 Documentation
920 Documentation
876 -------------
921 -------------
877
922
878 The majority of our docstrings have now been reformatted and automatically fixed by
923 The majority of our docstrings have now been reformatted and automatically fixed by
879 the experimental `VΓ©lin <https://pypi.org/project/velin/>`_ project to conform
924 the experimental `VΓ©lin <https://pypi.org/project/velin/>`_ project to conform
880 to numpydoc.
925 to numpydoc.
881
926
882 Type annotations
927 Type annotations
883 ----------------
928 ----------------
884
929
885 While IPython itself is highly dynamic and can't be completely typed, many of
930 While IPython itself is highly dynamic and can't be completely typed, many of
886 the functions now have type annotations, and part of the codebase is now checked
931 the functions now have type annotations, and part of the codebase is now checked
887 by mypy.
932 by mypy.
888
933
889
934
890 Featured changes
935 Featured changes
891 ----------------
936 ----------------
892
937
893 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
938 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
894 Please note as well that many features have been added in the 7.x branch as well
939 Please note as well that many features have been added in the 7.x branch as well
895 (and hence why you want to read the 7.x what's new notes), in particular
940 (and hence why you want to read the 7.x what's new notes), in particular
896 features contributed by QuantStack (with respect to debugger protocol and Xeus
941 features contributed by QuantStack (with respect to debugger protocol and Xeus
897 Python), as well as many debugger features that I was pleased to implement as
942 Python), as well as many debugger features that I was pleased to implement as
898 part of my work at QuanSight and sponsored by DE Shaw.
943 part of my work at QuanSight and sponsored by DE Shaw.
899
944
900 Traceback improvements
945 Traceback improvements
901 ~~~~~~~~~~~~~~~~~~~~~~
946 ~~~~~~~~~~~~~~~~~~~~~~
902
947
903 Previously, error tracebacks for errors happening in code cells were showing a
948 Previously, error tracebacks for errors happening in code cells were showing a
904 hash, the one used for compiling the Python AST::
949 hash, the one used for compiling the Python AST::
905
950
906 In [1]: def foo():
951 In [1]: def foo():
907 ...: return 3 / 0
952 ...: return 3 / 0
908 ...:
953 ...:
909
954
910 In [2]: foo()
955 In [2]: foo()
911 ---------------------------------------------------------------------------
956 ---------------------------------------------------------------------------
912 ZeroDivisionError Traceback (most recent call last)
957 ZeroDivisionError Traceback (most recent call last)
913 <ipython-input-2-c19b6d9633cf> in <module>
958 <ipython-input-2-c19b6d9633cf> in <module>
914 ----> 1 foo()
959 ----> 1 foo()
915
960
916 <ipython-input-1-1595a74c32d5> in foo()
961 <ipython-input-1-1595a74c32d5> in foo()
917 1 def foo():
962 1 def foo():
918 ----> 2 return 3 / 0
963 ----> 2 return 3 / 0
919 3
964 3
920
965
921 ZeroDivisionError: division by zero
966 ZeroDivisionError: division by zero
922
967
923 The error traceback is now correctly formatted, showing the cell number in which the error happened::
968 The error traceback is now correctly formatted, showing the cell number in which the error happened::
924
969
925 In [1]: def foo():
970 In [1]: def foo():
926 ...: return 3 / 0
971 ...: return 3 / 0
927 ...:
972 ...:
928
973
929 Input In [2]: foo()
974 Input In [2]: foo()
930 ---------------------------------------------------------------------------
975 ---------------------------------------------------------------------------
931 ZeroDivisionError Traceback (most recent call last)
976 ZeroDivisionError Traceback (most recent call last)
932 input In [2], in <module>
977 input In [2], in <module>
933 ----> 1 foo()
978 ----> 1 foo()
934
979
935 Input In [1], in foo()
980 Input In [1], in foo()
936 1 def foo():
981 1 def foo():
937 ----> 2 return 3 / 0
982 ----> 2 return 3 / 0
938
983
939 ZeroDivisionError: division by zero
984 ZeroDivisionError: division by zero
940
985
941 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
986 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
942 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
987 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
943
988
944 For example in the following snippet::
989 For example in the following snippet::
945
990
946 def foo(i):
991 def foo(i):
947 x = [[[0]]]
992 x = [[[0]]]
948 return x[0][i][0]
993 return x[0][i][0]
949
994
950
995
951 def bar():
996 def bar():
952 return foo(0) + foo(
997 return foo(0) + foo(
953 1
998 1
954 ) + foo(2)
999 ) + foo(2)
955
1000
956
1001
957 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
1002 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
958 and IPython 8.0 is capable of telling you where the index error occurs::
1003 and IPython 8.0 is capable of telling you where the index error occurs::
959
1004
960
1005
961 IndexError
1006 IndexError
962 Input In [2], in <module>
1007 Input In [2], in <module>
963 ----> 1 bar()
1008 ----> 1 bar()
964 ^^^^^
1009 ^^^^^
965
1010
966 Input In [1], in bar()
1011 Input In [1], in bar()
967 6 def bar():
1012 6 def bar():
968 ----> 7 return foo(0) + foo(
1013 ----> 7 return foo(0) + foo(
969 ^^^^
1014 ^^^^
970 8 1
1015 8 1
971 ^^^^^^^^
1016 ^^^^^^^^
972 9 ) + foo(2)
1017 9 ) + foo(2)
973 ^^^^
1018 ^^^^
974
1019
975 Input In [1], in foo(i)
1020 Input In [1], in foo(i)
976 1 def foo(i):
1021 1 def foo(i):
977 2 x = [[[0]]]
1022 2 x = [[[0]]]
978 ----> 3 return x[0][i][0]
1023 ----> 3 return x[0][i][0]
979 ^^^^^^^
1024 ^^^^^^^
980
1025
981 The corresponding locations marked here with ``^`` will show up highlighted in
1026 The corresponding locations marked here with ``^`` will show up highlighted in
982 the terminal and notebooks.
1027 the terminal and notebooks.
983
1028
984 Finally, a colon ``::`` and line number is appended after a filename in
1029 Finally, a colon ``::`` and line number is appended after a filename in
985 traceback::
1030 traceback::
986
1031
987
1032
988 ZeroDivisionError Traceback (most recent call last)
1033 ZeroDivisionError Traceback (most recent call last)
989 File ~/error.py:4, in <module>
1034 File ~/error.py:4, in <module>
990 1 def f():
1035 1 def f():
991 2 1/0
1036 2 1/0
992 ----> 4 f()
1037 ----> 4 f()
993
1038
994 File ~/error.py:2, in f()
1039 File ~/error.py:2, in f()
995 1 def f():
1040 1 def f():
996 ----> 2 1/0
1041 ----> 2 1/0
997
1042
998 Many terminals and editors have integrations enabling you to directly jump to the
1043 Many terminals and editors have integrations enabling you to directly jump to the
999 relevant file/line when this syntax is used, so this small addition may have a high
1044 relevant file/line when this syntax is used, so this small addition may have a high
1000 impact on productivity.
1045 impact on productivity.
1001
1046
1002
1047
1003 Autosuggestions
1048 Autosuggestions
1004 ~~~~~~~~~~~~~~~
1049 ~~~~~~~~~~~~~~~
1005
1050
1006 Autosuggestion is a very useful feature available in `fish <https://fishshell.com/>`__, `zsh <https://en.wikipedia.org/wiki/Z_shell>`__, and `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion>`__.
1051 Autosuggestion is a very useful feature available in `fish <https://fishshell.com/>`__, `zsh <https://en.wikipedia.org/wiki/Z_shell>`__, and `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion>`__.
1007
1052
1008 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
1053 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
1009 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
1054 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
1010
1055
1011 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
1056 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
1012 or right arrow as described below.
1057 or right arrow as described below.
1013
1058
1014 1. Start ipython
1059 1. Start ipython
1015
1060
1016 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
1061 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
1017
1062
1018 2. Run ``print("hello")``
1063 2. Run ``print("hello")``
1019
1064
1020 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
1065 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
1021
1066
1022 3. start typing ``print`` again to see the autosuggestion
1067 3. start typing ``print`` again to see the autosuggestion
1023
1068
1024 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
1069 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
1025
1070
1026 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
1071 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
1027
1072
1028 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
1073 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
1029
1074
1030 You can also complete word by word:
1075 You can also complete word by word:
1031
1076
1032 1. Run ``def say_hello(): print("hello")``
1077 1. Run ``def say_hello(): print("hello")``
1033
1078
1034 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
1079 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
1035
1080
1036 2. Start typing the first letter if ``def`` to see the autosuggestion
1081 2. Start typing the first letter if ``def`` to see the autosuggestion
1037
1082
1038 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1083 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1039
1084
1040 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
1085 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
1041
1086
1042 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1087 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1043
1088
1044 Importantly, this feature does not interfere with tab completion:
1089 Importantly, this feature does not interfere with tab completion:
1045
1090
1046 1. After running ``def say_hello(): print("hello")``, press d
1091 1. After running ``def say_hello(): print("hello")``, press d
1047
1092
1048 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1093 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1049
1094
1050 2. Press Tab to start tab completion
1095 2. Press Tab to start tab completion
1051
1096
1052 .. image:: ../_images/8.0/auto_suggest_d_completions.png
1097 .. image:: ../_images/8.0/auto_suggest_d_completions.png
1053
1098
1054 3A. Press Tab again to select the first option
1099 3A. Press Tab again to select the first option
1055
1100
1056 .. image:: ../_images/8.0/auto_suggest_def_completions.png
1101 .. image:: ../_images/8.0/auto_suggest_def_completions.png
1057
1102
1058 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
1103 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
1059
1104
1060 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1105 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1061
1106
1062 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
1107 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
1063
1108
1064 .. image:: ../_images/8.0/auto_suggest_match_parens.png
1109 .. image:: ../_images/8.0/auto_suggest_match_parens.png
1065
1110
1066
1111
1067 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
1112 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
1068
1113
1069 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
1114 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
1070 - To use these shortcuts in vi insert mode, you will have to create `custom keybindings in your config.py <https://github.com/mskar/setup/commit/2892fcee46f9f80ef7788f0749edc99daccc52f4/>`__.
1115 - To use these shortcuts in vi insert mode, you will have to create `custom keybindings in your config.py <https://github.com/mskar/setup/commit/2892fcee46f9f80ef7788f0749edc99daccc52f4/>`__.
1071
1116
1072
1117
1073 Show pinfo information in ipdb using "?" and "??"
1118 Show pinfo information in ipdb using "?" and "??"
1074 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1119 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1075
1120
1076 In IPDB, it is now possible to show the information about an object using "?"
1121 In IPDB, it is now possible to show the information about an object using "?"
1077 and "??", in much the same way that it can be done when using the IPython prompt::
1122 and "??", in much the same way that it can be done when using the IPython prompt::
1078
1123
1079 ipdb> partial?
1124 ipdb> partial?
1080 Init signature: partial(self, /, *args, **kwargs)
1125 Init signature: partial(self, /, *args, **kwargs)
1081 Docstring:
1126 Docstring:
1082 partial(func, *args, **keywords) - new function with partial application
1127 partial(func, *args, **keywords) - new function with partial application
1083 of the given arguments and keywords.
1128 of the given arguments and keywords.
1084 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
1129 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
1085 Type: type
1130 Type: type
1086 Subclasses:
1131 Subclasses:
1087
1132
1088 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
1133 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
1089
1134
1090
1135
1091 Autoreload 3 feature
1136 Autoreload 3 feature
1092 ~~~~~~~~~~~~~~~~~~~~
1137 ~~~~~~~~~~~~~~~~~~~~
1093
1138
1094 Example: When an IPython session is run with the 'autoreload' extension loaded,
1139 Example: When an IPython session is run with the 'autoreload' extension loaded,
1095 you will now have the option '3' to select, which means the following:
1140 you will now have the option '3' to select, which means the following:
1096
1141
1097 1. replicate all functionality from option 2
1142 1. replicate all functionality from option 2
1098 2. autoload all new funcs/classes/enums/globals from the module when they are added
1143 2. autoload all new funcs/classes/enums/globals from the module when they are added
1099 3. autoload all newly imported funcs/classes/enums/globals from external modules
1144 3. autoload all newly imported funcs/classes/enums/globals from external modules
1100
1145
1101 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
1146 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
1102
1147
1103 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
1148 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
1104
1149
1105 Auto formatting with black in the CLI
1150 Auto formatting with black in the CLI
1106 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1151 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1107
1152
1108 This feature was present in 7.x, but disabled by default.
1153 This feature was present in 7.x, but disabled by default.
1109
1154
1110 In 8.0, input was automatically reformatted with Black when black was installed.
1155 In 8.0, input was automatically reformatted with Black when black was installed.
1111 This feature has been reverted for the time being.
1156 This feature has been reverted for the time being.
1112 You can re-enable it by setting ``TerminalInteractiveShell.autoformatter`` to ``"black"``
1157 You can re-enable it by setting ``TerminalInteractiveShell.autoformatter`` to ``"black"``
1113
1158
1114 History Range Glob feature
1159 History Range Glob feature
1115 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1160 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1116
1161
1117 Previously, when using ``%history``, users could specify either
1162 Previously, when using ``%history``, users could specify either
1118 a range of sessions and lines, for example:
1163 a range of sessions and lines, for example:
1119
1164
1120 .. code-block:: python
1165 .. code-block:: python
1121
1166
1122 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
1167 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
1123 # to the fifth line of 6 sessions ago.``
1168 # to the fifth line of 6 sessions ago.``
1124
1169
1125 Or users could specify a glob pattern:
1170 Or users could specify a glob pattern:
1126
1171
1127 .. code-block:: python
1172 .. code-block:: python
1128
1173
1129 -g <pattern> # glob ALL history for the specified pattern.
1174 -g <pattern> # glob ALL history for the specified pattern.
1130
1175
1131 However users could *not* specify both.
1176 However users could *not* specify both.
1132
1177
1133 If a user *did* specify both a range and a glob pattern,
1178 If a user *did* specify both a range and a glob pattern,
1134 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
1179 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
1135
1180
1136 With this enhancement, if a user specifies both a range and a glob pattern, then the glob pattern will be applied to the specified range of history.
1181 With this enhancement, if a user specifies both a range and a glob pattern, then the glob pattern will be applied to the specified range of history.
1137
1182
1138 Don't start a multi-line cell with sunken parenthesis
1183 Don't start a multi-line cell with sunken parenthesis
1139 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1184 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1140
1185
1141 From now on, IPython will not ask for the next line of input when given a single
1186 From now on, IPython will not ask for the next line of input when given a single
1142 line with more closing than opening brackets. For example, this means that if
1187 line with more closing than opening brackets. For example, this means that if
1143 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
1188 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
1144 the ``...:`` prompt continuation.
1189 the ``...:`` prompt continuation.
1145
1190
1146 IPython shell for ipdb interact
1191 IPython shell for ipdb interact
1147 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1192 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1148
1193
1149 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
1194 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
1150
1195
1151 Automatic Vi prompt stripping
1196 Automatic Vi prompt stripping
1152 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1197 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1153
1198
1154 When pasting code into IPython, it will strip the leading prompt characters if
1199 When pasting code into IPython, it will strip the leading prompt characters if
1155 there are any. For example, you can paste the following code into the console -
1200 there are any. For example, you can paste the following code into the console -
1156 it will still work, even though each line is prefixed with prompts (``In``,
1201 it will still work, even though each line is prefixed with prompts (``In``,
1157 ``Out``)::
1202 ``Out``)::
1158
1203
1159 In [1]: 2 * 2 == 4
1204 In [1]: 2 * 2 == 4
1160 Out[1]: True
1205 Out[1]: True
1161
1206
1162 In [2]: print("This still works as pasted")
1207 In [2]: print("This still works as pasted")
1163
1208
1164
1209
1165 Previously, this was not the case for the Vi-mode prompts::
1210 Previously, this was not the case for the Vi-mode prompts::
1166
1211
1167 In [1]: [ins] In [13]: 2 * 2 == 4
1212 In [1]: [ins] In [13]: 2 * 2 == 4
1168 ...: Out[13]: True
1213 ...: Out[13]: True
1169 ...:
1214 ...:
1170 File "<ipython-input-1-727bb88eaf33>", line 1
1215 File "<ipython-input-1-727bb88eaf33>", line 1
1171 [ins] In [13]: 2 * 2 == 4
1216 [ins] In [13]: 2 * 2 == 4
1172 ^
1217 ^
1173 SyntaxError: invalid syntax
1218 SyntaxError: invalid syntax
1174
1219
1175 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
1220 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
1176 skipped just as the normal ``In`` would be.
1221 skipped just as the normal ``In`` would be.
1177
1222
1178 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
1223 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
1179 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
1224 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
1180
1225
1181 Empty History Ranges
1226 Empty History Ranges
1182 ~~~~~~~~~~~~~~~~~~~~
1227 ~~~~~~~~~~~~~~~~~~~~
1183
1228
1184 A number of magics that take history ranges can now be used with an empty
1229 A number of magics that take history ranges can now be used with an empty
1185 range. These magics are:
1230 range. These magics are:
1186
1231
1187 * ``%save``
1232 * ``%save``
1188 * ``%load``
1233 * ``%load``
1189 * ``%pastebin``
1234 * ``%pastebin``
1190 * ``%pycat``
1235 * ``%pycat``
1191
1236
1192 Using them this way will make them take the history of the current session up
1237 Using them this way will make them take the history of the current session up
1193 to the point of the magic call (such that the magic itself will not be
1238 to the point of the magic call (such that the magic itself will not be
1194 included).
1239 included).
1195
1240
1196 Therefore it is now possible to save the whole history to a file using
1241 Therefore it is now possible to save the whole history to a file using
1197 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
1242 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
1198 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
1243 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
1199 ``%pastebin``, or view the whole thing syntax-highlighted with a single
1244 ``%pastebin``, or view the whole thing syntax-highlighted with a single
1200 ``%pycat``.
1245 ``%pycat``.
1201
1246
1202
1247
1203 Windows timing implementation: Switch to process_time
1248 Windows timing implementation: Switch to process_time
1204 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1249 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1205 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
1250 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
1206 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
1251 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
1207 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
1252 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
1208
1253
1209 Miscellaneous
1254 Miscellaneous
1210 ~~~~~~~~~~~~~
1255 ~~~~~~~~~~~~~
1211 - Non-text formatters are not disabled in the terminal, which should simplify
1256 - Non-text formatters are not disabled in the terminal, which should simplify
1212 writing extensions displaying images or other mimetypes in supporting terminals.
1257 writing extensions displaying images or other mimetypes in supporting terminals.
1213 :ghpull:`12315`
1258 :ghpull:`12315`
1214 - It is now possible to automatically insert matching brackets in Terminal IPython using the
1259 - It is now possible to automatically insert matching brackets in Terminal IPython using the
1215 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
1260 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
1216 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
1261 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
1217 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
1262 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
1218 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
1263 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
1219 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
1264 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
1220 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
1265 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
1221 - The debugger now has a persistent history, which should make it less
1266 - The debugger now has a persistent history, which should make it less
1222 annoying to retype commands :ghpull:`13246`
1267 annoying to retype commands :ghpull:`13246`
1223 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
1268 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
1224 now warn users if they use one of those commands. :ghpull:`12954`
1269 now warn users if they use one of those commands. :ghpull:`12954`
1225 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
1270 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
1226
1271
1227 Re-added support for XDG config directories
1272 Re-added support for XDG config directories
1228 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1273 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1229
1274
1230 XDG support through the years comes and goes. There is a tension between having
1275 XDG support through the years comes and goes. There is a tension between having
1231 an identical location for configuration in all platforms versus having simple instructions.
1276 an identical location for configuration in all platforms versus having simple instructions.
1232 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
1277 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
1233 config files back into ``~/.ipython``. That migration code has now been removed.
1278 config files back into ``~/.ipython``. That migration code has now been removed.
1234 IPython now checks the XDG locations, so if you _manually_ move your config
1279 IPython now checks the XDG locations, so if you _manually_ move your config
1235 files to your preferred location, IPython will not move them back.
1280 files to your preferred location, IPython will not move them back.
1236
1281
1237
1282
1238 Preparing for Python 3.10
1283 Preparing for Python 3.10
1239 -------------------------
1284 -------------------------
1240
1285
1241 To prepare for Python 3.10, we have started working on removing reliance and
1286 To prepare for Python 3.10, we have started working on removing reliance and
1242 any dependency that is not compatible with Python 3.10. This includes migrating our
1287 any dependency that is not compatible with Python 3.10. This includes migrating our
1243 test suite to pytest and starting to remove nose. This also means that the
1288 test suite to pytest and starting to remove nose. This also means that the
1244 ``iptest`` command is now gone and all testing is via pytest.
1289 ``iptest`` command is now gone and all testing is via pytest.
1245
1290
1246 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
1291 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
1247 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
1292 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
1248 who did a fantastic job at updating our code base, migrating to pytest, pushing
1293 who did a fantastic job at updating our code base, migrating to pytest, pushing
1249 our coverage, and fixing a large number of bugs. I highly recommend contacting
1294 our coverage, and fixing a large number of bugs. I highly recommend contacting
1250 them if you need help with C++ and Python projects.
1295 them if you need help with C++ and Python projects.
1251
1296
1252 You can find all relevant issues and PRs with `the SDG 2021 tag <https://github.com/ipython/ipython/issues?q=label%3A%22Numfocus+SDG+2021%22+>`__
1297 You can find all relevant issues and PRs with `the SDG 2021 tag <https://github.com/ipython/ipython/issues?q=label%3A%22Numfocus+SDG+2021%22+>`__
1253
1298
1254 Removing support for older Python versions
1299 Removing support for older Python versions
1255 ------------------------------------------
1300 ------------------------------------------
1256
1301
1257
1302
1258 We are removing support for Python up through 3.7, allowing internal code to use the more
1303 We are removing support for Python up through 3.7, allowing internal code to use the more
1259 efficient ``pathlib`` and to make better use of type annotations.
1304 efficient ``pathlib`` and to make better use of type annotations.
1260
1305
1261 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
1306 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
1262 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
1307 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
1263
1308
1264
1309
1265 We had about 34 PRs only to update some logic to update some functions from managing strings to
1310 We had about 34 PRs only to update some logic to update some functions from managing strings to
1266 using Pathlib.
1311 using Pathlib.
1267
1312
1268 The completer has also seen significant updates and now makes use of newer Jedi APIs,
1313 The completer has also seen significant updates and now makes use of newer Jedi APIs,
1269 offering faster and more reliable tab completion.
1314 offering faster and more reliable tab completion.
1270
1315
1271 Misc Statistics
1316 Misc Statistics
1272 ---------------
1317 ---------------
1273
1318
1274 Here are some numbers::
1319 Here are some numbers::
1275
1320
1276 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
1321 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
1277 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
1322 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
1278
1323
1279 $ git diff --stat 7.x...master | tail -1
1324 $ git diff --stat 7.x...master | tail -1
1280 340 files changed, 13399 insertions(+), 12421 deletions(-)
1325 340 files changed, 13399 insertions(+), 12421 deletions(-)
1281
1326
1282 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
1327 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
1283 maintainers pushing buttons).::
1328 maintainers pushing buttons).::
1284
1329
1285 $ git shortlog -s --no-merges 7.x...master | sort -nr
1330 $ git shortlog -s --no-merges 7.x...master | sort -nr
1286 535 Matthias Bussonnier
1331 535 Matthias Bussonnier
1287 86 Nikita Kniazev
1332 86 Nikita Kniazev
1288 69 Blazej Michalik
1333 69 Blazej Michalik
1289 49 Samuel Gaist
1334 49 Samuel Gaist
1290 27 Itamar Turner-Trauring
1335 27 Itamar Turner-Trauring
1291 18 Spas Kalaydzhisyki
1336 18 Spas Kalaydzhisyki
1292 17 Thomas Kluyver
1337 17 Thomas Kluyver
1293 17 Quentin Peter
1338 17 Quentin Peter
1294 17 James Morris
1339 17 James Morris
1295 17 Artur Svistunov
1340 17 Artur Svistunov
1296 15 Bart Skowron
1341 15 Bart Skowron
1297 14 Alex Hall
1342 14 Alex Hall
1298 13 rushabh-v
1343 13 rushabh-v
1299 13 Terry Davis
1344 13 Terry Davis
1300 13 Benjamin Ragan-Kelley
1345 13 Benjamin Ragan-Kelley
1301 8 martinRenou
1346 8 martinRenou
1302 8 farisachugthai
1347 8 farisachugthai
1303 7 dswij
1348 7 dswij
1304 7 Gal B
1349 7 Gal B
1305 7 Corentin Cadiou
1350 7 Corentin Cadiou
1306 6 yuji96
1351 6 yuji96
1307 6 Martin Skarzynski
1352 6 Martin Skarzynski
1308 6 Justin Palmer
1353 6 Justin Palmer
1309 6 Daniel Goldfarb
1354 6 Daniel Goldfarb
1310 6 Ben Greiner
1355 6 Ben Greiner
1311 5 Sammy Al Hashemi
1356 5 Sammy Al Hashemi
1312 5 Paul Ivanov
1357 5 Paul Ivanov
1313 5 Inception95
1358 5 Inception95
1314 5 Eyenpi
1359 5 Eyenpi
1315 5 Douglas Blank
1360 5 Douglas Blank
1316 5 Coco Mishra
1361 5 Coco Mishra
1317 5 Bibo Hao
1362 5 Bibo Hao
1318 5 AndrΓ© A. Gomes
1363 5 AndrΓ© A. Gomes
1319 5 Ahmed Fasih
1364 5 Ahmed Fasih
1320 4 takuya fujiwara
1365 4 takuya fujiwara
1321 4 palewire
1366 4 palewire
1322 4 Thomas A Caswell
1367 4 Thomas A Caswell
1323 4 Talley Lambert
1368 4 Talley Lambert
1324 4 Scott Sanderson
1369 4 Scott Sanderson
1325 4 Ram Rachum
1370 4 Ram Rachum
1326 4 Nick Muoh
1371 4 Nick Muoh
1327 4 Nathan Goldbaum
1372 4 Nathan Goldbaum
1328 4 Mithil Poojary
1373 4 Mithil Poojary
1329 4 Michael T
1374 4 Michael T
1330 4 Jakub Klus
1375 4 Jakub Klus
1331 4 Ian Castleden
1376 4 Ian Castleden
1332 4 Eli Rykoff
1377 4 Eli Rykoff
1333 4 Ashwin Vishnu
1378 4 Ashwin Vishnu
1334 3 谭九鼎
1379 3 谭九鼎
1335 3 sleeping
1380 3 sleeping
1336 3 Sylvain Corlay
1381 3 Sylvain Corlay
1337 3 Peter Corke
1382 3 Peter Corke
1338 3 Paul Bissex
1383 3 Paul Bissex
1339 3 Matthew Feickert
1384 3 Matthew Feickert
1340 3 Fernando Perez
1385 3 Fernando Perez
1341 3 Eric Wieser
1386 3 Eric Wieser
1342 3 Daniel Mietchen
1387 3 Daniel Mietchen
1343 3 Aditya Sathe
1388 3 Aditya Sathe
1344 3 007vedant
1389 3 007vedant
1345 2 rchiodo
1390 2 rchiodo
1346 2 nicolaslazo
1391 2 nicolaslazo
1347 2 luttik
1392 2 luttik
1348 2 gorogoroumaru
1393 2 gorogoroumaru
1349 2 foobarbyte
1394 2 foobarbyte
1350 2 bar-hen
1395 2 bar-hen
1351 2 Theo Ouzhinski
1396 2 Theo Ouzhinski
1352 2 Strawkage
1397 2 Strawkage
1353 2 Samreen Zarroug
1398 2 Samreen Zarroug
1354 2 Pete Blois
1399 2 Pete Blois
1355 2 Meysam Azad
1400 2 Meysam Azad
1356 2 Matthieu Ancellin
1401 2 Matthieu Ancellin
1357 2 Mark Schmitz
1402 2 Mark Schmitz
1358 2 Maor Kleinberger
1403 2 Maor Kleinberger
1359 2 MRCWirtz
1404 2 MRCWirtz
1360 2 Lumir Balhar
1405 2 Lumir Balhar
1361 2 Julien Rabinow
1406 2 Julien Rabinow
1362 2 Juan Luis Cano RodrΓ­guez
1407 2 Juan Luis Cano RodrΓ­guez
1363 2 Joyce Er
1408 2 Joyce Er
1364 2 Jakub
1409 2 Jakub
1365 2 Faris A Chugthai
1410 2 Faris A Chugthai
1366 2 Ethan Madden
1411 2 Ethan Madden
1367 2 Dimitri Papadopoulos
1412 2 Dimitri Papadopoulos
1368 2 Diego Fernandez
1413 2 Diego Fernandez
1369 2 Daniel Shimon
1414 2 Daniel Shimon
1370 2 Coco Bennett
1415 2 Coco Bennett
1371 2 Carlos Cordoba
1416 2 Carlos Cordoba
1372 2 Boyuan Liu
1417 2 Boyuan Liu
1373 2 BaoGiang HoangVu
1418 2 BaoGiang HoangVu
1374 2 Augusto
1419 2 Augusto
1375 2 Arthur Svistunov
1420 2 Arthur Svistunov
1376 2 Arthur Moreira
1421 2 Arthur Moreira
1377 2 Ali Nabipour
1422 2 Ali Nabipour
1378 2 Adam Hackbarth
1423 2 Adam Hackbarth
1379 1 richard
1424 1 richard
1380 1 linar-jether
1425 1 linar-jether
1381 1 lbennett
1426 1 lbennett
1382 1 juacrumar
1427 1 juacrumar
1383 1 gpotter2
1428 1 gpotter2
1384 1 digitalvirtuoso
1429 1 digitalvirtuoso
1385 1 dalthviz
1430 1 dalthviz
1386 1 Yonatan Goldschmidt
1431 1 Yonatan Goldschmidt
1387 1 Tomasz KΕ‚oczko
1432 1 Tomasz KΕ‚oczko
1388 1 Tobias Bengfort
1433 1 Tobias Bengfort
1389 1 Timur Kushukov
1434 1 Timur Kushukov
1390 1 Thomas
1435 1 Thomas
1391 1 Snir Broshi
1436 1 Snir Broshi
1392 1 Shao Yang Hong
1437 1 Shao Yang Hong
1393 1 Sanjana-03
1438 1 Sanjana-03
1394 1 Romulo Filho
1439 1 Romulo Filho
1395 1 Rodolfo Carvalho
1440 1 Rodolfo Carvalho
1396 1 Richard Shadrach
1441 1 Richard Shadrach
1397 1 Reilly Tucker Siemens
1442 1 Reilly Tucker Siemens
1398 1 Rakessh Roshan
1443 1 Rakessh Roshan
1399 1 Piers Titus van der Torren
1444 1 Piers Titus van der Torren
1400 1 PhanatosZou
1445 1 PhanatosZou
1401 1 Pavel Safronov
1446 1 Pavel Safronov
1402 1 Paulo S. Costa
1447 1 Paulo S. Costa
1403 1 Paul McCarthy
1448 1 Paul McCarthy
1404 1 NotWearingPants
1449 1 NotWearingPants
1405 1 Naelson Douglas
1450 1 Naelson Douglas
1406 1 Michael Tiemann
1451 1 Michael Tiemann
1407 1 Matt Wozniski
1452 1 Matt Wozniski
1408 1 Markus Wageringel
1453 1 Markus Wageringel
1409 1 Marcus Wirtz
1454 1 Marcus Wirtz
1410 1 Marcio Mazza
1455 1 Marcio Mazza
1411 1 LumΓ­r 'Frenzy' Balhar
1456 1 LumΓ­r 'Frenzy' Balhar
1412 1 Lightyagami1
1457 1 Lightyagami1
1413 1 Leon Anavi
1458 1 Leon Anavi
1414 1 LeafyLi
1459 1 LeafyLi
1415 1 L0uisJ0shua
1460 1 L0uisJ0shua
1416 1 Kyle Cutler
1461 1 Kyle Cutler
1417 1 Krzysztof Cybulski
1462 1 Krzysztof Cybulski
1418 1 Kevin Kirsche
1463 1 Kevin Kirsche
1419 1 KIU Shueng Chuan
1464 1 KIU Shueng Chuan
1420 1 Jonathan Slenders
1465 1 Jonathan Slenders
1421 1 Jay Qi
1466 1 Jay Qi
1422 1 Jake VanderPlas
1467 1 Jake VanderPlas
1423 1 Iwan Briquemont
1468 1 Iwan Briquemont
1424 1 Hussaina Begum Nandyala
1469 1 Hussaina Begum Nandyala
1425 1 Gordon Ball
1470 1 Gordon Ball
1426 1 Gabriel Simonetto
1471 1 Gabriel Simonetto
1427 1 Frank Tobia
1472 1 Frank Tobia
1428 1 Erik
1473 1 Erik
1429 1 Elliott Sales de Andrade
1474 1 Elliott Sales de Andrade
1430 1 Daniel Hahler
1475 1 Daniel Hahler
1431 1 Dan Green-Leipciger
1476 1 Dan Green-Leipciger
1432 1 Dan Green
1477 1 Dan Green
1433 1 Damian Yurzola
1478 1 Damian Yurzola
1434 1 Coon, Ethan T
1479 1 Coon, Ethan T
1435 1 Carol Willing
1480 1 Carol Willing
1436 1 Brian Lee
1481 1 Brian Lee
1437 1 Brendan Gerrity
1482 1 Brendan Gerrity
1438 1 Blake Griffin
1483 1 Blake Griffin
1439 1 Bastian Ebeling
1484 1 Bastian Ebeling
1440 1 Bartosz Telenczuk
1485 1 Bartosz Telenczuk
1441 1 Ankitsingh6299
1486 1 Ankitsingh6299
1442 1 Andrew Port
1487 1 Andrew Port
1443 1 Andrew J. Hesford
1488 1 Andrew J. Hesford
1444 1 Albert Zhang
1489 1 Albert Zhang
1445 1 Adam Johnson
1490 1 Adam Johnson
1446
1491
1447 This does not, of course, represent non-code contributions, for which we are also grateful.
1492 This does not, of course, represent non-code contributions, for which we are also grateful.
1448
1493
1449
1494
1450 API Changes using Frappuccino
1495 API Changes using Frappuccino
1451 -----------------------------
1496 -----------------------------
1452
1497
1453 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
1498 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
1454
1499
1455
1500
1456 The following items are new in IPython 8.0 ::
1501 The following items are new in IPython 8.0 ::
1457
1502
1458 + IPython.core.async_helpers.get_asyncio_loop()
1503 + IPython.core.async_helpers.get_asyncio_loop()
1459 + IPython.core.completer.Dict
1504 + IPython.core.completer.Dict
1460 + IPython.core.completer.Pattern
1505 + IPython.core.completer.Pattern
1461 + IPython.core.completer.Sequence
1506 + IPython.core.completer.Sequence
1462 + IPython.core.completer.__skip_doctest__
1507 + IPython.core.completer.__skip_doctest__
1463 + IPython.core.debugger.Pdb.precmd(self, line)
1508 + IPython.core.debugger.Pdb.precmd(self, line)
1464 + IPython.core.debugger.__skip_doctest__
1509 + IPython.core.debugger.__skip_doctest__
1465 + IPython.core.display.__getattr__(name)
1510 + IPython.core.display.__getattr__(name)
1466 + IPython.core.display.warn
1511 + IPython.core.display.warn
1467 + IPython.core.display_functions
1512 + IPython.core.display_functions
1468 + IPython.core.display_functions.DisplayHandle
1513 + IPython.core.display_functions.DisplayHandle
1469 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
1514 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
1470 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
1515 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
1471 + IPython.core.display_functions.__all__
1516 + IPython.core.display_functions.__all__
1472 + IPython.core.display_functions.__builtins__
1517 + IPython.core.display_functions.__builtins__
1473 + IPython.core.display_functions.__cached__
1518 + IPython.core.display_functions.__cached__
1474 + IPython.core.display_functions.__doc__
1519 + IPython.core.display_functions.__doc__
1475 + IPython.core.display_functions.__file__
1520 + IPython.core.display_functions.__file__
1476 + IPython.core.display_functions.__loader__
1521 + IPython.core.display_functions.__loader__
1477 + IPython.core.display_functions.__name__
1522 + IPython.core.display_functions.__name__
1478 + IPython.core.display_functions.__package__
1523 + IPython.core.display_functions.__package__
1479 + IPython.core.display_functions.__spec__
1524 + IPython.core.display_functions.__spec__
1480 + IPython.core.display_functions.b2a_hex
1525 + IPython.core.display_functions.b2a_hex
1481 + IPython.core.display_functions.clear_output(wait=False)
1526 + IPython.core.display_functions.clear_output(wait=False)
1482 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
1527 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
1483 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
1528 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
1484 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
1529 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
1485 + IPython.core.extensions.BUILTINS_EXTS
1530 + IPython.core.extensions.BUILTINS_EXTS
1486 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
1531 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
1487 + IPython.core.interactiveshell.Callable
1532 + IPython.core.interactiveshell.Callable
1488 + IPython.core.interactiveshell.__annotations__
1533 + IPython.core.interactiveshell.__annotations__
1489 + IPython.core.ultratb.List
1534 + IPython.core.ultratb.List
1490 + IPython.core.ultratb.Tuple
1535 + IPython.core.ultratb.Tuple
1491 + IPython.lib.pretty.CallExpression
1536 + IPython.lib.pretty.CallExpression
1492 + IPython.lib.pretty.CallExpression.factory(name)
1537 + IPython.lib.pretty.CallExpression.factory(name)
1493 + IPython.lib.pretty.RawStringLiteral
1538 + IPython.lib.pretty.RawStringLiteral
1494 + IPython.lib.pretty.RawText
1539 + IPython.lib.pretty.RawText
1495 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
1540 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
1496 + IPython.terminal.embed.Set
1541 + IPython.terminal.embed.Set
1497
1542
1498 The following items have been removed (or moved to superclass)::
1543 The following items have been removed (or moved to superclass)::
1499
1544
1500 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
1545 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
1501 - IPython.core.completer.Sentinel
1546 - IPython.core.completer.Sentinel
1502 - IPython.core.completer.skip_doctest
1547 - IPython.core.completer.skip_doctest
1503 - IPython.core.debugger.Tracer
1548 - IPython.core.debugger.Tracer
1504 - IPython.core.display.DisplayHandle
1549 - IPython.core.display.DisplayHandle
1505 - IPython.core.display.DisplayHandle.display
1550 - IPython.core.display.DisplayHandle.display
1506 - IPython.core.display.DisplayHandle.update
1551 - IPython.core.display.DisplayHandle.update
1507 - IPython.core.display.b2a_hex
1552 - IPython.core.display.b2a_hex
1508 - IPython.core.display.clear_output
1553 - IPython.core.display.clear_output
1509 - IPython.core.display.display
1554 - IPython.core.display.display
1510 - IPython.core.display.publish_display_data
1555 - IPython.core.display.publish_display_data
1511 - IPython.core.display.update_display
1556 - IPython.core.display.update_display
1512 - IPython.core.excolors.Deprec
1557 - IPython.core.excolors.Deprec
1513 - IPython.core.excolors.ExceptionColors
1558 - IPython.core.excolors.ExceptionColors
1514 - IPython.core.history.warn
1559 - IPython.core.history.warn
1515 - IPython.core.hooks.late_startup_hook
1560 - IPython.core.hooks.late_startup_hook
1516 - IPython.core.hooks.pre_run_code_hook
1561 - IPython.core.hooks.pre_run_code_hook
1517 - IPython.core.hooks.shutdown_hook
1562 - IPython.core.hooks.shutdown_hook
1518 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
1563 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
1519 - IPython.core.interactiveshell.InteractiveShell.init_readline
1564 - IPython.core.interactiveshell.InteractiveShell.init_readline
1520 - IPython.core.interactiveshell.InteractiveShell.write
1565 - IPython.core.interactiveshell.InteractiveShell.write
1521 - IPython.core.interactiveshell.InteractiveShell.write_err
1566 - IPython.core.interactiveshell.InteractiveShell.write_err
1522 - IPython.core.interactiveshell.get_default_colors
1567 - IPython.core.interactiveshell.get_default_colors
1523 - IPython.core.interactiveshell.removed_co_newlocals
1568 - IPython.core.interactiveshell.removed_co_newlocals
1524 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
1569 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
1525 - IPython.core.magics.script.PIPE
1570 - IPython.core.magics.script.PIPE
1526 - IPython.core.prefilter.PrefilterManager.init_transformers
1571 - IPython.core.prefilter.PrefilterManager.init_transformers
1527 - IPython.core.release.classifiers
1572 - IPython.core.release.classifiers
1528 - IPython.core.release.description
1573 - IPython.core.release.description
1529 - IPython.core.release.keywords
1574 - IPython.core.release.keywords
1530 - IPython.core.release.long_description
1575 - IPython.core.release.long_description
1531 - IPython.core.release.name
1576 - IPython.core.release.name
1532 - IPython.core.release.platforms
1577 - IPython.core.release.platforms
1533 - IPython.core.release.url
1578 - IPython.core.release.url
1534 - IPython.core.ultratb.VerboseTB.format_records
1579 - IPython.core.ultratb.VerboseTB.format_records
1535 - IPython.core.ultratb.find_recursion
1580 - IPython.core.ultratb.find_recursion
1536 - IPython.core.ultratb.findsource
1581 - IPython.core.ultratb.findsource
1537 - IPython.core.ultratb.fix_frame_records_filenames
1582 - IPython.core.ultratb.fix_frame_records_filenames
1538 - IPython.core.ultratb.inspect_error
1583 - IPython.core.ultratb.inspect_error
1539 - IPython.core.ultratb.is_recursion_error
1584 - IPython.core.ultratb.is_recursion_error
1540 - IPython.core.ultratb.with_patch_inspect
1585 - IPython.core.ultratb.with_patch_inspect
1541 - IPython.external.__all__
1586 - IPython.external.__all__
1542 - IPython.external.__builtins__
1587 - IPython.external.__builtins__
1543 - IPython.external.__cached__
1588 - IPython.external.__cached__
1544 - IPython.external.__doc__
1589 - IPython.external.__doc__
1545 - IPython.external.__file__
1590 - IPython.external.__file__
1546 - IPython.external.__loader__
1591 - IPython.external.__loader__
1547 - IPython.external.__name__
1592 - IPython.external.__name__
1548 - IPython.external.__package__
1593 - IPython.external.__package__
1549 - IPython.external.__path__
1594 - IPython.external.__path__
1550 - IPython.external.__spec__
1595 - IPython.external.__spec__
1551 - IPython.kernel.KernelConnectionInfo
1596 - IPython.kernel.KernelConnectionInfo
1552 - IPython.kernel.__builtins__
1597 - IPython.kernel.__builtins__
1553 - IPython.kernel.__cached__
1598 - IPython.kernel.__cached__
1554 - IPython.kernel.__warningregistry__
1599 - IPython.kernel.__warningregistry__
1555 - IPython.kernel.pkg
1600 - IPython.kernel.pkg
1556 - IPython.kernel.protocol_version
1601 - IPython.kernel.protocol_version
1557 - IPython.kernel.protocol_version_info
1602 - IPython.kernel.protocol_version_info
1558 - IPython.kernel.src
1603 - IPython.kernel.src
1559 - IPython.kernel.version_info
1604 - IPython.kernel.version_info
1560 - IPython.kernel.warn
1605 - IPython.kernel.warn
1561 - IPython.lib.backgroundjobs
1606 - IPython.lib.backgroundjobs
1562 - IPython.lib.backgroundjobs.BackgroundJobBase
1607 - IPython.lib.backgroundjobs.BackgroundJobBase
1563 - IPython.lib.backgroundjobs.BackgroundJobBase.run
1608 - IPython.lib.backgroundjobs.BackgroundJobBase.run
1564 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
1609 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
1565 - IPython.lib.backgroundjobs.BackgroundJobExpr
1610 - IPython.lib.backgroundjobs.BackgroundJobExpr
1566 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
1611 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
1567 - IPython.lib.backgroundjobs.BackgroundJobFunc
1612 - IPython.lib.backgroundjobs.BackgroundJobFunc
1568 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
1613 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
1569 - IPython.lib.backgroundjobs.BackgroundJobManager
1614 - IPython.lib.backgroundjobs.BackgroundJobManager
1570 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
1615 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
1571 - IPython.lib.backgroundjobs.BackgroundJobManager.new
1616 - IPython.lib.backgroundjobs.BackgroundJobManager.new
1572 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
1617 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
1573 - IPython.lib.backgroundjobs.BackgroundJobManager.result
1618 - IPython.lib.backgroundjobs.BackgroundJobManager.result
1574 - IPython.lib.backgroundjobs.BackgroundJobManager.status
1619 - IPython.lib.backgroundjobs.BackgroundJobManager.status
1575 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
1620 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
1576 - IPython.lib.backgroundjobs.__builtins__
1621 - IPython.lib.backgroundjobs.__builtins__
1577 - IPython.lib.backgroundjobs.__cached__
1622 - IPython.lib.backgroundjobs.__cached__
1578 - IPython.lib.backgroundjobs.__doc__
1623 - IPython.lib.backgroundjobs.__doc__
1579 - IPython.lib.backgroundjobs.__file__
1624 - IPython.lib.backgroundjobs.__file__
1580 - IPython.lib.backgroundjobs.__loader__
1625 - IPython.lib.backgroundjobs.__loader__
1581 - IPython.lib.backgroundjobs.__name__
1626 - IPython.lib.backgroundjobs.__name__
1582 - IPython.lib.backgroundjobs.__package__
1627 - IPython.lib.backgroundjobs.__package__
1583 - IPython.lib.backgroundjobs.__spec__
1628 - IPython.lib.backgroundjobs.__spec__
1584 - IPython.lib.kernel.__builtins__
1629 - IPython.lib.kernel.__builtins__
1585 - IPython.lib.kernel.__cached__
1630 - IPython.lib.kernel.__cached__
1586 - IPython.lib.kernel.__doc__
1631 - IPython.lib.kernel.__doc__
1587 - IPython.lib.kernel.__file__
1632 - IPython.lib.kernel.__file__
1588 - IPython.lib.kernel.__loader__
1633 - IPython.lib.kernel.__loader__
1589 - IPython.lib.kernel.__name__
1634 - IPython.lib.kernel.__name__
1590 - IPython.lib.kernel.__package__
1635 - IPython.lib.kernel.__package__
1591 - IPython.lib.kernel.__spec__
1636 - IPython.lib.kernel.__spec__
1592 - IPython.lib.kernel.__warningregistry__
1637 - IPython.lib.kernel.__warningregistry__
1593 - IPython.paths.fs_encoding
1638 - IPython.paths.fs_encoding
1594 - IPython.terminal.debugger.DEFAULT_BUFFER
1639 - IPython.terminal.debugger.DEFAULT_BUFFER
1595 - IPython.terminal.debugger.cursor_in_leading_ws
1640 - IPython.terminal.debugger.cursor_in_leading_ws
1596 - IPython.terminal.debugger.emacs_insert_mode
1641 - IPython.terminal.debugger.emacs_insert_mode
1597 - IPython.terminal.debugger.has_selection
1642 - IPython.terminal.debugger.has_selection
1598 - IPython.terminal.debugger.vi_insert_mode
1643 - IPython.terminal.debugger.vi_insert_mode
1599 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
1644 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
1600 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
1645 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
1601 - IPython.testing.test
1646 - IPython.testing.test
1602 - IPython.utils.contexts.NoOpContext
1647 - IPython.utils.contexts.NoOpContext
1603 - IPython.utils.io.IOStream
1648 - IPython.utils.io.IOStream
1604 - IPython.utils.io.IOStream.close
1649 - IPython.utils.io.IOStream.close
1605 - IPython.utils.io.IOStream.write
1650 - IPython.utils.io.IOStream.write
1606 - IPython.utils.io.IOStream.writelines
1651 - IPython.utils.io.IOStream.writelines
1607 - IPython.utils.io.__warningregistry__
1652 - IPython.utils.io.__warningregistry__
1608 - IPython.utils.io.atomic_writing
1653 - IPython.utils.io.atomic_writing
1609 - IPython.utils.io.stderr
1654 - IPython.utils.io.stderr
1610 - IPython.utils.io.stdin
1655 - IPython.utils.io.stdin
1611 - IPython.utils.io.stdout
1656 - IPython.utils.io.stdout
1612 - IPython.utils.io.unicode_std_stream
1657 - IPython.utils.io.unicode_std_stream
1613 - IPython.utils.path.get_ipython_cache_dir
1658 - IPython.utils.path.get_ipython_cache_dir
1614 - IPython.utils.path.get_ipython_dir
1659 - IPython.utils.path.get_ipython_dir
1615 - IPython.utils.path.get_ipython_module_path
1660 - IPython.utils.path.get_ipython_module_path
1616 - IPython.utils.path.get_ipython_package_dir
1661 - IPython.utils.path.get_ipython_package_dir
1617 - IPython.utils.path.locate_profile
1662 - IPython.utils.path.locate_profile
1618 - IPython.utils.path.unquote_filename
1663 - IPython.utils.path.unquote_filename
1619 - IPython.utils.py3compat.PY2
1664 - IPython.utils.py3compat.PY2
1620 - IPython.utils.py3compat.PY3
1665 - IPython.utils.py3compat.PY3
1621 - IPython.utils.py3compat.buffer_to_bytes
1666 - IPython.utils.py3compat.buffer_to_bytes
1622 - IPython.utils.py3compat.builtin_mod_name
1667 - IPython.utils.py3compat.builtin_mod_name
1623 - IPython.utils.py3compat.cast_bytes
1668 - IPython.utils.py3compat.cast_bytes
1624 - IPython.utils.py3compat.getcwd
1669 - IPython.utils.py3compat.getcwd
1625 - IPython.utils.py3compat.isidentifier
1670 - IPython.utils.py3compat.isidentifier
1626 - IPython.utils.py3compat.u_format
1671 - IPython.utils.py3compat.u_format
1627
1672
1628 The following signatures differ between 7.x and 8.0::
1673 The following signatures differ between 7.x and 8.0::
1629
1674
1630 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
1675 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
1631 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
1676 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
1632
1677
1633 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
1678 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
1634 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
1679 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
1635
1680
1636 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
1681 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
1637 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
1682 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
1638
1683
1639 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
1684 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
1640 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
1685 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
1641
1686
1642 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
1687 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
1643 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
1688 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
1644
1689
1645 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
1690 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
1646 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
1691 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
1647
1692
1648 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
1693 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
1649 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
1694 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
1650
1695
1651 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
1696 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
1652 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
1697 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
1653
1698
1654 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
1699 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
1655 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
1700 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
1656
1701
1657 - IPython.terminal.embed.embed(**kwargs)
1702 - IPython.terminal.embed.embed(**kwargs)
1658 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
1703 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
1659
1704
1660 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
1705 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
1661 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
1706 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
1662
1707
1663 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
1708 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
1664 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
1709 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
1665
1710
1666 - IPython.utils.path.get_py_filename(name, force_win32='None')
1711 - IPython.utils.path.get_py_filename(name, force_win32='None')
1667 + IPython.utils.path.get_py_filename(name)
1712 + IPython.utils.path.get_py_filename(name)
1668
1713
1669 The following are new attributes (that might be inherited)::
1714 The following are new attributes (that might be inherited)::
1670
1715
1671 + IPython.core.completer.IPCompleter.unicode_names
1716 + IPython.core.completer.IPCompleter.unicode_names
1672 + IPython.core.debugger.InterruptiblePdb.precmd
1717 + IPython.core.debugger.InterruptiblePdb.precmd
1673 + IPython.core.debugger.Pdb.precmd
1718 + IPython.core.debugger.Pdb.precmd
1674 + IPython.core.ultratb.AutoFormattedTB.has_colors
1719 + IPython.core.ultratb.AutoFormattedTB.has_colors
1675 + IPython.core.ultratb.ColorTB.has_colors
1720 + IPython.core.ultratb.ColorTB.has_colors
1676 + IPython.core.ultratb.FormattedTB.has_colors
1721 + IPython.core.ultratb.FormattedTB.has_colors
1677 + IPython.core.ultratb.ListTB.has_colors
1722 + IPython.core.ultratb.ListTB.has_colors
1678 + IPython.core.ultratb.SyntaxTB.has_colors
1723 + IPython.core.ultratb.SyntaxTB.has_colors
1679 + IPython.core.ultratb.TBTools.has_colors
1724 + IPython.core.ultratb.TBTools.has_colors
1680 + IPython.core.ultratb.VerboseTB.has_colors
1725 + IPython.core.ultratb.VerboseTB.has_colors
1681 + IPython.terminal.debugger.TerminalPdb.do_interact
1726 + IPython.terminal.debugger.TerminalPdb.do_interact
1682 + IPython.terminal.debugger.TerminalPdb.precmd
1727 + IPython.terminal.debugger.TerminalPdb.precmd
1683
1728
1684 The following attribute/methods have been removed::
1729 The following attribute/methods have been removed::
1685
1730
1686 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
1731 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
1687 - IPython.core.ultratb.AutoFormattedTB.format_records
1732 - IPython.core.ultratb.AutoFormattedTB.format_records
1688 - IPython.core.ultratb.ColorTB.format_records
1733 - IPython.core.ultratb.ColorTB.format_records
1689 - IPython.core.ultratb.FormattedTB.format_records
1734 - IPython.core.ultratb.FormattedTB.format_records
1690 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
1735 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
1691 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
1736 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
1692 - IPython.terminal.embed.InteractiveShellEmbed.write
1737 - IPython.terminal.embed.InteractiveShellEmbed.write
1693 - IPython.terminal.embed.InteractiveShellEmbed.write_err
1738 - IPython.terminal.embed.InteractiveShellEmbed.write_err
1694 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
1739 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
1695 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
1740 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
1696 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
1741 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
1697 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
1742 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
1698 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
1743 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
1699 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
1744 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
1700 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
1745 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
1701 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
1746 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
General Comments 0
You need to be logged in to leave comments. Login now