Source code for switchyard.lib.debugging

# global: use in any timer callbacks
# to decide whether to handle the timer or not.
# if we're in the debugger, just drop it.

from functools import wraps
import pdb

in_debugger = False
def disable_timer():
    global in_debugger
    in_debugger = True


# decorate the "real" debugger entrypoint by
# disabling any SIGALRM invocations -- just ignore
# them if we're going into the debugger
def setup_debugger(f):
    @wraps(f)
    def wrapper(*args, **kwargs):
        disable_timer()
        return f(*args, **kwargs)
    return wrapper

@setup_debugger
[docs]def debugger(): '''Invoke the interactive debugger. Can be used anywhere within a Switchyard program.''' pdb.Pdb(skip=['switchyard.lib.debugging']).set_trace()