Skip to content

Commit

Permalink
Merge pull request #381 from umairanis03/dbg-chain-exc
Browse files Browse the repository at this point in the history
pyflyby-dbg: Support chained exceptions
  • Loading branch information
Carreau authored Dec 5, 2024
2 parents 78225b3 + f564ad4 commit c73b22c
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion lib/python/pyflyby/_dbg.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,27 @@ def _debug_exception(*exc_info, **kwargs):
# keep the process waiting for debugger to attach.
pdb.postloop = _prompt_continue_waiting_for_debugger
print_verbose_tb(*exc_info)
pdb.interaction(None, exc_info[2])
# Starting Py3.13, pdb.interaction() supports chained exceptions in case
# exception (and not traceback) is specified. This support is backported
# to IPython8.16 for earlier Python versions. So the conditions where
# chained exceptions won't be supported from here would be with the
# Python version < 3.13 and ipython not installed, or IPython's version
# is lesser than 8.16.
tb_or_exc = exc_info[2]
if sys.version_info < (3, 13):
# Check if the instance is of IPython's Pdb and its version.
try:
import IPython
if IPython.version_info >= (8, 16):
from IPython.core.debugger import Pdb as IPdb
# This is expected to be True, hence just a safe check.
if isinstance(pdb, IPdb):
tb_or_exc = exc_info[1]
except ModuleNotFoundError:
pass
else:
tb_or_exc = exc_info[1]
pdb.interaction(None, tb_or_exc)


def _debug_code(arg, globals=None, locals=None, auto_import=True, tty="/dev/tty"):
Expand Down

0 comments on commit c73b22c

Please sign in to comment.