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