LSSTApplications  10.0-2-g4f67435,11.0.rc2+1,11.0.rc2+12,11.0.rc2+3,11.0.rc2+4,11.0.rc2+5,11.0.rc2+6,11.0.rc2+7,11.0.rc2+8
LSSTDataManagementBasePackage
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 
23 #
24 # Define a class to configure debugging information
25 #
26 class Info(object):
27  """An object cognisant of debugging parameters appropriate for module "name"; any request for a value
28 will return False unless that value has been set, either in the module or as an attribute of this object.
29 
30 E.g.
31  import lsstDebug
32 
33  display = lsstDebug.Info(__name__).display
34 will set display to False, unless display has been set with
35  lsstDebug.Info(__name__).display = True
36 
37 Why is this interesting? Because you can replace lsstDebug.Info with your own version, e.g.
38 
39 import lsstDebug
40 
41 def DebugInfo(name):
42  di = lsstDebug.getInfo(name) # N.b. lsstDebug.Info(name) would call us recursively
43  if name == "foo":
44  di.display = True
45 
46  return di
47 
48 lsstDebug.Info = DebugInfo
49 """
50  def __init__(self, modname):
51  import sys
52  self.__dict__["_dict"] = sys.modules[modname].__dict__
53  self._modname = modname
54 
55  def __getattr__(self, what):
56  """Return the value of the variable "what" in self.__modname if set, else False"""
57  return self._dict.get(what, False)
58 
59  def __setattr__(self, what, value):
60  """Set the value of the variable "what" in self.__modname to value"""
61  self._dict[what] = value
62 
63 getInfo = Info