ATLAS Offline Software
Loading...
Searching...
No Matches
python.AthConfigFlags.FlagAddress Class Reference
Collaboration diagram for python.AthConfigFlags.FlagAddress:

Public Member Functions

 __init__ (self, flag, name)
 __getattr__ (self, name)
 __setattr__ (self, name, value)
 __delattr__ (self, name)
 __cmp__ (self, other)
 __bool__ (self)
 __getitem__ (self, name)
 __setitem__ (self, name, value)
 __delitem__ (self, name)
 __contains__ (self, name)
 __iter__ (self)
 asdict (self)

Protected Member Functions

 _subflag_itr (self)

Protected Attributes

 _flags = flag
 _name = name

Static Private Attributes

tuple __slots__ = ('_flags', '_name')
 __eq__ = __cmp__
 __ne__ = __cmp__
 __lt__ = __cmp__
 __le__ = __cmp__
 __gt__ = __cmp__
 __ge__ = __cmp__

Detailed Description

Proxy for a flags category

Definition at line 123 of file AthConfigFlags.py.

Constructor & Destructor Documentation

◆ __init__()

python.AthConfigFlags.FlagAddress.__init__ ( self,
flag,
name )

Definition at line 128 of file AthConfigFlags.py.

128 def __init__(self, flag, name):
129 if type(flag) is not AthConfigFlags:
130 raise TypeError(f"cannot create FlagAddress for object {name} of type {type(flag)}")
131
132 self._flags = flag
133 self._name = name
134
135 # Handle renames
136 self._name = self._flags._renames.get(self._name, self._name)
137 if self._name is None:
138 raise AttributeError(f"accessing category '{name}' has been blocked by cloneAndReplace")
139

Member Function Documentation

◆ __bool__()

python.AthConfigFlags.FlagAddress.__bool__ ( self)

Definition at line 165 of file AthConfigFlags.py.

165 def __bool__(self):
166 raise TypeError( f"cannot convert flags category '{self._name}' to a boolean" )
167

◆ __cmp__()

python.AthConfigFlags.FlagAddress.__cmp__ ( self,
other )

Definition at line 156 of file AthConfigFlags.py.

156 def __cmp__(self, other):
157 raise TypeError( f"cannot compare flags category '{self._name}' to a value" )

◆ __contains__()

python.AthConfigFlags.FlagAddress.__contains__ ( self,
name )

Definition at line 183 of file AthConfigFlags.py.

183 def __contains__(self, name):
184 return hasattr(self, name)
185

◆ __delattr__()

python.AthConfigFlags.FlagAddress.__delattr__ ( self,
name )

Definition at line 153 of file AthConfigFlags.py.

153 def __delattr__(self, name):
154 del self[name]
155

◆ __delitem__()

python.AthConfigFlags.FlagAddress.__delitem__ ( self,
name )

Definition at line 180 of file AthConfigFlags.py.

180 def __delitem__(self, name):
181 del self._flags[f"{self._name}.{name}"]
182

◆ __getattr__()

python.AthConfigFlags.FlagAddress.__getattr__ ( self,
name )

Definition at line 140 of file AthConfigFlags.py.

140 def __getattr__(self, name):
141 return getattr(self._flags, f"{self._name}.{name}")
142

◆ __getitem__()

python.AthConfigFlags.FlagAddress.__getitem__ ( self,
name )

Definition at line 168 of file AthConfigFlags.py.

168 def __getitem__(self, name):
169 try:
170 return getattr(self, name)
171 except AttributeError as e:
172 raise KeyError(e) # convert exception to follow Python convention for [] operator
173

◆ __iter__()

python.AthConfigFlags.FlagAddress.__iter__ ( self)

Definition at line 186 of file AthConfigFlags.py.

186 def __iter__(self):
187 self._flags.loadAllDynamicFlags()
188 rmap = self._flags._renamed_map()
189 used = set()
190 prefix = self._name.rstrip('.') + '.'
191 for flag in self._flags._flagdict.keys():
192 if flag.startswith(prefix):
193 for newflag in rmap[flag]:
194 ntrim = len(self._name) + 1
195 n_dots_in = flag[:ntrim].count('.')
196 remaining = newflag.split('.')[n_dots_in]
197 if remaining not in used:
198 yield remaining
199 used.add(remaining)
200
STL class.
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:148

