Loading [MathJax]/extensions/tex2jax.js
LSSTApplications  18.1.0
LSSTDataManagementBasePackage
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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.

It is always safe to interrogate lsstDebug; for example lsstDebug.Info("Robert.Hugh.Lupton").isBadPerson will return False.

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 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 command line task interface supports a flag –debug to import debug.py from your PYTHONPATH