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