Skip to content

Commit 0e460b0

Browse files
committed
Store opts unique
Without the deep copy all opts were added to the origin. E.g causing Lambas to be run on each "entity" instead of just the selected child.
1 parent f42d436 commit 0e460b0

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

src/pyff/resource.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,10 @@ def _replace(self, r: Resource) -> None:
339339
raise ValueError("Resource {} not present - use add_child".format(r.url))
340340

341341
def add_child(self, url: str, opts: ResourceOpts) -> Resource:
342+
"""
343+
Spent 3 man days. Make sure to make a deep copy of opts.
344+
345+
"""
342346
r = Resource(url, opts)
343347
if r in self.children:
344348
log.debug(f'\n\n{self}:\nURL {url}\nReplacing child {r}')

src/pyff/samlmd.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ def _extra_md(_t, resource_opts, **kwargs):
209209
if md_source is not None:
210210
location = md_source.attrib.get('src')
211211
if location is not None:
212-
child_opts = resource.opts.copy(update={'alias': entityID})
212+
child_opts = resource.opts.model_copy(update={'alias': entityID}, deep=True)
213213
r = resource.add_child(location, child_opts)
214214
kwargs = {
215215
'entityID': entityID,
@@ -311,7 +311,7 @@ def parse(self, resource: Resource, content: str) -> EidasMDParserInfo:
311311
info.scheme_territory, location, fp, args.get('country_code')
312312
)
313313
)
314-
child_opts = resource.opts.copy(update={'alias': None})
314+
child_opts = resource.opts.model_copy(update={'alias': None}, deep=True)
315315
child_opts.verify = fp
316316
r = resource.add_child(location, child_opts)
317317

0 commit comments

Comments
 (0)