.. BACpypes debugging module .. module:: debugging Debugging ========= All applications use some kind of debugging. Globals ------- .. data:: _root This is a long line of text. Functions --------- .. function:: ModuleLogger(globs) :param globs: dictionary of module globals This function, posing as an instance creator, returns a ... Function Decorators ------------------- .. function:: function_debugging This function decorates a function with instances of buggers that are named by the function name combined with the module name. It is used like this:: @function_debugging def some_function(arg): if _debug: some_function._debug("some_function %r", arg) # rest of code This results in a bugger called **module.some_function** that can be accessed by that name when attaching log handlers. .. note:: This should really be called **debug_function** or something like that. Classes ------- .. class:: DebugContents This is a long line of text. .. attribute:: _debug_contents This is a long line of text. .. method:: debug_contents(indent=1, file=sys.stdout, _ids=None) :param indent: function to call :param file: regular arguments to pass to fn :param _ids: keyword arguments to pass to fn This is a long line of text. .. class:: LoggingFormatter(logging.Formatter) This is a long line of text. .. method:: __init__() This is a long line of text. .. method:: format(record) :param logging.LogRecord record: record to format This function converts the record into a string. It uses the regular formatting function that it overrides, then if any of the parameters inherit from :class:`DebugContents` (or duck typed by providing a **debug_contents** function) the message is extended with the deconstruction of those parameters. .. class:: Logging This is a long line of text. .. note:: Now that Python supports class decorators, this should really be a class decorator called **debug_class** or something like that.