jupyter / jupyter_console

Jupyter Terminal Console
http://jupyter-console.readthedocs.io/en/latest/
BSD 3-Clause "New" or "Revised" License
250 stars 146 forks source link

Display ExceptionGroup full message #287

Open jbvsmo opened 1 year ago

jbvsmo commented 1 year ago

Python3.11 added the concept of exception groups and this is how the traceback is displayed on normal Python console:

>>> eg = ExceptionGroup('foo', [TypeError(10), ValueError(20)])
>>> raise eg
  + Exception Group Traceback (most recent call last):
  |   File "<stdin>", line 1, in <module>
  | ExceptionGroup: foo (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | TypeError: 10
    +---------------- 2 ----------------
    | ValueError: 20
    +------------------------------------

But on lates jupyter console 6.6.3 (also qtconsole) it shows as:

In [1]: eg = ExceptionGroup('foo', [TypeError(10), ValueError(20)])
In [2]: raise eg
---------------------------------------------------------------------------
ExceptionGroup                            Traceback (most recent call last)
Cell In[2], line 1
----> 1 raise eg

ExceptionGroup: foo (2 sub-exceptions)

According to PEP 654 you have to recursively go through the ExceptionGroup.exceptions and display them all which can include more exception groups.

Side note. If you type ExceptionG<tab>, or Ex<tab><tab> it will not autocomplete the name ExceptionGroup. It will though autocomplete Exception at the 1st <tab>... Something to check why