The Gaudi Framework  v41r0 (bdbe7744)
Loading...
Searching...
No Matches
GaudiKernel.PropertyProxy.PropertyProxy Class Reference
Inheritance diagram for GaudiKernel.PropertyProxy.PropertyProxy:

Public Member Functions

 __init__ (self, descr, docString=None, default=None)
 setDefault (self, value)
 getDefault (self)
 fullPropertyName (self, obj)
 __get__ (self, obj, type=None)
 __set__ (self, obj, value)
 __delete__ (self, obj)

Public Attributes

dict history = {}
 descr = descr
bool deprecated = False

Properties

 default = property(getDefault, setDefault)

Private Attributes

 __doc__ = docString
 __default = value

Detailed Description

Definition at line 89 of file PropertyProxy.py.

Constructor & Destructor Documentation

◆ __init__()

GaudiKernel.PropertyProxy.PropertyProxy.__init__ ( self,
descr,
docString = None,
default = None )

Definition at line 90 of file PropertyProxy.py.

90 def __init__(self, descr, docString=None, default=None):
91 self.history = {}
92 self.descr = descr
93 self.deprecated = False
94 if docString:
95 self.__doc__ = docString
96 if "[[deprecated]]" in docString:
97 self.deprecated = True
98 if default is not None:
99 self.default = default
100

Member Function Documentation

◆ __delete__()

GaudiKernel.PropertyProxy.PropertyProxy.__delete__ ( self,
obj )

Definition at line 186 of file PropertyProxy.py.

186 def __delete__(self, obj):
187 if obj in self.history:
188 del self.history[obj]
189 self.descr.__delete__(obj)
190
191

◆ __get__()

GaudiKernel.PropertyProxy.PropertyProxy.__get__ ( self,
obj,
type = None )

Definition at line 112 of file PropertyProxy.py.

112 def __get__(self, obj, type=None):
113 try:
114 return self.descr.__get__(obj, type)
115 except AttributeError:
116 # special case for builtin collections
117 # allow default to work with on +=, [], etc.
118 if isinstance(self.__default, (list, dict, set)):
119 self.descr.__set__(obj, self.__default.__class__(self.__default))
120 return self.descr.__get__(obj, type)
121 else:
122 # for non lists (or dicts) return a reference to the default
123 # return self.__default
124 raise
125

◆ __set__()

GaudiKernel.PropertyProxy.PropertyProxy.__set__ ( self,
obj,
value )

Definition at line 126 of file PropertyProxy.py.

126 def __set__(self, obj, value):
127 # check if deprecated
128 if self.deprecated and not obj._unpickling:
129 log.warning(
130 "Property %s is deprecated: %s",
131 self.fullPropertyName(obj),
132 self.__doc__,
133 )
134
135 # check value/property compatibility if possible
136 proptype, allowcompat = None, False
137 if hasattr(self, "default"):
138 proptype = type(self.default)
139 if self.descr.__name__ == "OutputLevel": # old-style compat for Btag
140 allowcompat = True
141 elif obj in self.history:
142 proptype = type(self.history[obj][0])
143 allowcompat = True
144
145 # check if type known; allow special initializer for typed instances
146 # Do not perform the check for PropertyReference, should be delayed until
147 # binding (if ever done)
148 if (
149 proptype
150 and not isinstance(None, proptype)
151 and not derives_from(value, "PropertyReference")
152 ):
153 try:
154 # check value itself
155 value = _isCompatible(proptype, value, self.descr.__name__)
156
157 # check element in case of list
158 if proptype == list:
159 try:
160 oldvec = self.descr.__get__(obj, type)
161 if oldvec:
162 tpo = type(oldvec[0])
163 for v in value:
164 _isCompatible(tpo, v, self.descr.__name__)
165 except AttributeError:
166 # value not yet set
167 pass
168 except ValueError as e:
169 if allowcompat:
170 log.error(
171 f"inconsistent value types for {obj.getName()}.{self.descr.__name__} ({e})"
172 )
173 else:
174 raise
175
176 # allow a property to be set if we're in non-default mode, or if it
177 # simply hasn't been set before
178 if not obj._isInSetDefaults() or obj not in self.history:
179 # by convention, 'None' for default is used to designate objects setting
180 if hasattr(self, "default") and self.default is None:
181 obj.__iadd__(value, self.descr) # to establish hierarchy
182 else:
183 self.descr.__set__(obj, value)
184 self.history.setdefault(obj, []).append(value)
185

◆ fullPropertyName()

GaudiKernel.PropertyProxy.PropertyProxy.fullPropertyName ( self,
obj )

Definition at line 109 of file PropertyProxy.py.

109 def fullPropertyName(self, obj):
110 return (obj.getJobOptName() or obj.getName()) + "." + self.descr.__name__
111

◆ getDefault()

GaudiKernel.PropertyProxy.PropertyProxy.getDefault ( self)

Definition at line 104 of file PropertyProxy.py.

104 def getDefault(self):
105 return self.__default
106

◆ setDefault()

GaudiKernel.PropertyProxy.PropertyProxy.setDefault ( self,
value )

Definition at line 101 of file PropertyProxy.py.

101 def setDefault(self, value):
102 self.__default = value
103

Member Data Documentation

◆ __default

GaudiKernel.PropertyProxy.PropertyProxy.__default = value
private

Definition at line 102 of file PropertyProxy.py.

◆ __doc__

GaudiKernel.PropertyProxy.PropertyProxy.__doc__ = docString
private

Definition at line 95 of file PropertyProxy.py.

◆ deprecated

bool GaudiKernel.PropertyProxy.PropertyProxy.deprecated = False

Definition at line 93 of file PropertyProxy.py.

◆ descr

GaudiKernel.PropertyProxy.PropertyProxy.descr = descr

Definition at line 92 of file PropertyProxy.py.

◆ history

dict GaudiKernel.PropertyProxy.PropertyProxy.history = {}

Definition at line 91 of file PropertyProxy.py.

Property Documentation

◆ default

GaudiKernel.PropertyProxy.PropertyProxy.default = property(getDefault, setDefault)
static

Definition at line 107 of file PropertyProxy.py.


The documentation for this class was generated from the following file: