lsstDebug

Contributing

lsstDebug is developed at https://github.com/lsst/base. You can find Jira issues for this module under the base component.

Using lsstDebug to control debugging output

The class lsstDebug` can be used to turn on debugging output in a non-intrusive way. For example, the variable lsstDebug.Info("lsst.meas.astrom.astrom").debug is used to control debugging output from the lsst.meas.astrom.astrom module.

You may interrogate lsstDebug for any string in sys.modules, i.e. for the __name__ of any package that has been imported; for example, if the Robert.Hugh.Lupton package is loaded then lsstDebug.Info("Robert.Hugh.Lupton").parameter will return False for any named parameter that has not already been set to True elsewhere.

The convention is that the name (lsst.meas.astrom.astrom) is the __name__ of the module, so the source code will typically look something like:

import lsstDebug

print(lsstDebug.Info(__name__).display)

which will print False unless lsstDebug.Info(\__name__).display has somehow been set to True.

Why is this interesting? Because you can replace lsstDebug.Info with your own version, e.g. if you put

import lsstDebug

def DebugInfo(name):
    di = lsstDebug.getInfo(name)  # N.b. lsstDebug.Info(name) would call us recursively
    if name == "foo":
        di.display = True

    return di


lsstDebug.Info = DebugInfo

into a file debug.py available in the PYTHONPATH and

import lsstDebug

print("display is", lsstDebug.Info(__name__).display)

into foo.py, then

$ python -c "import foo"
display is False

but

$ python -c "import debug; import foo"
display is True

The pipetask run command line interface supports a flag --debug to import debug.py from your PYTHONPATH.

Python API reference

lsstDebug Module

Functions

getDebugFrame(debugDisplay, name)

Attempt to extract a frame for displaying a product called name from the debugDisplay variable.

Classes

Info(modname)

An object cognisant of debugging parameters appropriate for module modname.

Class Inheritance Diagram

digraph inheritance2af626222c { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "Info" [URL="../../../py-api/lsstDebug.Info.html#lsstDebug.Info",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="An object cognisant of debugging parameters appropriate for module"]; }