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