Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-ipython for openSUSE:Factory checked in at 2023-10-08 12:17:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-ipython (Old) and /work/SRC/openSUSE:Factory/.python-ipython.new.28202 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ipython" Sun Oct 8 12:17:19 2023 rev:43 rq:1116206 version:8.16.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-ipython/python-ipython.changes 2023-09-25 20:00:13.235708650 +0200 +++ /work/SRC/openSUSE:Factory/.python-ipython.new.28202/python-ipython.changes 2023-10-08 12:20:02.289867314 +0200 @@ -1,0 +2,14 @@ +Sat Oct 7 12:57:40 UTC 2023 - Ben Greiner <[email protected]> + +- Update to 8.16.1 + * Small double release of IPython (with the 8.12.3 release notes + just below). Mostly bug fixes and cleanups, and type + annotations. Of interest for users: + * #14153 Fix a bug of the new iPdb chained traceback where some + Exception would not have any traceback. (see upstream fix in + CPython for more details). + * #14168 Fix case with spurious message about event loops when + using matplotlib. +- Remove skip_python312 (see changelog for 8.15) + +------------------------------------------------------------------- Old: ---- ipython-8.15.0.tar.gz New: ---- ipython-8.16.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-ipython.spec ++++++ --- /var/tmp/diff_new_pack.fTeO72/_old 2023-10-08 12:20:03.461909453 +0200 +++ /var/tmp/diff_new_pack.fTeO72/_new 2023-10-08 12:20:03.461909453 +0200 @@ -32,10 +32,8 @@ # extra tests are skipped automatically, don't require these packages for Ring1 %bcond_with localtest %{?sle15_python_module_pythons} -# See whatsnew of 8.14 -%define skip_python312 1 Name: python-ipython%{psuffix} -Version: 8.15.0 +Version: 8.16.1 Release: 0 Summary: Rich architecture for interactive computing with Python License: BSD-3-Clause ++++++ ipython-8.15.0.tar.gz -> ipython-8.16.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/core/debugger.py new/ipython-8.16.1/IPython/core/debugger.py --- old/ipython-8.15.0/IPython/core/debugger.py 2023-08-29 13:50:47.000000000 +0200 +++ new/ipython-8.16.1/IPython/core/debugger.py 2023-09-29 11:14:43.000000000 +0200 @@ -419,7 +419,12 @@ rep = repr(exc) if len(rep) > 80: rep = rep[:77] + "..." - self.message(f"{prompt} {ix:>3} {rep}") + indicator = ( + " -" + if self._chained_exceptions[ix].__traceback__ is None + else f"{ix:>3}" + ) + self.message(f"{prompt} {indicator} {rep}") else: try: number = int(arg) @@ -427,6 +432,12 @@ self.error("Argument must be an integer") return if 0 <= number < len(self._chained_exceptions): + if self._chained_exceptions[number].__traceback__ is None: + self.error( + "This exception does not have a traceback, cannot jump to it" + ) + return + self._chained_exception_index = number self.setup(None, self._chained_exceptions[number].__traceback__) self.print_stack_entry(self.stack[self.curindex]) @@ -438,6 +449,8 @@ if CHAIN_EXCEPTIONS: # this context manager is part of interaction in 3.13 _chained_exceptions, tb = self._get_tb_and_exceptions(tb_or_exc) + if isinstance(tb_or_exc, BaseException): + assert tb is not None, "main exception must have a traceback" with self._hold_exceptions(_chained_exceptions): OldPdb.interaction(self, frame, tb) else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/core/guarded_eval.py new/ipython-8.16.1/IPython/core/guarded_eval.py --- old/ipython-8.15.0/IPython/core/guarded_eval.py 2023-06-02 15:24:47.000000000 +0200 +++ new/ipython-8.16.1/IPython/core/guarded_eval.py 2023-09-29 11:16:48.000000000 +0200 @@ -444,7 +444,7 @@ - control flow: - conditionals (``if x:``) except for ternary IfExp (``a if x else b``) - - loops (``for`` and `while``) + - loops (``for`` and ``while``) - exception handling The purpose of this function is to guard against unwanted side-effects; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/core/magics/basic.py new/ipython-8.16.1/IPython/core/magics/basic.py --- old/ipython-8.15.0/IPython/core/magics/basic.py 2023-08-29 10:58:38.000000000 +0200 +++ new/ipython-8.16.1/IPython/core/magics/basic.py 2023-09-29 11:14:43.000000000 +0200 @@ -122,7 +122,7 @@ Created `%whereami` as an alias for `%pwd`. In [6]: %whereami - Out[6]: u'/home/testuser' + Out[6]: '/home/testuser' In [7]: %alias_magic h history "-p -l 30" --line Created `%h` as an alias for `%history -l 30`. @@ -537,25 +537,25 @@ In [1]: from math import pi In [2]: %precision 3 - Out[2]: u'%.3f' + Out[2]: '%.3f' In [3]: pi Out[3]: 3.142 In [4]: %precision %i - Out[4]: u'%i' + Out[4]: '%i' In [5]: pi Out[5]: 3 In [6]: %precision %e - Out[6]: u'%e' + Out[6]: '%e' In [7]: pi**10 Out[7]: 9.364805e+04 In [8]: %precision - Out[8]: u'%r' + Out[8]: '%r' In [9]: pi**10 Out[9]: 93648.047476082982 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/core/release.py new/ipython-8.16.1/IPython/core/release.py --- old/ipython-8.15.0/IPython/core/release.py 2023-09-01 14:39:54.000000000 +0200 +++ new/ipython-8.16.1/IPython/core/release.py 2023-09-29 11:16:48.000000000 +0200 @@ -16,8 +16,8 @@ # release. 'dev' as a _version_extra string means this is a development # version _version_major = 8 -_version_minor = 15 -_version_patch = 0 +_version_minor = 16 +_version_patch = 1 _version_extra = ".dev" # _version_extra = "rc1" _version_extra = "" # Uncomment this for full releases diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/display.py new/ipython-8.16.1/IPython/display.py --- old/ipython-8.15.0/IPython/display.py 2023-02-13 15:14:08.000000000 +0100 +++ new/ipython-8.16.1/IPython/display.py 2023-09-29 11:14:43.000000000 +0200 @@ -14,31 +14,31 @@ from IPython.core.display_functions import * from IPython.core.display import ( - display_pretty, - display_html, - display_markdown, - display_svg, - display_png, - display_jpeg, - display_latex, - display_json, - display_javascript, - display_pdf, - DisplayObject, - TextDisplayObject, - Pretty, - HTML, - Markdown, - Math, - Latex, - SVG, - ProgressBar, - JSON, - GeoJSON, - Javascript, - Image, - set_matplotlib_formats, - set_matplotlib_close, - Video, + display_pretty as display_pretty, + display_html as display_html, + display_markdown as display_markdown, + display_svg as display_svg, + display_png as display_png, + display_jpeg as display_jpeg, + display_latex as display_latex, + display_json as display_json, + display_javascript as display_javascript, + display_pdf as display_pdf, + DisplayObject as DisplayObject, + TextDisplayObject as TextDisplayObject, + Pretty as Pretty, + HTML as HTML, + Markdown as Markdown, + Math as Math, + Latex as Latex, + SVG as SVG, + ProgressBar as ProgressBar, + JSON as JSON, + GeoJSON as GeoJSON, + Javascript as Javascript, + Image as Image, + set_matplotlib_formats as set_matplotlib_formats, + set_matplotlib_close as set_matplotlib_close, + Video as Video, ) from IPython.lib.display import * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/terminal/embed.py new/ipython-8.16.1/IPython/terminal/embed.py --- old/ipython-8.15.0/IPython/terminal/embed.py 2023-08-28 14:03:15.000000000 +0200 +++ new/ipython-8.16.1/IPython/terminal/embed.py 2023-09-29 10:26:52.000000000 +0200 @@ -158,6 +158,12 @@ assert ( "user_global_ns" not in kw ), "Key word argument `user_global_ns` has been replaced by `user_module` since IPython 4.0." + # temporary fix for https://github.com/ipython/ipython/issues/14164 + cls = type(self) + if cls._instance is None: + for subclass in cls._walk_mro(): + subclass._instance = self + cls._instance = self clid = kw.pop('_init_location_id', None) if not clid: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/terminal/interactiveshell.py new/ipython-8.16.1/IPython/terminal/interactiveshell.py --- old/ipython-8.15.0/IPython/terminal/interactiveshell.py 2023-08-29 10:58:38.000000000 +0200 +++ new/ipython-8.16.1/IPython/terminal/interactiveshell.py 2023-09-29 11:14:43.000000000 +0200 @@ -4,7 +4,7 @@ import os import sys from warnings import warn -from typing import Union as UnionType +from typing import Union as UnionType, Optional from IPython.core.async_helpers import get_asyncio_loop from IPython.core.interactiveshell import InteractiveShell, InteractiveShellABC @@ -912,8 +912,9 @@ if self._inputhook is not None: self._inputhook(context) - active_eventloop = None - def enable_gui(self, gui=None): + active_eventloop: Optional[str] = None + + def enable_gui(self, gui: Optional[str] = None) -> None: if self.simple_prompt is True and gui is not None: print( f'Cannot install event loop hook for "{gui}" when running with `--simple-prompt`.' @@ -928,8 +929,15 @@ return if self._inputhook is not None and gui is not None: - print( - f"Shell is already running a gui event loop for {self.active_eventloop}. " + newev, newinhook = get_inputhook_name_and_func(gui) + if self._inputhook == newinhook: + # same inputhook, do nothing + self.log.info( + f"Shell is already running the {self.active_eventloop} eventloop. Doing nothing" + ) + return + self.log.warning( + f"Shell is already running a different gui event loop for {self.active_eventloop}. " "Call with no arguments to disable the current loop." ) return diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/terminal/ipapp.py new/ipython-8.16.1/IPython/terminal/ipapp.py --- old/ipython-8.15.0/IPython/terminal/ipapp.py 2023-08-28 14:03:15.000000000 +0200 +++ new/ipython-8.16.1/IPython/terminal/ipapp.py 2023-09-29 11:14:43.000000000 +0200 @@ -1,4 +1,3 @@ -#!/usr/bin/env python # encoding: utf-8 """ The :class:`~traitlets.config.application.Application` object for the command @@ -337,7 +336,3 @@ return app.config launch_new_instance = TerminalIPythonApp.launch_instance - - -if __name__ == '__main__': - launch_new_instance() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/terminal/pt_inputhooks/__init__.py new/ipython-8.16.1/IPython/terminal/pt_inputhooks/__init__.py --- old/ipython-8.15.0/IPython/terminal/pt_inputhooks/__init__.py 2023-08-28 14:03:15.000000000 +0200 +++ new/ipython-8.16.1/IPython/terminal/pt_inputhooks/__init__.py 2023-09-29 11:14:43.000000000 +0200 @@ -1,5 +1,6 @@ import importlib import os +from typing import Tuple, Callable aliases = { 'qt4': 'qt', @@ -119,7 +120,7 @@ return qt_env2gui[QT_API] -def get_inputhook_name_and_func(gui): +def get_inputhook_name_and_func(gui: str) -> Tuple[str, Callable]: if gui in registered: return gui, registered[gui] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/IPython/utils/_sysinfo.py new/ipython-8.16.1/IPython/utils/_sysinfo.py --- old/ipython-8.15.0/IPython/utils/_sysinfo.py 2023-09-01 14:39:54.000000000 +0200 +++ new/ipython-8.16.1/IPython/utils/_sysinfo.py 2023-09-29 11:16:48.000000000 +0200 @@ -1,2 +1,2 @@ # GENERATED BY setup.py -commit = "bc8b2d22f" +commit = "a2af83ddf" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/PKG-INFO new/ipython-8.16.1/PKG-INFO --- old/ipython-8.15.0/PKG-INFO 2023-09-01 14:39:54.000000000 +0200 +++ new/ipython-8.16.1/PKG-INFO 2023-09-29 11:16:48.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: ipython -Version: 8.15.0 +Version: 8.16.1 Summary: IPython: Productive Interactive Computing Home-page: https://ipython.org Author: The IPython Development Team @@ -25,19 +25,99 @@ Classifier: Topic :: System :: Shells Requires-Python: >=3.9 Description-Content-Type: text/x-rst +License-File: LICENSE +Requires-Dist: appnope; sys_platform == "darwin" +Requires-Dist: backcall +Requires-Dist: colorama; sys_platform == "win32" +Requires-Dist: decorator +Requires-Dist: exceptiongroup; python_version < "3.11" +Requires-Dist: jedi>=0.16 +Requires-Dist: matplotlib-inline +Requires-Dist: pexpect>4.3; sys_platform != "win32" +Requires-Dist: pickleshare +Requires-Dist: prompt_toolkit!=3.0.37,<3.1.0,>=3.0.30 +Requires-Dist: pygments>=2.4.0 +Requires-Dist: stack_data +Requires-Dist: traitlets>=5 +Requires-Dist: typing_extensions; python_version < "3.10" Provides-Extra: black +Requires-Dist: black; extra == "black" Provides-Extra: doc +Requires-Dist: ipykernel; extra == "doc" +Requires-Dist: setuptools>=18.5; extra == "doc" +Requires-Dist: sphinx>=1.3; extra == "doc" +Requires-Dist: sphinx-rtd-theme; extra == "doc" +Requires-Dist: docrepr; extra == "doc" +Requires-Dist: matplotlib; extra == "doc" +Requires-Dist: stack_data; extra == "doc" +Requires-Dist: pytest<7; extra == "doc" +Requires-Dist: typing_extensions; extra == "doc" +Requires-Dist: exceptiongroup; extra == "doc" +Requires-Dist: pytest<7.1; extra == "doc" +Requires-Dist: pytest-asyncio; extra == "doc" +Requires-Dist: testpath; extra == "doc" Provides-Extra: kernel +Requires-Dist: ipykernel; extra == "kernel" Provides-Extra: nbconvert +Requires-Dist: nbconvert; extra == "nbconvert" Provides-Extra: nbformat +Requires-Dist: nbformat; extra == "nbformat" Provides-Extra: notebook +Requires-Dist: ipywidgets; extra == "notebook" +Requires-Dist: notebook; extra == "notebook" Provides-Extra: parallel +Requires-Dist: ipyparallel; extra == "parallel" Provides-Extra: qtconsole +Requires-Dist: qtconsole; extra == "qtconsole" Provides-Extra: terminal Provides-Extra: test -Provides-Extra: test_extra +Requires-Dist: pytest<7.1; extra == "test" +Requires-Dist: pytest-asyncio; extra == "test" +Requires-Dist: testpath; extra == "test" +Provides-Extra: test-extra +Requires-Dist: pytest<7.1; extra == "test-extra" +Requires-Dist: pytest-asyncio; extra == "test-extra" +Requires-Dist: testpath; extra == "test-extra" +Requires-Dist: curio; extra == "test-extra" +Requires-Dist: matplotlib!=3.2.0; extra == "test-extra" +Requires-Dist: nbformat; extra == "test-extra" +Requires-Dist: numpy>=1.21; extra == "test-extra" +Requires-Dist: pandas; extra == "test-extra" +Requires-Dist: trio; extra == "test-extra" Provides-Extra: all -License-File: LICENSE +Requires-Dist: black; extra == "all" +Requires-Dist: ipykernel; extra == "all" +Requires-Dist: setuptools>=18.5; extra == "all" +Requires-Dist: sphinx>=1.3; extra == "all" +Requires-Dist: sphinx-rtd-theme; extra == "all" +Requires-Dist: docrepr; extra == "all" +Requires-Dist: matplotlib; extra == "all" +Requires-Dist: stack_data; extra == "all" +Requires-Dist: pytest<7; extra == "all" +Requires-Dist: typing_extensions; extra == "all" +Requires-Dist: exceptiongroup; extra == "all" +Requires-Dist: pytest<7.1; extra == "all" +Requires-Dist: pytest-asyncio; extra == "all" +Requires-Dist: testpath; extra == "all" +Requires-Dist: ipykernel; extra == "all" +Requires-Dist: nbconvert; extra == "all" +Requires-Dist: nbformat; extra == "all" +Requires-Dist: ipywidgets; extra == "all" +Requires-Dist: notebook; extra == "all" +Requires-Dist: ipyparallel; extra == "all" +Requires-Dist: qtconsole; extra == "all" +Requires-Dist: pytest<7.1; extra == "all" +Requires-Dist: pytest-asyncio; extra == "all" +Requires-Dist: testpath; extra == "all" +Requires-Dist: curio; extra == "all" +Requires-Dist: matplotlib!=3.2.0; extra == "all" +Requires-Dist: nbformat; extra == "all" +Requires-Dist: numpy>=1.21; extra == "all" +Requires-Dist: pandas; extra == "all" +Requires-Dist: trio; extra == "all" +Requires-Dist: pytest<7.1; extra == "all" +Requires-Dist: pytest-asyncio; extra == "all" +Requires-Dist: testpath; extra == "all" IPython provides a rich toolkit to help you make the most out of using Python interactively. Its main components are: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/docs/requirements.txt new/ipython-8.16.1/docs/requirements.txt --- old/ipython-8.15.0/docs/requirements.txt 2023-02-13 15:14:08.000000000 +0100 +++ new/ipython-8.16.1/docs/requirements.txt 2023-09-29 11:07:38.000000000 +0200 @@ -1 +1,12 @@ -e .[doc] +sphinx>7 +setuptools +sphinx_rtd_theme>=1.2.0 +numpy +exceptiongroup +testpath +matplotlib +docrepr +prompt_toolkit +ipykernel +stack_data diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/docs/source/whatsnew/version8.rst new/ipython-8.16.1/docs/source/whatsnew/version8.rst --- old/ipython-8.15.0/docs/source/whatsnew/version8.rst 2023-09-01 14:39:54.000000000 +0200 +++ new/ipython-8.16.1/docs/source/whatsnew/version8.rst 2023-09-29 11:16:48.000000000 +0200 @@ -2,6 +2,43 @@ 8.x Series ============ +.. _version 8.16: +.. _version 8.16.1: + +IPython 8.16, 8.16.1 +-------------------- + +Small double release of IPython (with the 8.12.3 release notes just below). +Mostly bug fixes and cleanups, and type annotations. Of interest for users: + + - :ghpull:`14153` Fix a bug of the new iPdb chained traceback where some + Exception would not have any traceback. (see upstream fix in CPython for more + details). + - :ghpull:`14168` Fix case with spurious message about event loops when using + matplotlib. + +This PR is in 8.16.0 but reverted in 8.16.1, we'll rework the fix for 8.17 + + - :ghpull:`14163` Fix an error where semicolon would not suppress output. + +As usual you can find the full list of PRs on GitHub under `the 8.16 +<https://github.com/ipython/ipython/milestone/121?closed=1>`__ and `8.16.1 milestone +<https://github.com/ipython/ipython/milestone/124?closed=1>`__. + +Thanks to the `D.E. Shaw group <https://www.deshaw.com/>`__ for the request and +sponsoring the work. + +.. _version 8.12.3: + +IPython 8.12.3 +-------------- + +Tiny release of 8.12.3 that backport a small number of fixes for users still +using Python 3.8. + + - :ghpull:`14080` add passthrough filter shortcuts + - :ghpull:`14169` Fix `InteractiveShellEmbed` + .. _version 8.15: IPython 8.15 @@ -74,11 +111,76 @@ feature in older version of Python. I invite you to look at the `CPython changes and docs <https://github.com/python/cpython/pull/106676>`__ for more details. +In short, once in post-mortem debuger (``%debug``), you can use the ipdb +``exceptions`` command to switch exceptions, for example: +.. code-block:: ipython -I, in particular want to thanks the `D.E. Shaw group -<https://www.deshaw.com/>`__ for suggesting and funding the two largest feature -as well as many bug fixes of this release. + In [1]: def foo(x): + ...: try: + ...: bar(x) + ...: except Exception as e: + ...: raise ValueError("foo (): bar failed") from e + ...: + ...: def bar(x): + ...: 1 / X + ...: + + In [2]: foo(0) + --------------------------------------------------------------------------- + NameError Traceback (most recent call last) + Cell In[1], line 3, in foo(x) + 2 try: + ----> 3 bar(x) + 4 except Exception as e: + + Cell In[1], line 9, in bar(x) + 8 def bar(x): + ----> 9 1 / X + + NameError: name 'X' is not defined + + The above exception was the direct cause of the following exception: + + ValueError Traceback (most recent call last) + Cell In[2], line 1 + ----> 1 foo(0) + + Cell In[1], line 5, in foo(x) + 3 bar(x) + 4 except Exception as e: + ----> 5 raise ValueError("foo (): bar failed") from e + + ValueError: foo (): bar failed + + In [3]: %debug + > <ipython-input-1-b0bbdc271ffb>(5)foo() + 3 bar(x) + 4 except Exception as e: + ----> 5 raise ValueError("foo (): bar failed") from e + +In previous ipdb you could not go into the bar error, now from within pdb you +can use ``exceptions``: + +.. code-block:: ipython + + ipdb> exceptions + 0 NameError("name 'X' is not defined") + > 1 ValueError('foo (): bar failed') + + ipdb> exceptions 0 + > <ipython-input-1-b0bbdc271ffb>(9)bar() + 6 + 7 + 8 def bar(x): + ----> 9 1 / X + 10 + + ipdb> + +In particular I want to thank the `D.E. Shaw group <https://www.deshaw.com/>`__ +for suggesting and funding the two largest feature as well as many bug fixes of +this release. As usual you can find the full list of PRs on GitHub under `the 8.15 milestone <https://github.com/ipython/ipython/milestone/120?closed=1>`__. @@ -133,7 +235,7 @@ .. _version 8.13.1: .. _version 8.13.2: -.. _version 8.12.3: +.. _version 8.12.2: IPython 8.13.1, 8.13.2 and 8.12.2 --------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.15.0/ipython.egg-info/PKG-INFO new/ipython-8.16.1/ipython.egg-info/PKG-INFO --- old/ipython-8.15.0/ipython.egg-info/PKG-INFO 2023-09-01 14:39:54.000000000 +0200 +++ new/ipython-8.16.1/ipython.egg-info/PKG-INFO 2023-09-29 11:16:48.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: ipython -Version: 8.15.0 +Version: 8.16.1 Summary: IPython: Productive Interactive Computing Home-page: https://ipython.org Author: The IPython Development Team @@ -25,19 +25,99 @@ Classifier: Topic :: System :: Shells Requires-Python: >=3.9 Description-Content-Type: text/x-rst +License-File: LICENSE +Requires-Dist: appnope; sys_platform == "darwin" +Requires-Dist: backcall +Requires-Dist: colorama; sys_platform == "win32" +Requires-Dist: decorator +Requires-Dist: exceptiongroup; python_version < "3.11" +Requires-Dist: jedi>=0.16 +Requires-Dist: matplotlib-inline +Requires-Dist: pexpect>4.3; sys_platform != "win32" +Requires-Dist: pickleshare +Requires-Dist: prompt_toolkit!=3.0.37,<3.1.0,>=3.0.30 +Requires-Dist: pygments>=2.4.0 +Requires-Dist: stack_data +Requires-Dist: traitlets>=5 +Requires-Dist: typing_extensions; python_version < "3.10" Provides-Extra: black +Requires-Dist: black; extra == "black" Provides-Extra: doc +Requires-Dist: ipykernel; extra == "doc" +Requires-Dist: setuptools>=18.5; extra == "doc" +Requires-Dist: sphinx>=1.3; extra == "doc" +Requires-Dist: sphinx-rtd-theme; extra == "doc" +Requires-Dist: docrepr; extra == "doc" +Requires-Dist: matplotlib; extra == "doc" +Requires-Dist: stack_data; extra == "doc" +Requires-Dist: pytest<7; extra == "doc" +Requires-Dist: typing_extensions; extra == "doc" +Requires-Dist: exceptiongroup; extra == "doc" +Requires-Dist: pytest<7.1; extra == "doc" +Requires-Dist: pytest-asyncio; extra == "doc" +Requires-Dist: testpath; extra == "doc" Provides-Extra: kernel +Requires-Dist: ipykernel; extra == "kernel" Provides-Extra: nbconvert +Requires-Dist: nbconvert; extra == "nbconvert" Provides-Extra: nbformat +Requires-Dist: nbformat; extra == "nbformat" Provides-Extra: notebook +Requires-Dist: ipywidgets; extra == "notebook" +Requires-Dist: notebook; extra == "notebook" Provides-Extra: parallel +Requires-Dist: ipyparallel; extra == "parallel" Provides-Extra: qtconsole +Requires-Dist: qtconsole; extra == "qtconsole" Provides-Extra: terminal Provides-Extra: test -Provides-Extra: test_extra +Requires-Dist: pytest<7.1; extra == "test" +Requires-Dist: pytest-asyncio; extra == "test" +Requires-Dist: testpath; extra == "test" +Provides-Extra: test-extra +Requires-Dist: pytest<7.1; extra == "test-extra" +Requires-Dist: pytest-asyncio; extra == "test-extra" +Requires-Dist: testpath; extra == "test-extra" +Requires-Dist: curio; extra == "test-extra" +Requires-Dist: matplotlib!=3.2.0; extra == "test-extra" +Requires-Dist: nbformat; extra == "test-extra" +Requires-Dist: numpy>=1.21; extra == "test-extra" +Requires-Dist: pandas; extra == "test-extra" +Requires-Dist: trio; extra == "test-extra" Provides-Extra: all -License-File: LICENSE +Requires-Dist: black; extra == "all" +Requires-Dist: ipykernel; extra == "all" +Requires-Dist: setuptools>=18.5; extra == "all" +Requires-Dist: sphinx>=1.3; extra == "all" +Requires-Dist: sphinx-rtd-theme; extra == "all" +Requires-Dist: docrepr; extra == "all" +Requires-Dist: matplotlib; extra == "all" +Requires-Dist: stack_data; extra == "all" +Requires-Dist: pytest<7; extra == "all" +Requires-Dist: typing_extensions; extra == "all" +Requires-Dist: exceptiongroup; extra == "all" +Requires-Dist: pytest<7.1; extra == "all" +Requires-Dist: pytest-asyncio; extra == "all" +Requires-Dist: testpath; extra == "all" +Requires-Dist: ipykernel; extra == "all" +Requires-Dist: nbconvert; extra == "all" +Requires-Dist: nbformat; extra == "all" +Requires-Dist: ipywidgets; extra == "all" +Requires-Dist: notebook; extra == "all" +Requires-Dist: ipyparallel; extra == "all" +Requires-Dist: qtconsole; extra == "all" +Requires-Dist: pytest<7.1; extra == "all" +Requires-Dist: pytest-asyncio; extra == "all" +Requires-Dist: testpath; extra == "all" +Requires-Dist: curio; extra == "all" +Requires-Dist: matplotlib!=3.2.0; extra == "all" +Requires-Dist: nbformat; extra == "all" +Requires-Dist: numpy>=1.21; extra == "all" +Requires-Dist: pandas; extra == "all" +Requires-Dist: trio; extra == "all" +Requires-Dist: pytest<7.1; extra == "all" +Requires-Dist: pytest-asyncio; extra == "all" +Requires-Dist: testpath; extra == "all" IPython provides a rich toolkit to help you make the most out of using Python interactively. Its main components are:
