ATLAS Offline Software
Loading...
Searching...
No Matches
python.GeneratorSettingsSemantics.GeneratorSettingsValue Class Reference
Collaboration diagram for python.GeneratorSettingsSemantics.GeneratorSettingsValue:

Public Member Functions

 __init__ (self, layers=None)
 data (self)
 resolve (self, report_context=None, emit_report=False)
 __str__ (self)

Public Attributes

list layers = []

Protected Member Functions

 _resolve (self)

Protected Attributes

 _reported_contexts = set()

Detailed Description

Stored property value used by GeneratorSettingsSemantics.

It keeps the unresolved layers rather than a pre-merged list so that
CA merges remain associative: base.merge(user) and user.merge(base) 
yield the same result.

Definition at line 103 of file GeneratorSettingsSemantics.py.

Constructor & Destructor Documentation

◆ __init__()

python.GeneratorSettingsSemantics.GeneratorSettingsValue.__init__ ( self,
layers = None )

Definition at line 111 of file GeneratorSettingsSemantics.py.

111 def __init__(self, layers=None):
112 self.layers = []
113 self._reported_contexts = set()
114 seen = set()
115
116 for layer in layers or ():
117 if not isinstance(layer, GeneratorSettingsLayer):
118 layer_type = type(layer).__name__
119 raise TypeError(
120 f"GeneratorSettingsValue layers must be "
121 f"GeneratorSettingsLayer instances, got {layer_type}"
122 )
123
124 # Deduplicate identical layers explicitly instead of relying on
125 # object identity. This is what makes repeated symmetric CA merges
126 # yield the same result.
127 key = (
128 layer.source,
129 layer.values,
130 layer.precedence,
131 layer.separators,
132 layer.keep,
133 layer.report_context,
134 )
135 if key not in seen:
136 self.layers.append(layer)
137 seen.add(key)
138
STL class.

Member Function Documentation

◆ __str__()

python.GeneratorSettingsSemantics.GeneratorSettingsValue.__str__ ( self)
Return the resolved list as a string.
ComponentAccumulator.gatherProps() converts stored property values
to strings before handing them to Gaudi.

Definition at line 164 of file GeneratorSettingsSemantics.py.

164 def __str__(self):
165 """
166 Return the resolved list as a string.
167 ComponentAccumulator.gatherProps() converts stored property values
168 to strings before handing them to Gaudi.
169 """
170 return str(self.resolve(emit_report=True))
171

◆ _resolve()

python.GeneratorSettingsSemantics.GeneratorSettingsValue._resolve ( self)
protected
Return the final command list plus the duplicate/conflict report.

Definition at line 172 of file GeneratorSettingsSemantics.py.

172 def _resolve(self):
173 """Return the final command list plus the duplicate/conflict report."""
174 layers = _ordered_layers(self.layers)
175 separators = layers[0].separators if layers else ("=",)
176 keep = layers[0].keep if layers else GeneratorSettingsKeep.LAST
177 precedences_seen = {}
178 for layer in layers:
179 if (
180 layer.separators == separators
181 and layer.keep == keep
182 ):
183 if layer.precedence in precedences_seen:
184 previous_layer = precedences_seen[layer.precedence]
185 raise ValueError(
186 f"cannot merge generator settings with duplicate "
187 f"precedence {layer.precedence.name}: "
188 f"{previous_layer.source} and {layer.source}"
189 )
190 precedences_seen[layer.precedence] = layer
191 continue
192
193 summary = ", ".join(
194 f"{entry.source}: separators={entry.separators}, "
195 f"keep={entry.keep.value}"
196 for entry in layers
197 )
198 raise ValueError(
199 f"cannot merge generator settings with different parsing "
200 f"settings: "
201 f"{summary}"
202 )
203
204 records = _build_records(layers, separators)
205 kept_records, removed_records = _deduplicate_records(records, keep)
206 return (
207 [record["original_setting"] for record in kept_records],
208 _build_report(records, kept_records, removed_records),
209 )
210
211

◆ data()

python.GeneratorSettingsSemantics.GeneratorSettingsValue.data ( self)

Definition at line 140 of file GeneratorSettingsSemantics.py.

140 def data(self):
141 return self.resolve()
142

◆ resolve()

python.GeneratorSettingsSemantics.GeneratorSettingsValue.resolve ( self,
report_context = None,
emit_report = False )
Resolve all layers to the final settings list.

If emit_report is True, print duplicate/conflict warnings once using
report_context (or a layer-provided report_context if available).

Definition at line 143 of file GeneratorSettingsSemantics.py.

143 def resolve(self, report_context=None, emit_report=False):
144 """
145 Resolve all layers to the final settings list.
146
147 If emit_report is True, print duplicate/conflict warnings once using
148 report_context (or a layer-provided report_context if available).
149 """
150 settings, report = self._resolve()
151
152 if emit_report:
153 for settings_layer in _ordered_layers(self.layers):
154 if settings_layer.report_context:
155 report_context = settings_layer.report_context
156 break
157
158 if report_context and report_context not in self._reported_contexts:
159 _log_report(report_context, report)
160 self._reported_contexts.add(report_context)
161
162 return settings
163
bool add(const std::string &hname, TKey *tobj)
Definition fastadd.cxx:55

Member Data Documentation

◆ _reported_contexts

python.GeneratorSettingsSemantics.GeneratorSettingsValue._reported_contexts = set()
protected

Definition at line 113 of file GeneratorSettingsSemantics.py.

◆ layers

python.GeneratorSettingsSemantics.GeneratorSettingsValue.layers = []

Definition at line 112 of file GeneratorSettingsSemantics.py.


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