Assorted debugging facilities.
Project description
Assorted debugging facilities.
Latest release 20241005:
- New log_via_print(msg, *args[, file=stdout]) function to use cs.upd.print as a logging call.
- @trace: new $CS_DEBUG_TRACE envvar which may be "print" or "warning" or "X".
- New @abrk decorator to intercept AssertionError, NameError and RuntimeError and call breakpoint.
If the environment variable $CS_DEBUG_BUILTINS
is set to a comma
separated list of names then the builtins
module will be monkey
patched with those names, enabling trite debug use of those names
anywhere in the code provided this module has been imported somewhere.
The allowed names are the list cs.debug.__all__
and include:
X
:cs.x.X
abrk
: a decorator to callbreakpoint(0
in anAssertionError
pformat
:pprint.pformat
pprint
:pprint.pprint
print
:cs.upd.print
r
:cs.lex.r
redirect_stdout
:contextlib.redirect_stdout
s
:cs.lex.s
stack_dump
: dump currentThread
's call stackthread_dump
dump the activeThread
s with their call stackstrace
: the@trace
decorator$CS_DEBUG_BUILTINS
can also be set to"1"
to install all of__all__
in the builtins.
abrk(*da, **dkw)
A decorator to intercept certain exceptions
(by default AssertionError
, NameError
, RuntimeError
)
and call breakpoint()
.
The breakpoint frame contains:
func
: the wrapper functionfunc_a
,func_kw
: the function positional and keyword arguments
stack_dump(stack=None, limit=None, logger=None, log_level=None)
Dump a stack trace to a logger.
Parameters:
stack
: a stack list as returned bytraceback.extract_stack
. If missing orNone
, use the result oftraceback.extract_stack()
.limit
: a limit to the number of stack entries to dump. If missing orNone
, dump all entries.logger
: alogger.Logger
ducktype or the name of a logger. If missing orNone
, obtain a logger fromlogging.getLogger()
.log_level
: the logging level for the dump. If missing orNone
, usecs.logutils.loginfo.level
.
thread_dump(Ts=None, fp=None)
Write thread identifiers and stack traces to the file fp
.
Parameters:
Ts
: theThread
s to dump; if unspecified usethreading.enumerate()
.fp
: the file to which to write; if unspecified usesys.stderr
.
Class TimingOutLock
A Lock
replacement which times out, used for locating deadlock points.
trace(*da, **dkw)
Decorator to report the call and return of a function.
Decorator parameters:
call
: trace the call, defaultTrue
retval
: trace the return, defaultFalse
exception
: trace raised exceptions, defaultTrue
use_pformat
: present the return value usingpformat
instead ofrepr
, defaultFalse
with_caller
: include the caller if this function, defaultFalse
with_pfx
: include the currentPfx
prefix, defaultFalse
Release Log
Release 20241005:
- New log_via_print(msg, *args[, file=stdout]) function to use cs.upd.print as a logging call.
- @trace: new $CS_DEBUG_TRACE envvar which may be "print" or "warning" or "X".
- New @abrk decorator to intercept AssertionError, NameError and RuntimeError and call breakpoint.
Release 20240630: Assorted updates.
Release 20240519: trace_caller: access frame.name instead of frame.funcname.
Release 20240423:
- Support "import *" by populating all with X, r, s, TimingOutLock, thread_dump, stack_dump, trace.
- @trace: include the elapsed time on the return/exception log message.
Release 20230613.1: Bugfix builtins monkey patch.
Release 20230613: Honour $CS_DEBUG_BUILTINS envvar to monkey patch the builtins module, constraints via a white list.
Release 20230610:
- DebuggingRLock fixes.
- Move @trace from cs.py.func to cs.debug.
- Drop Lock and RLock alias factories - importers should just use the debugging lock classes directly.
- Rename threading.Thread to threading_Thread.
- Simplify the debugging lock classes.
Release 20221118: stack_dump: cope when cs.logutils.setup_logging not run yet.
Release 20211208: @trace moved to cs.pyfunc, other minor changes.
Release 20200318: Remove use of cs.obj.O, universally supplanted by types.SimpleNamespace.
Release 20181231:
- New TimingOutLock for locating deadlock points, grew from debugging cs.vt.index.
- Other minor changes.
Release 20171231:
- Update imports for recentchanges.
- New context manager TraceSuite to trace start and end of a code suite.
Release 20160918: selftest(): fix parameter ordering to match unittest.
Release 20160828: Update metadata with "install_requires" instead of "requires".
Release 20160827:
- New openfiles() to return selected pathnames of open files via lsof(8).
- New selftest() to invoke unittests with benefits.
- DebugShell, a cmd.Cmd subclass for debugging - current use case calls this with self.dict in a test case tearDwon.
- debug_object_shell: convenience wrapper for DebugShell to call it on an object's attributes.
Release 20150116: PyPI prep.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cs.debug-20241005-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2368a70eaca4d133c1a91d7f9c73e7900007c69675d51335d5a848ff2de5e4b4 |
|
MD5 | 13b337103bba467ff4c75b6a69363838 |
|
BLAKE2b-256 | 3f21694f2961d9743cd055899a7957142f16936fac39c2e9c4261443dadf8e98 |