Show More
@@ -96,10 +96,48 b' features contributed by QuantStack (with respect to debugger protocol, and Xeus' | |||||
96 | Python), as well as many debugger features that I was please to implement as |
|
96 | Python), as well as many debugger features that I was please to implement as | |
97 | part of my work at QuanSight and Sponsored by DE Shaw. |
|
97 | part of my work at QuanSight and Sponsored by DE Shaw. | |
98 |
|
98 | |||
99 | Better Tracebacks |
|
99 | Traceback improvements | |
100 | ~~~~~~~~~~~~~~~~~ |
|
100 | ~~~~~~~~~~~~~~~~~~~~~~ | |
|
101 | ||||
|
102 | Previously, error tracebacks for errors happening in code cells were showing a | |||
|
103 | hash, the one used for compiling the Python AST:: | |||
|
104 | ||||
|
105 | In [1]: def foo(): | |||
|
106 | ...: return 3 / 0 | |||
|
107 | ...: | |||
|
108 | ||||
|
109 | In [2]: foo() | |||
|
110 | --------------------------------------------------------------------------- | |||
|
111 | ZeroDivisionError Traceback (most recent call last) | |||
|
112 | <ipython-input-2-c19b6d9633cf> in <module> | |||
|
113 | ----> 1 foo() | |||
|
114 | ||||
|
115 | <ipython-input-1-1595a74c32d5> in foo() | |||
|
116 | 1 def foo(): | |||
|
117 | ----> 2 return 3 / 0 | |||
|
118 | 3 | |||
|
119 | ||||
|
120 | ZeroDivisionError: division by zero | |||
|
121 | ||||
|
122 | The error traceback is now correctly formatted, showing the cell number in which the error happened:: | |||
|
123 | ||||
|
124 | In [1]: def foo(): | |||
|
125 | ...: return 3 / 0 | |||
|
126 | ...: | |||
|
127 | ||||
|
128 | Input In [2]: foo() | |||
|
129 | --------------------------------------------------------------------------- | |||
|
130 | ZeroDivisionError Traceback (most recent call last) | |||
|
131 | input In [2], in <module> | |||
|
132 | ----> 1 foo() | |||
101 |
|
|
133 | ||
102 | The first on is the integration of the ``stack_data`` package; |
|
134 | Input In [1], in foo() | |
|
135 | 1 def foo(): | |||
|
136 | ----> 2 return 3 / 0 | |||
|
137 | ||||
|
138 | ZeroDivisionError: division by zero | |||
|
139 | ||||
|
140 | The Second on is the integration of the ``stack_data`` package; | |||
103 | which provide smarter informations in traceback; in particular it will highlight |
|
141 | which provide smarter informations in traceback; in particular it will highlight | |
104 | the AST node where an error occurs which can help to quickly narrow down errors. |
|
142 | the AST node where an error occurs which can help to quickly narrow down errors. | |
105 |
|
143 | |||
@@ -143,6 +181,24 b' IPython 8.0 is capable of telling you, where the index error occurs::' | |||||
143 | Corresponding location marked here with ``^`` will show up highlighted in |
|
181 | Corresponding location marked here with ``^`` will show up highlighted in | |
144 | terminal and notebooks. |
|
182 | terminal and notebooks. | |
145 |
|
183 | |||
|
184 | The Third, which is the most discreet but can have a high impact on | |||
|
185 | productivity, a colon ``::`` and line number is appended after a filename in | |||
|
186 | traceback:: | |||
|
187 | ||||
|
188 | ||||
|
189 | ZeroDivisionError Traceback (most recent call last) | |||
|
190 | File ~/error.py:4, in <module> | |||
|
191 | 1 def f(): | |||
|
192 | 2 1/0 | |||
|
193 | ----> 4 f() | |||
|
194 | ||||
|
195 | File ~/error.py:2, in f() | |||
|
196 | 1 def f(): | |||
|
197 | ----> 2 1/0 | |||
|
198 | ||||
|
199 | Many terminal and editor have integrations allow to directly jump to the | |||
|
200 | relevant file/line when this syntax is used. | |||
|
201 | ||||
146 |
|
202 | |||
147 | Autosuggestons |
|
203 | Autosuggestons | |
148 | ~~~~~~~~~~~~~~ |
|
204 | ~~~~~~~~~~~~~~ | |
@@ -246,7 +302,14 b' Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload' | |||||
246 |
|
302 | |||
247 | For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects`` |
|
303 | For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects`` | |
248 |
|
304 | |||
|
305 | Auto formatting with black in the CLI | |||
|
306 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |||
|
307 | ||||
|
308 | If ``black`` is installed in the same environment as IPython, terminal IPython | |||
|
309 | will now *by default* reformat the code in the CLI when possible. You can | |||
|
310 | disable this with ``--TerminalInteractiveShell.autoformatter=None``. | |||
249 |
|
311 | |||
|
312 | This feature was present in 7.x but disabled by default. | |||
250 |
|
313 | |||
251 |
|
314 | |||
252 | History Range Glob feature |
|
315 | History Range Glob feature | |
@@ -333,53 +396,29 b' included).' | |||||
333 |
|
396 | |||
334 | Therefore it is now possible to save the whole history to a file using simple |
|
397 | Therefore it is now possible to save the whole history to a file using simple | |
335 | ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage |
|
398 | ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage | |
336 |
when followed with :kbd:`F2`), send it to dpaste.org |
|
399 | when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using | |
337 |
|
|
400 | ``%pastebin``, or view the whole thing syntax-highlighted with a single | |
|
401 | ``%pycat``. | |||
338 |
|
402 | |||
339 | Traceback improvements |
|
|||
340 | ~~~~~~~~~~~~~~~~~~~~~~ |
|
|||
341 |
|
403 | |||
|
404 | Windows time-implementation: Switch to process_time | |||
|
405 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |||
|
406 | Timing for example with ``%%time`` on windows is based on ``time.perf_counter``. | |||
|
407 | This is at the end the same as W-All. | |||
|
408 | To be a bit tighter to linux one could change to ``time.process_time`` instead. | |||
|
409 | Thus for example one would no longer count periods of sleep and further. | |||
342 |
|
410 | |||
343 | Previously, error tracebacks for errors happening in code cells were showing a hash, the one used for compiling the Python AST:: |
|
|||
344 |
|
||||
345 | In [1]: def foo(): |
|
|||
346 | ...: return 3 / 0 |
|
|||
347 | ...: |
|
|||
348 |
|
||||
349 | In [2]: foo() |
|
|||
350 | --------------------------------------------------------------------------- |
|
|||
351 | ZeroDivisionError Traceback (most recent call last) |
|
|||
352 | <ipython-input-2-c19b6d9633cf> in <module> |
|
|||
353 | ----> 1 foo() |
|
|||
354 |
|
||||
355 | <ipython-input-1-1595a74c32d5> in foo() |
|
|||
356 | 1 def foo(): |
|
|||
357 | ----> 2 return 3 / 0 |
|
|||
358 | 3 |
|
|||
359 |
|
||||
360 | ZeroDivisionError: division by zero |
|
|||
361 |
|
||||
362 | The error traceback is now correctly formatted, showing the cell number in which the error happened:: |
|
|||
363 |
|
||||
364 | In [1]: def foo(): |
|
|||
365 | ...: return 3 / 0 |
|
|||
366 | ...: |
|
|||
367 |
|
||||
368 | Input In [2]: foo() |
|
|||
369 | --------------------------------------------------------------------------- |
|
|||
370 | ZeroDivisionError Traceback (most recent call last) |
|
|||
371 | input In [2], in <module> |
|
|||
372 | ----> 1 foo() |
|
|||
373 |
|
||||
374 | Input In [1], in foo() |
|
|||
375 | 1 def foo(): |
|
|||
376 | ----> 2 return 3 / 0 |
|
|||
377 |
|
||||
378 | ZeroDivisionError: division by zero |
|
|||
379 |
|
411 | |||
380 | Miscellaneous |
|
412 | Miscellaneous | |
381 | ~~~~~~~~~~~~~ |
|
413 | ~~~~~~~~~~~~~ | |
382 |
|
414 | - Non-text formatters are not disabled in terminal which should simplify | ||
|
415 | writing extension displaying images or other mimetypes supporting terminals. | |||
|
416 | :ghpull:`12315` | |||
|
417 | - | |||
|
418 | - It is now possible to automatically insert matching brackets in Terminal IPython using the | |||
|
419 | ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586` | |||
|
420 | - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376` | |||
|
421 | - ``%time`` uses ``process_time`` instead of ``perf_counter``, see :ghpull:`12984` | |||
383 | - ``~`` is now expanded when part of a path in most magics :ghpull:`13385` |
|
422 | - ``~`` is now expanded when part of a path in most magics :ghpull:`13385` | |
384 | - ``%/%%timeit`` magic now adds comma every thousands to make reading long number easier :ghpull:`13379` |
|
423 | - ``%/%%timeit`` magic now adds comma every thousands to make reading long number easier :ghpull:`13379` | |
385 | - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343` |
|
424 | - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343` | |
@@ -390,7 +429,15 b' Miscellaneous' | |||||
390 | now warn users if they use it. :ghpull:`12954` |
|
429 | now warn users if they use it. :ghpull:`12954` | |
391 | - make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902` |
|
430 | - make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902` | |
392 |
|
431 | |||
|
432 | Re-added support for XDG config directories | |||
|
433 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |||
393 |
|
434 | |||
|
435 | XDG support through the years did come an go, there is a tension between having | |||
|
436 | identical location in all platforms to have simple instructions. After initial | |||
|
437 | failure a couple of years ago IPython was modified to automatically migrate XDG | |||
|
438 | config files back into ``~/.ipython``, the migration code has now been removed. | |||
|
439 | And IPython now check the XDG locations, so if you _manually_ move your config | |||
|
440 | files to your preferred location, IPython will not move them back. | |||
394 |
|
441 | |||
395 |
|
442 | |||
396 | Numfocus Small Developer Grant |
|
443 | Numfocus Small Developer Grant |
General Comments 0
You need to be logged in to leave comments.
Login now