forked from goodboy/tractor
				
			First try: switch debug machinery over to `pdbp` B)
							parent
							
								
									f4ed2d29f8
								
							
						
					
					
						commit
						61b3a72b7c
					
				| 
						 | 
				
			
			@ -37,6 +37,7 @@ from typing import (
 | 
			
		|||
)
 | 
			
		||||
from types import FrameType
 | 
			
		||||
 | 
			
		||||
import pdbp
 | 
			
		||||
import tractor
 | 
			
		||||
import trio
 | 
			
		||||
from trio_typing import TaskStatus
 | 
			
		||||
| 
						 | 
				
			
			@ -54,15 +55,16 @@ from ._exceptions import (
 | 
			
		|||
from ._ipc import Channel
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    # wtf: only exported when installed in dev mode?
 | 
			
		||||
    import pdbpp
 | 
			
		||||
except ImportError:
 | 
			
		||||
    # pdbpp is installed in regular mode...it monkey patches stuff
 | 
			
		||||
    import pdb
 | 
			
		||||
    xpm = getattr(pdb, 'xpm', None)
 | 
			
		||||
    assert xpm, "pdbpp is not installed?"  # type: ignore
 | 
			
		||||
    pdbpp = pdb
 | 
			
		||||
# TODO: we can drop this now yah?
 | 
			
		||||
# try:
 | 
			
		||||
#     # wtf: only exported when installed in dev mode?
 | 
			
		||||
#     import pdbp
 | 
			
		||||
# except ImportError:
 | 
			
		||||
#     # pdbpp is installed in regular mode...it monkey patches stuff
 | 
			
		||||
#     import pdb
 | 
			
		||||
#     xpm = getattr(pdb, 'xpm', None)
 | 
			
		||||
#     assert xpm, "pdbpp is not installed?"  # type: ignore
 | 
			
		||||
#     pdbpp = pdb
 | 
			
		||||
 | 
			
		||||
log = get_logger(__name__)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -154,22 +156,22 @@ class Lock:
 | 
			
		|||
            cls.repl = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TractorConfig(pdbpp.DefaultConfig):
 | 
			
		||||
class TractorConfig(pdbp.DefaultConfig):
 | 
			
		||||
    '''
 | 
			
		||||
    Custom ``pdbpp`` goodness.
 | 
			
		||||
    Custom ``pdbp`` goodness.
 | 
			
		||||
 | 
			
		||||
    '''
 | 
			
		||||
    # use_pygments = True
 | 
			
		||||
    # sticky_by_default = True
 | 
			
		||||
    sticky_by_default = True
 | 
			
		||||
    enable_hidden_frames = False
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MultiActorPdb(pdbpp.Pdb):
 | 
			
		||||
class MultiActorPdb(pdbp.Pdb):
 | 
			
		||||
    '''
 | 
			
		||||
    Add teardown hooks to the regular ``pdbpp.Pdb``.
 | 
			
		||||
    Add teardown hooks to the regular ``pdbp.Pdb``.
 | 
			
		||||
 | 
			
		||||
    '''
 | 
			
		||||
    # override the pdbpp config with our coolio one
 | 
			
		||||
    # override the pdbp config with our coolio one
 | 
			
		||||
    DefaultConfig = TractorConfig
 | 
			
		||||
 | 
			
		||||
    # def preloop(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -313,7 +315,7 @@ async def lock_tty_for_child(
 | 
			
		|||
) -> str:
 | 
			
		||||
    '''
 | 
			
		||||
    Lock the TTY in the root process of an actor tree in a new
 | 
			
		||||
    inter-actor-context-task such that the ``pdbpp`` debugger console
 | 
			
		||||
    inter-actor-context-task such that the ``pdbp`` debugger console
 | 
			
		||||
    can be mutex-allocated to the calling sub-actor for REPL control
 | 
			
		||||
    without interference by other processes / threads.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -433,7 +435,7 @@ async def wait_for_parent_stdin_hijack(
 | 
			
		|||
def mk_mpdb() -> tuple[MultiActorPdb, Callable]:
 | 
			
		||||
 | 
			
		||||
    pdb = MultiActorPdb()
 | 
			
		||||
    # signal.signal = pdbpp.hideframe(signal.signal)
 | 
			
		||||
    # signal.signal = pdbp.hideframe(signal.signal)
 | 
			
		||||
 | 
			
		||||
    Lock.shield_sigint()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -583,7 +585,7 @@ async def _breakpoint(
 | 
			
		|||
    #     # frame = sys._getframe()
 | 
			
		||||
    #     # last_f = frame.f_back
 | 
			
		||||
    #     # last_f.f_globals['__tracebackhide__'] = True
 | 
			
		||||
    #     # signal.signal = pdbpp.hideframe(signal.signal)
 | 
			
		||||
    #     # signal.signal = pdbp.hideframe(signal.signal)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def shield_sigint_handler(
 | 
			
		||||
| 
						 | 
				
			
			@ -743,7 +745,7 @@ def shield_sigint_handler(
 | 
			
		|||
        # https://github.com/goodboy/tractor/issues/130#issuecomment-663752040
 | 
			
		||||
        # https://github.com/prompt-toolkit/python-prompt-toolkit/blob/c2c6af8a0308f9e5d7c0e28cb8a02963fe0ce07a/prompt_toolkit/patch_stdout.py
 | 
			
		||||
 | 
			
		||||
        # XXX: lol, see ``pdbpp`` issue:
 | 
			
		||||
        # XXX LEGACY: lol, see ``pdbpp`` issue:
 | 
			
		||||
        # https://github.com/pdbpp/pdbpp/issues/496
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -798,7 +800,7 @@ def _post_mortem(
 | 
			
		|||
    # https://github.com/pdbpp/pdbpp/issues/480
 | 
			
		||||
    # TODO: help with a 3.10+ major release if/when it arrives.
 | 
			
		||||
 | 
			
		||||
    pdbpp.xpm(Pdb=lambda: pdb)
 | 
			
		||||
    pdbp.xpm(Pdb=lambda: pdb)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
post_mortem = partial(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue