LSSTApplications  17.0,17.0+1,17.0+10,17.0+11,17.0+14,17.0+6,17.0-1-g377950a+5,17.0.1,17.0.1-1-g0d345a5+2,17.0.1-1-g444bd44+2,17.0.1-1-g46e6382+2,17.0.1-1-g4d4fbc4,17.0.1-1-g703d48b+1,17.0.1-1-g9deacb5+2,17.0.1-1-gaef33af,17.0.1-1-gea52513+2,17.0.1-1-gf4e0155+2,17.0.1-1-gfc65f5f+2,17.0.1-1-gfc6fb1f,17.0.1-2-g0ce9737+2,17.0.1-2-g2a2f1b99+2,17.0.1-2-gd73ec07+2,17.0.1-2-gd9aa6e4+1,17.0.1-3-gb71a564+2,17.0.1-3-gc20ba7d+2,17.0.1-4-g41c8d5dc0+1,17.0.1-4-gfa71e81,17.0.1-5-gb7d1e01+1,17.0.1-5-gf0ac6446+2,17.0.1-7-g69836a1+1
LSSTDataManagementBasePackage
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