diff --git a/IPython/core/ultratb.py b/IPython/core/ultratb.py index 5c62ee9..696103f 100644 --- a/IPython/core/ultratb.py +++ b/IPython/core/ultratb.py @@ -185,7 +185,7 @@ def _format_filename(file, ColorFilename, ColorNormal): if ipinst is not None and file in ipinst.compile._filename_map: file = "[%s]" % ipinst.compile._filename_map[file] - tpl_link = "In %s%%s%s" % (ColorFilename, ColorNormal) + tpl_link = "Input %sIn %%s%s" % (ColorFilename, ColorNormal) else: file = util_path.compress_user( py3compat.cast_unicode(file, util_path.fs_encoding) diff --git a/docs/source/_images/auto_suggest_d_completions.png b/docs/source/_images/8.0/auto_suggest_d_completions.png similarity index 100% rename from docs/source/_images/auto_suggest_d_completions.png rename to docs/source/_images/8.0/auto_suggest_d_completions.png Binary files a/docs/source/_images/auto_suggest_d_completions.png and b/docs/source/_images/8.0/auto_suggest_d_completions.png differ diff --git a/docs/source/_images/audo_suggest_d_phantom.png b/docs/source/_images/8.0/auto_suggest_d_phantom.png similarity index 100% rename from docs/source/_images/audo_suggest_d_phantom.png rename to docs/source/_images/8.0/auto_suggest_d_phantom.png Binary files a/docs/source/_images/audo_suggest_d_phantom.png and b/docs/source/_images/8.0/auto_suggest_d_phantom.png differ diff --git a/docs/source/_images/auto_suggest_def_completions.png b/docs/source/_images/8.0/auto_suggest_def_completions.png similarity index 100% rename from docs/source/_images/auto_suggest_def_completions.png rename to docs/source/_images/8.0/auto_suggest_def_completions.png Binary files a/docs/source/_images/auto_suggest_def_completions.png and b/docs/source/_images/8.0/auto_suggest_def_completions.png differ diff --git a/docs/source/_images/auto_suggest_def_phantom.png b/docs/source/_images/8.0/auto_suggest_def_phantom.png similarity index 100% rename from docs/source/_images/auto_suggest_def_phantom.png rename to docs/source/_images/8.0/auto_suggest_def_phantom.png Binary files a/docs/source/_images/auto_suggest_def_phantom.png and b/docs/source/_images/8.0/auto_suggest_def_phantom.png differ diff --git a/docs/source/_images/auto_suggest_match_parens.png b/docs/source/_images/8.0/auto_suggest_match_parens.png similarity index 100% rename from docs/source/_images/auto_suggest_match_parens.png rename to docs/source/_images/8.0/auto_suggest_match_parens.png Binary files a/docs/source/_images/auto_suggest_match_parens.png and b/docs/source/_images/8.0/auto_suggest_match_parens.png differ diff --git a/docs/source/_images/auto_suggest_print_hello.png b/docs/source/_images/8.0/auto_suggest_print_hello.png similarity index 100% rename from docs/source/_images/auto_suggest_print_hello.png rename to docs/source/_images/8.0/auto_suggest_print_hello.png Binary files a/docs/source/_images/auto_suggest_print_hello.png and b/docs/source/_images/8.0/auto_suggest_print_hello.png differ diff --git a/docs/source/_images/auto_suggest_print_hello_suggest.png b/docs/source/_images/8.0/auto_suggest_print_hello_suggest.png similarity index 100% rename from docs/source/_images/auto_suggest_print_hello_suggest.png rename to docs/source/_images/8.0/auto_suggest_print_hello_suggest.png Binary files a/docs/source/_images/auto_suggest_print_hello_suggest.png and b/docs/source/_images/8.0/auto_suggest_print_hello_suggest.png differ diff --git a/docs/source/_images/auto_suggest_prompt_no_text.png b/docs/source/_images/8.0/auto_suggest_prompt_no_text.png similarity index 100% rename from docs/source/_images/auto_suggest_prompt_no_text.png rename to docs/source/_images/8.0/auto_suggest_prompt_no_text.png Binary files a/docs/source/_images/auto_suggest_prompt_no_text.png and b/docs/source/_images/8.0/auto_suggest_prompt_no_text.png differ diff --git a/docs/source/_images/auto_suggest_second_prompt.png b/docs/source/_images/8.0/auto_suggest_second_prompt.png similarity index 100% rename from docs/source/_images/auto_suggest_second_prompt.png rename to docs/source/_images/8.0/auto_suggest_second_prompt.png Binary files a/docs/source/_images/auto_suggest_second_prompt.png and b/docs/source/_images/8.0/auto_suggest_second_prompt.png differ diff --git a/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg b/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg new file mode 100644 index 0000000000000000000000000000000000000000..941cca0d08b95fcfbd920a24910e33715d5fa2cd GIT binary patch literal 77651 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%0A7-*oFq0 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

#q^)3!*J%T`4yWc{WrZ4AKQiG;0}Duj_- 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�`J$FeB$KbpG-Vop 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 project, to conform +to numpydoc. + +Type annotations +---------------- + +While IPython itself is highly dynamic and can't be completely typed, many of +the function now have type annotation, and part of the codebase and now checked +by mypy. + + +Featured changes +---------------- + +Here is a features list of changes in IPython 8.0. This is of course non-exhaustive. +Please note as well that many features have been added in the 7.x branch as well +(and hence why you want to read the 7.x what's new notes), in particular +features contributed by QuantStack (with respect to debugger protocol, and Xeus +Python), as well as many debugger features that I was please to implement as +part of my work at QuanSight and Sponsored by DE Shaw. + +Better Tracebacks +~~~~~~~~~~~~~~~~~ + The first on is the integration of the ``stack_data`` package; -which provide smarter information in traceback; in particular it will highlight +which provide smarter informations in traceback; in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors. For example in the following snippet:: @@ -59,44 +133,33 @@ For example in the following snippet:: Calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``, IPython 8.0 is capable of telling you, where the index error occurs:: - return x[0][i][0] - ^ - - -Numfocus Small Developer Grant ------------------------------- - -To prepare for Python 3.10 we have also started working on removing reliance and -any dependency that is not Python 3.10 compatible; that include migrating our -test suite to pytest, and starting to remove nose. This also mean that the -``iptest`` command is now gone, and all testing is via pytest. -This was in bog part thanks the NumFOCUS Small Developer grant, we were able to -allocate 4000 to hire `Nikita Kniazev @Kojoley `__ -who did a fantastic job at updating our code base, migrating to pytest, pushing -our coverage, and fixing a large number of bugs. I highly recommend contacting -them if you need help with C++ and Python projects + IndexError + Input In [2], in + ----> 1 bar() + ^^^^^ -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+ - -Removing support for Older Python ---------------------------------- + Input In [1], in bar() + 6 def bar(): + ----> 7 return foo(0) + foo( + ^^^^ + 8 1 + ^^^^^^^^ + 9 ) + foo(2) + ^^^^ + Input In [1], in foo(i) + 1 def foo(i): + 2 x = [[[0]]] + ----> 3 return x[0][i][0] + ^^^^^^^ -We are also removing support for Python up to 3.7 allowing internal code to use more -efficient ``pathlib``, and make better use of type annotations. - -IMAGE : Pathlib, pathlib everywhere. - -The completer has also seen significant updates and make use of newer Jedi API -offering faster and more reliable tab completion. +Corresponding location marked here with ``^`` will show up highlighted in +terminal and notebooks. -For the terminal users this also enable the auto-suggestion feature, described -below, which show "ghost text" ahead of your cursor you can accept without -having to press the tab key or ask the completer to suggest completions. +Autosuggestons +~~~~~~~~~~~~~~ Autosuggestion is a very useful feature available in `fish `__, `zsh `__, and `prompt-toolkit `__. @@ -108,55 +171,55 @@ or right arrow as described below. 1. Start ipython -.. image:: ../_images/auto_suggest_prompt_no_text.png +.. image:: ../_images/8.0/auto_suggest_prompt_no_text.png 2. Run ``print("hello")`` -.. image:: ../_images/auto_suggest_print_hello_suggest.png +.. image:: ../_images/8.0/auto_suggest_print_hello_suggest.png 3. Press p to see the autosuggestion -.. image:: ../_images/auto_suggest_print_hello_suggest.png +.. image:: ../_images/8.0/auto_suggest_print_hello_suggest.png 4. Press ctrl f, or ctrl e, or right arrow to accept the suggestion -.. image:: ../_images/auto_suggest_print_hello.png +.. image:: ../_images/8.0/auto_suggest_print_hello.png You can also complete word by word: 1. Run ``def say_hello(): print("hello")`` -.. image:: ../_images/auto_suggest_second_prompt.png +.. image:: ../_images/8.0/auto_suggest_second_prompt.png 2. Press d to see the autosuggestion -.. image:: ../_images/audo_suggest_d_phantom.png +.. image:: ../_images/8.0/auto_suggest_d_phantom.png 3. Press alt f to accept the first word of the suggestion -.. image:: ../_images/auto_suggest_def_phantom.png +.. image:: ../_images/8.0/auto_suggest_def_phantom.png Importantly, this feature does not interfere with tab completion: 1. After running ``def say_hello(): print("hello")``, press d -.. image:: ../_images/audo_suggest_d_phantom.png +.. image:: ../_images/8.0/auto_suggest_d_phantom.png 2. Press Tab to start tab completion -.. image:: ../_images/auto_suggest_d_completions.png +.. image:: ../_images/8.0/auto_suggest_d_completions.png 3A. Press Tab again to select the first option -.. image:: ../_images/auto_suggest_def_completions.png +.. image:: ../_images/8.0/auto_suggest_def_completions.png 3B. Press alt f to accept to accept the first word of the suggestion -.. image:: ../_images/auto_suggest_def_phantom.png +.. image:: ../_images/8.0/auto_suggest_def_phantom.png 3C. Press ctrl f or ctrl e to accept the entire suggestion -.. image:: ../_images/auto_suggest_match_parens.png +.. image:: ../_images/8.0/auto_suggest_match_parens.png To install a version of ipython with autosuggestions enabled, run: @@ -169,7 +232,7 @@ Currently, autosuggestions are only shown in the emacs or vi insert editing mode Show pinfo information in ipdb using "?" and "??" -------------------------------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In IPDB, it is now possible to show the information about an object using "?" and "??", in much the same way it can be done when using the IPython prompt:: @@ -187,7 +250,7 @@ Previously, "pinfo" or "pinfo2" command had to be used for this purpose. Autoreload 3 feature -==================== +~~~~~~~~~~~~~~~~~~~~ Example: When an IPython session is ran with the 'autoreload' extension loaded, you will now have the option '3' to select which means the following: @@ -202,14 +265,10 @@ For more information please see unit test - extensions/tests/test_autoreload.py : 'test_autoload_newly_added_objects' -Miscelanious ------------- - -Minimum supported History Range Glob feature -========================== +~~~~~~~~~~~~~~~~~~~~~~~~~~ Previously, when using ``%history``, users could specify either a range of sessions and lines, for example: @@ -230,12 +289,10 @@ However users could *not* specify both. If a user *did* specify both a range and a glob pattern, then the glob pattern would be used (globbing *all* history) *and the range would be ignored*. ---- - 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. Don't start a multi line cell with sunken parenthesis ------------------------------------------------------ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From now on IPython will not ask for the next line of input when given a single line with more closing than opening brackets. For example, this means that if @@ -243,12 +300,12 @@ you (mis)type ']]' instead of '[]', a ``SyntaxError`` will show up, instead of the ``...:`` prompt continuation. IPython shell for ipdb interact -------------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``. Automatic Vi prompt stripping -============================= +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When pasting code into IPython, it will strip the leading prompt characters if there are any. For example, you can paste the following code into the console - @@ -278,7 +335,7 @@ IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi`` Empty History Ranges -==================== +~~~~~~~~~~~~~~~~~~~~ A number of magics that take history ranges can now be used with an empty range. These magics are: @@ -298,7 +355,7 @@ when followed with :kbd:`F2`), send it to dpaste.org using ``%pastebin``, or view the whole thing syntax-highlighted with a single ``%pycat``. Traceback improvements -====================== +~~~~~~~~~~~~~~~~~~~~~~ UPDATE THIS IN INPUT. @@ -328,27 +385,76 @@ The error traceback is now correctly formatted, showing the cell number in which ...: return 3 / 0 ...: - In [2]: foo() + Input In [2]: foo() --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) - In [2], in + input In [2], in ----> 1 foo() - In [1], in foo() + Input In [1], in foo() 1 def foo(): ----> 2 return 3 / 0 ZeroDivisionError: division by zero -Remove Deprecated Stuff -======================= +Miscellaneous +~~~~~~~~~~~~~ + - ``~`` is now expanded when part of a path in most magics :ghpull:`13385` + - ``%/%%timeit`` magic now adds comma every thousands to make reading long number easier :ghpull:`13379` + - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343` + - ``collections.UserList`` now pretty-prints :ghpull:`13320` + - The debugger now have a persistent history, which should make it less + annoying to retype commands :ghpull:`13246` + - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing, we + now warn users if they use it. :ghpull:`12954` + - make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902` + + + + +Numfocus Small Developer Grant +------------------------------ + +To prepare for Python 3.10 we have also started working on removing reliance and +any dependency that is not Python 3.10 compatible; that include migrating our +test suite to pytest, and starting to remove nose. This also mean that the +``iptest`` command is now gone, and all testing is via pytest. + +This was in bog part thanks the NumFOCUS Small Developer grant, we were able to +allocate 4000 to hire `Nikita Kniazev @Kojoley `__ +who did a fantastic job at updating our code base, migrating to pytest, pushing +our coverage, and fixing a large number of bugs. I highly recommend contacting +them if you need help with C++ and Python projects + +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+ + +Removing support for Older Python +--------------------------------- + + +We are also removing support for Python up to 3.7 allowing internal code to use more +efficient ``pathlib``, and make better use of type annotations. + +.. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg + :alt: "Meme image of Toy story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'" + + +IMAGE : Pathlib, pathlib everywhere. + +We have about 34 PRs only to update some logic tu update some function from managing strings to +using Pathlib. + +The completer has also seen significant updates and make use of newer Jedi API +offering faster and more reliable tab completion. + +For the terminal users this also enable the auto-suggestion feature, described +below, which show "ghost text" ahead of your cursor you can accept without +having to press the tab key or ask the completer to suggest completions. -We no longer need to add `extensions` to the PYTHONPATH because that is being -handled by `load_extension`. -We are also removing Cythonmagic, sympyprinting and rmagic as they are now in -other packages and no longer need to be inside IPython. .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT.