Compare commits

..

2 Commits

Author SHA1 Message Date
Tyler Goodlet d716c57234 Always pass `repl: PdbREPL` as first param to fixture 2025-05-16 00:25:10 -04:00
Tyler Goodlet 7695e79cb8 Add `typing_extensions`, it's a sub-dep of `stackscope`?
Oddly my env was borked bc this (apparently missed by `uv`?) sub-dep
wasn't installed and then `stackscope` was silently failing import and
caused the shield-pause test to also fail (since it couldn't match the
expected `log.devx()` on console). The import failure is not very
explanatory due to the `log.warning()`; change it to `.error()` level.

Also, explicitly import `_sync_pause_from_builtin` in
`examples/debugging/restore_builtin_breakpoint.py` to ensure the ref is
exported properly from `.devx.debug` (which it wasn't during dev of the
prior commit Bp).
2025-05-16 00:24:09 -04:00
3 changed files with 13 additions and 2 deletions

View File

@ -237,7 +237,7 @@ def enable_stack_on_sig(
try: try:
import stackscope import stackscope
except ImportError: except ImportError:
log.warning( log.error(
'`stackscope` not installed for use in debug mode!' '`stackscope` not installed for use in debug mode!'
) )
return None return None

View File

@ -144,6 +144,7 @@ def _post_mortem(
__tracebackhide__: bool = hide_tb __tracebackhide__: bool = hide_tb
with _maybe_open_repl_fixture( with _maybe_open_repl_fixture(
repl=repl,
repl_fixture=repl_fixture, repl_fixture=repl_fixture,
boxed_maybe_exc=boxed_maybe_exc, boxed_maybe_exc=boxed_maybe_exc,
) as enter_repl: ) as enter_repl:

View File

@ -90,6 +90,7 @@ if TYPE_CHECKING:
Actor, Actor,
) )
from ._post_mortem import BoxedMaybeException from ._post_mortem import BoxedMaybeException
from ._repl import PdbREPL
log = get_logger(__package__) log = get_logger(__package__)
@ -109,6 +110,11 @@ _repl_fail_msg: str|None = (
# |_https://docs.python.org/3/library/contextlib.html#using-a-context-manager-as-a-function-decorator # |_https://docs.python.org/3/library/contextlib.html#using-a-context-manager-as-a-function-decorator
@cm @cm
def _maybe_open_repl_fixture( def _maybe_open_repl_fixture(
repl: PdbREPL,
# ^XXX **always provided** by the low-level REPL-invoker,
# - _post_mortem()
# - _pause()
repl_fixture: ( repl_fixture: (
AbstractContextManager[bool] AbstractContextManager[bool]
|None |None
@ -134,7 +140,10 @@ def _maybe_open_repl_fixture(
repl_fixture repl_fixture
or or
rt_repl_fixture rt_repl_fixture
)(maybe_bxerr=boxed_maybe_exc) )(
repl=repl,
maybe_bxerr=boxed_maybe_exc
)
with _repl_fixture as enter_repl: with _repl_fixture as enter_repl:
@ -252,6 +261,7 @@ async def _pause(
# nonlocal repl_fixture # nonlocal repl_fixture
with _maybe_open_repl_fixture( with _maybe_open_repl_fixture(
repl=repl,
repl_fixture=repl_fixture, repl_fixture=repl_fixture,
) as enter_repl: ) as enter_repl:
if not enter_repl: if not enter_repl: