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 101 of file GeneratorSettingsSemantics.py.

Constructor & Destructor Documentation

◆ __init__()

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

Definition at line 109 of file GeneratorSettingsSemantics.py.

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

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

◆ _resolve()

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

Definition at line 170 of file GeneratorSettingsSemantics.py.

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

◆ data()

python.GeneratorSettingsSemantics.GeneratorSettingsValue.data ( self)

Definition at line 138 of file GeneratorSettingsSemantics.py.

138 def data(self):
139 return self.resolve()
140
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11

◆ 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 141 of file GeneratorSettingsSemantics.py.

141 def resolve(self, report_context=None, emit_report=False):
142 """
143 Resolve all layers to the final settings list.
144
145 If emit_report is True, print duplicate/conflict warnings once using
146 report_context (or a layer-provided report_context if available).
147 """
148 settings, report = self._resolve()
149
150 if emit_report:
151 for settings_layer in _ordered_layers(self.layers):
152 if settings_layer.report_context:
153 report_context = settings_layer.report_context
154 break
155
156 if report_context and report_context not in self._reported_contexts:
157 _log_report(report_context, report)
158 self._reported_contexts.add(report_context)
159
160 return settings
161
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 111 of file GeneratorSettingsSemantics.py.

◆ layers

python.GeneratorSettingsSemantics.GeneratorSettingsValue.layers = []

Definition at line 110 of file GeneratorSettingsSemantics.py.


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