IPython 8.0 out now with slimmer code base, enhanced coding experience

IPython 8.0

Interactive Python toolkit IPython has slimmed down a bit, gained some enhancements for readability and debugging, and is available for downloading in version 8.0.

Helpful new features in the major release mostly fall under the category of developer experience, with better tracebacks amongst the most highlighted of the bunch. Starting with the new release, tracebacks give users a better idea about the cause of an error by pointing out in which AST node a mishap occurs and showing the cell an error happened in, instead of displaying a hash. Additional information in the traceback also means that various terminals and editors can jump directly to the file and line of a problem.

In order to help developers prevent errors in the first place, there are options to have emacs and vi automatically suggest code when used in insert editing mode. If Python code formatter black is installed in the environment IPython is running in, terminal IPython will automatically make use of its capabilities. Should that not be desired, the function can be disabled via --TerminalInteractiveShell.autoformatter=None.

Once updated, users get to extract object information in IPDB using ? and ??, which suggests an alignment of behaviour with the IPython prompt. They are also provided with a new autoreload option for funcs/classes/enums/globals that are newly imported from external modules.

IPython 8.0 automatically strips pasted code from leading vi prompts and offers the use of some history commands with empty ranges.

To get the project code into a more maintainable form, the IPython team took the opportunity of the major version change to remove everything marked deprecated between version 1.0 and 5.0. Other than that it stripped IPython off its nose dependencies, and made Python 3.8 a minimal requirement, which allows for the use of native async instead of homegrown solutions. Type annotations in parts of the codebase in combination with mypy checks are hoped to help improve the quality of the project as well.

With the 8.0 release comes a slight change in release frequency, which means that users can expect to get access to a new stable minor release on the last Friday of each month. The project’s Python support schedule will meanwhile be aligned with other tools from the Python ecosystem, as was recommended by the NumPy project in its NEP 29.

More information about the latest changes is available via the IPython changelog.

IPython started off in 2001 as a one person project and has since evolved into its own sort of ecosystem, with Jupyter probably being its best known representative. IPython comprises an interactive Python shell and a Jupyter kernel “to work with Python code in Jupyter notebooks and other interactive frontends”. 

Other components have been spun out at some point during development as well, which is why packages like IPython Parallel are now available as standalone projects.