◆ __setattr__()

python.AthConfigFlags.FlagAddress.__setattr__ ( self,
name,
value )

Definition at line 143 of file AthConfigFlags.py.

143 def __setattr__( self, name, value ):
144 if name.startswith("_"):
145 return super().__setattr__(name, value)
146
147 merged = f"{self._name}.{name}"
148 if merged not in self._flags._flagdict: # flag is missing, try loading dynamic ones
149 self._flags._loadDynaFlags( merged )
150
151 return setattr(self._flags, merged, value)
152

◆ __setitem__()

python.AthConfigFlags.FlagAddress.__setitem__ ( self,
name,
value )

Definition at line 174 of file AthConfigFlags.py.

174 def __setitem__(self, name, value):
175 try:
176 setattr(self, name, value)
177 except AttributeError as e:
178 raise KeyError(e) # convert exception to follow Python convention for [] operator
179

◆ _subflag_itr()

python.AthConfigFlags.FlagAddress._subflag_itr ( self)
protected
Subflag iterator specialized for this address

Definition at line 201 of file AthConfigFlags.py.

201 def _subflag_itr(self):
202 """Subflag iterator specialized for this address"""
203 self._flags.loadAllDynamicFlags()
204 address = self._name
205 prefix = address.rstrip('.') + '.'
206 rename = self._flags._renamed_map()
207 for key in self._flags._flagdict.keys():
208 if key.startswith(prefix):
209 ntrim = len(address) + 1
210 remaining = key[ntrim:]
211 for r in rename[key]:
212 yield r, getattr(self, remaining)
213

◆ asdict()

python.AthConfigFlags.FlagAddress.asdict ( self)
Convert to a python dictionary

Recursively convert this flag and all subflags into a
structure of nested dictionaries. All dynamic flags are
resolved in the process.

The resulting data structure should be easy to serialize as
json or yaml.

Definition at line 214 of file AthConfigFlags.py.

214 def asdict(self):
215 """Convert to a python dictionary
216
217 Recursively convert this flag and all subflags into a
218 structure of nested dictionaries. All dynamic flags are
219 resolved in the process.
220
221 The resulting data structure should be easy to serialize as
222 json or yaml.
223 """
224 d = _asdict(self._subflag_itr())
225 for k in self._name.split('.'):
226 d = d[k]
227 return d
228
229
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:179

Member Data Documentation

◆ __eq__

python.AthConfigFlags.FlagAddress.__eq__ = __cmp__
staticprivate

Definition at line 158 of file AthConfigFlags.py.

◆ __ge__

python.AthConfigFlags.FlagAddress.__ge__ = __cmp__
staticprivate

Definition at line 163 of file AthConfigFlags.py.

◆ __gt__

python.AthConfigFlags.FlagAddress.__gt__ = __cmp__
staticprivate

Definition at line 162 of file AthConfigFlags.py.

◆ __le__

python.AthConfigFlags.FlagAddress.__le__ = __cmp__
staticprivate

Definition at line 161 of file AthConfigFlags.py.

◆ __lt__

python.AthConfigFlags.FlagAddress.__lt__ = __cmp__
staticprivate

Definition at line 160 of file AthConfigFlags.py.

◆ __ne__

python.AthConfigFlags.FlagAddress.__ne__ = __cmp__
staticprivate

Definition at line 159 of file AthConfigFlags.py.

◆ __slots__

tuple python.AthConfigFlags.FlagAddress.__slots__ = ('_flags', '_name')
staticprivate

Definition at line 126 of file AthConfigFlags.py.

◆ _flags

python.AthConfigFlags.FlagAddress._flags = flag
protected

Definition at line 132 of file AthConfigFlags.py.

◆ _name

python.AthConfigFlags.FlagAddress._name = name
protected

Definition at line 133 of file AthConfigFlags.py.


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