Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions src/scippnexus/nxtransformations.py
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,19 @@ def _locate_depends_on_target(
return res, posixpath.dirname(target_path)


def _target_name(parent: Field | Group, name: str | None = None) -> str:
name = name or 'depends_on'
if isinstance(parent, Group) and name in parent:
target = parent[name][...]
Comment on lines +310 to +311
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor optimisation, probably irrelevant:

Suggested change
if isinstance(parent, Group) and name in parent:
target = parent[name][...]
if isinstance(parent, Group) and (target := ds.get(name)) is not None:
target = ds[...]

if isinstance(target, DependsOn):
return target.absolute_path()
# FIXME there is probably something more intelligent to do here
raise ValueError("Unexpected target resolution")
return parent.attrs[name]


def parse_depends_on_chain(
parent: Field | Group, depends_on: DependsOn
parent: Field | Group, depends_on: DependsOn
) -> TransformationChain | None:
"""Follow a depends_on chain and return the transformations."""
chain = TransformationChain(depends_on.parent, depends_on.value)
Expand All @@ -319,7 +330,7 @@ def parse_depends_on_chain(
transform, base = _locate_depends_on_target(
file, depends_on, parent.definitions
)
depends_on = DependsOn(parent=base, value=transform.attrs['depends_on'])
depends_on = DependsOn(parent=base, value=_target_name(transform))
chain.transformations[transform.name] = transform[()]
if depends_on.absolute_path() in visited:
raise ValueError(
Expand Down