`ExceptionGroup` doesn't show sub-exceptions

Open
#1,149 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
python
Domain
backend

Research direction

Start by reproducing the Python 3.11 ExceptionGroup example in a Jupyter console and compare normal display with traceback.print_exc(). Trace the kernel's exception-display path; done means raising an ExceptionGroup in the console shows its nested exceptions without explicitly calling traceback.print_exc().

Written by the indexing model from the issue text.

Description

As seen below, Python 3.11 ExceptionGroup objects don't show sub-exceptions when displayed; explicitly catching and using traceback.print_exc() is required to see them:

❯ jupyter console

In [1]: exc = ExceptionGroup("derp", [Exception("herp")])

In [2]: raise exc
---------------------------------------------------------------------------
ExceptionGroup                            Traceback (most recent call last)
Cell In[2], line 1
----> 1 raise exc

ExceptionGroup: derp (1 sub-exception)

In [3]: try:
   ...:     raise exc
   ...: except:
   ...:     import traceback; traceback.print_exc()
   ...:
  + Exception Group Traceback (most recent call last):
  |   File "C:\Users\evanj\AppData\Local\Temp\ipykernel_20028\3102285775.py", line 2, in <module>
  |     raise exc
  |   File "C:\Users\evanj\anaconda3\Lib\site-packages\IPython\core\interactiveshell.py", line 3505, in run_code
  |     exec(code_obj, self.user_global_ns, self.user_ns)
  |   File "C:\Users\evanj\AppData\Local\Temp\ipykernel_20028\3429297078.py", line 1, in <module>
  |     raise exc
  | ExceptionGroup: derp (1 sub-exception)
  +-+---------------- 1 ----------------
    | Exception: herp
    +------------------------------------

Versions:

Python 3.11.4
ipykernel                     6.19.2
ipython                       8.12.0
jupyter                       1.0.0
jupyter_client                7.4.9
jupyter-console               6.6.3
jupyter_core                  5.3.0
jupyter-events                0.6.3
jupyter-server                1.23.4
jupyter_server_fileid         0.9.0
jupyter_server_ydoc           0.8.0
Dominant language
Python
Stars
734
Forks
411
Avg merge
1d 2h
Merged PRs (30d)
9

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ipython/ipykernel

All issues in ipython/ipykernel

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.