LSSTApplications
20.0.0
LSSTDataManagementBasePackage
stack
1a1d771
Linux64
base
20.0.0
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 your
50
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
def
__init__
(self, modname):
72
import
sys
73
self.__dict__[
"_dict"
] = sys.modules[modname].__dict__
74
self.
_modname
= modname
75
76
def
__getattr__
(self, what):
77
"""Return the value of the variable "what" in ``self.__modname``
78
if set, else False"""
79
return
self._dict.get(what,
False
)
80
81
def
__setattr__
(self, what, value):
82
"""Set the value of the variable "what" in ``self.__modname``
83
to value"""
84
self._dict[what] = value
85
86
87
getInfo = Info
88
89
90
def
getDebugFrame
(debugDisplay, name):
91
"""
92
Attempt to extract a frame for displaying a product called ``name``
93
from the ```debugDisplay`` variable.
94
95
Per the above, an instance of `Info` can return an arbitrary object
96
(or nothing) as its ``display`` attribute. It is convenient -- though not
97
required -- that it be a dictionary mapping data products to frame
98
numbers, as shown in the `lsstDebug.Info` example. Given such a dictionary,
99
this function extracts and returns the appropriate frame number. If
100
``debugDisplay`` is not a collection, or if ``name`` is not found within
101
it, we return `None`.
102
103
Parameters
104
----------
105
debugDisplay : `object`
106
The contents of lsstDebug.Info(__name__).display.
107
name : `str`
108
The name of the data product to be displayed.
109
110
Returns
111
-------
112
frame : `int`
113
A frame number, or `None`.
114
"""
115
if
hasattr(debugDisplay,
"__contains__"
)
and
name
in
debugDisplay:
116
return
debugDisplay[name]
117
else
:
118
return
None
lsstDebug.getDebugFrame
def getDebugFrame(debugDisplay, name)
Definition:
lsstDebug.py:90
lsstDebug.Info._modname
_modname
Definition:
lsstDebug.py:74
lsstDebug.Info.__setattr__
def __setattr__(self, what, value)
Definition:
lsstDebug.py:81
lsstDebug.Info
Definition:
lsstDebug.py:28
lsstDebug.Info.__getattr__
def __getattr__(self, what)
Definition:
lsstDebug.py:76
lsstDebug.Info.__init__
def __init__(self, modname)
Definition:
lsstDebug.py:71
Generated on Wed Jun 24 2020 18:10:06 for LSSTApplications by
1.8.18