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
.