lsst.base
g53246c7159+d801c9999e
LSST Data Management Base Package
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsstDebug.py
Go to the documentation of this file.
1
#
2
# LSST Data Management System
3
# Copyright 2008, 2009, 2010 LSST Corporation.
4
#
5
# This product includes software developed by the
6
# LSST Project (http://www.lsst.org/).
7
#
8
# This program is free software: you can redistribute it and/or modify
9
# it under the terms of the GNU General Public License as published by
10
# the Free Software Foundation, either version 3 of the License, or
11
# (at your option) any later version.
12
#
13
# This program is distributed in the hope that it will be useful,
14
# but WITHOUT ANY WARRANTY; without even the implied warranty of
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
# GNU General Public License for more details.
17
#
18
# You should have received a copy of the LSST License Statement and
19
# the GNU General Public License along with this program. If not,
20
# see <http://www.lsstcorp.org/LegalNotices/>.
21
#
22
__all__ = (
"Info"
,
"getDebugFrame"
)
23
24
25
#
26
# Define a class to configure debugging information
27
#
28
class
Info
:
29
"""An object cognisant of debugging parameters appropriate for module
30
``modname``.
31
32
Any request for a value will return False unless that value has
33
been set, either in the module or as an attribute of this object.
34
35
E.g.
36
37
.. code-block:: python
38
39
import lsstDebug
40
41
display = lsstDebug.Info(__name__).display
42
43
will set display to `False`, unless display has been set with
44
45
.. code-block:: python
46
47
lsstDebug.Info(__name__).display = True
48
49
Why is this interesting? Because you can replace `lsstDebug.Info` with
50
your own version, e.g.
51
52
.. code-block:: python
53
54
import lsstDebug
55
56
def DebugInfo(name):
57
# N.b. lsstDebug.Info(name) would call us recursively
58
di = lsstDebug.getInfo(name)
59
if name == "foo":
60
di.display = dict(repair=1, background=2, calibrate=3)
61
62
return di
63
64
lsstDebug.Info = DebugInfo
65
66
Parameters
67
----------
68
modname : `str`
69
Module name.
70
71
Raises
72
------
73
KeyError
74
Raised if ``modname`` is not loaded.
75
"""
76
def
__init__
(self, modname):
77
import
sys
78
self.__dict__[
"_dict"
] = sys.modules[modname].__dict__
79
self.
_modname
= modname
80
81
def
__getattr__
(self, what):
82
"""Return the value of the variable "what" in ``self.__modname``
83
if set, else False"""
84
return
self._dict.get(what,
False
)
85
86
def
__setattr__
(self, what, value):
87
"""Set the value of the variable "what" in ``self.__modname``
88
to value"""
89
self._dict[what] = value
90
91
92
getInfo = Info
93
94
95
def
getDebugFrame
(debugDisplay, name):
96
"""
97
Attempt to extract a frame for displaying a product called ``name``
98
from the ``debugDisplay`` variable.
99
100
Per the above, an instance of `Info` can return an arbitrary object
101
(or nothing) as its ``display`` attribute. It is convenient -- though not
102
required -- that it be a dictionary mapping data products to frame
103
numbers, as shown in the `lsstDebug.Info` example. Given such a dictionary,
104
this function extracts and returns the appropriate frame number. If
105
``debugDisplay`` is not a collection, or if ``name`` is not found within
106
it, we return `None`.
107
108
Parameters
109
----------
110
debugDisplay : `object`
111
The contents of ``lsstDebug.Info(__name__).display``.
112
name : `str`
113
The name of the data product to be displayed.
114
115
Returns
116
-------
117
frame : `int`
118
A frame number, or `None`.
119
"""
120
if
hasattr(debugDisplay,
"__contains__"
)
and
name
in
debugDisplay:
121
return
debugDisplay[name]
122
else
:
123
return
None
lsstDebug.Info
Definition
lsstDebug.py:28
lsstDebug.Info.__init__
__init__(self, modname)
Definition
lsstDebug.py:76
lsstDebug.Info.__getattr__
__getattr__(self, what)
Definition
lsstDebug.py:81
lsstDebug.Info._modname
_modname
Definition
lsstDebug.py:79
lsstDebug.Info.__setattr__
__setattr__(self, what, value)
Definition
lsstDebug.py:86
lsstDebug.getDebugFrame
getDebugFrame(debugDisplay, name)
Definition
lsstDebug.py:95
Generated on
for lsst.base by
1.17.0