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 <c...@bnavigator.de>
+
+- 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:

Reply via email to