DMSC Integration Testing

Last updated: September 25, 2026 08:04:50

Test: nexusfiles-scipp|beer|beer_read_monitor_data|beam_monitor_m3

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f85c9444080>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022387.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f85cbf31620>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:108: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f85c9492570>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fbcc43d1d00>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022307.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fbcc5ec5620>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:108: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fbcc571c530>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fa1fae20260>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022247.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fa1fb475620>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:108: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fa1fae23ec0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f3688632780>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022207.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f368b191620>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:108: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f368862be90>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fd994340740>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022207.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fd995b55620>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:108: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fd994e66630>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f885301ddf0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022197.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f885364d4e0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:108: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f885302ad80>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7ff1eb4da150>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022117.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7ff1ec3496c0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7ff1eb656870>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f6b0d139910>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022067.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f6b0dabd760>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f6b0d6060f0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fb18b0d7950>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022067.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fb18ba2d620>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fb18b15b170>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fd9d66483e0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022067.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fd9d70d1620>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fd9d67d4860>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f473c7c5a60>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022047.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f473d875580>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f473c9a0830>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f403dd71760>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022037.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f403ef89300>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f403df67d70>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fe2e70bb9e0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022037.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fe2e7b29300>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fe2e75a7200>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fe754db1cd0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022027.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fe75556d300>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fe754e1e300>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7efcc466a930>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022027.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7efcc4cc5300>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7efcc41d2ab0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f9e142a0110>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00022027.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f9e1552d300>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f9e147981d0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f52616efb30>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021977.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f5261f0d120>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f5261703440>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fcbacb1f530>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021913.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fcbad571120>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:108: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fcbaa83d7c0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f20e2fd1f10>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021903.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f20e3ea5120>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f20e3110bc0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fd3e260fce0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021903.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fd3e3229260>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fd3e2866c30>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f729cd66000>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021833.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f729e151260>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f729d923260>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fee009ece90>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021703.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fee01491260>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fee00c2d400>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f24529ed3d0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021563.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f245393d120>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f24530fbd10>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f7e18f2aba0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021513.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f7e196e1120>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f7e191e9af0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fa5976843e0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021413.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fa598481120>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fa5976840e0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fd195d8fe60>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021273.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fd196725260>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fd195dc2d50>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f83a4d20d70>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00021123.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f83a5b91120>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f83a51365a0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f9f5235b6b0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020983.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f9f52c11260>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f9f5254ae70>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f3948a58e00>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020913.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f3949bd5260>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f3948c15490>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f6556819190>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020893.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f6556fb5260>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f6556a05df0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f91f2c94e60>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020893.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f91f353d260>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f91f32efda0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f25b1a06990>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020893.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f25b26334c0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f25b1d1c740>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f6037cf1610>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020703.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f60389674c0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f6037ec7fb0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f65a9778950>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020563.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f65aa4574c0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f65a989b230>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fa6c97f4110>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020563.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fa6c9d8b4c0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fa6c98ea210>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f144d841f70>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020417.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f144e687380>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f144dd90560>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f7a2dfa23c0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020267.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f7a2e8253a0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f7a2de9bf80>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7fe9c46d62a0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020207.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7fe9c6e35300>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7fe9c38e9be0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f89e055be60>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020205.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f89e1375300>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f89ddd32510>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_component(
    location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
    nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7efe39328080>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020205.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7efe38e213a0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
    nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:99: in load_component
    with open_component_group(
/opt/miniforge/lib/python3.12/contextlib.py:137: in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:325: in open_component_group
    yield _unique_child_group(parent, nx_class, group_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:370: in _unique_child_group
    child = group[name]
            ^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7efe38484c80>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_component(
E               location: ess.reduce.nexus.types.NeXusComponentLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E               nx_class: ess.reduce.nexus.types.NeXusClass[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor],
E           ) -> ess.reduce.nexus.types.NeXusComponent[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f29a452ad80>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020205.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f29a40253a0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f29a362cec0>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError

View job log here


KeyError: 'beam_monitor_m3'
In provider ess.reduce.nexus.workflow.load_nexus_data(
    location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError
Full output
workflow = <sciline.pipeline.Pipeline object at 0x7f8536e40440>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_beer_999999_00020205.hdf')
monitor_name = 'beam_monitor_m3'
check_monitor_data = <function _check_monitor_data at 0x7f85377213a0>

    @pytest.mark.parametrize(
        "monitor_name", ["beam_monitor_m1", "beam_monitor_m2", "beam_monitor_m3"]
    )
    def test_beer_read_monitor_data(
        workflow: sciline.Pipeline,
        coda_nexus_file_path: Path,
        monitor_name: str,
        check_monitor_data: Callable,
    ) -> None:
        workflow[Filename[SampleRun]] = coda_nexus_file_path
        workflow[NeXusName[BeerMonitor]] = monitor_name
    
>       monitor = workflow.compute(RawMonitor[SampleRun, BeerMonitor])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/nexusfiles-scipp/beer/beer_load_nexus_test.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
    return self.get(tp, **kwargs).compute(reporter=reporter)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
    return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
    return self._dask_get(dsk, list(map(_to_dask_key, keys)))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/threaded.py:115: in get
    results = get_async(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:547: in get_async
    raise_exception(exc, tb)
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:351: in reraise
    raise exc
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/local.py:256: in execute_task
    result = task(data)
             ^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
    return self.func(*new_argspec)
           ^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/dask/utils.py:81: in apply
    return func(*args)
           ^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
    return self._func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:279: in load_nexus_data
    nexus.load_data(
.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:560: in load_data
    component = instrument[component_name]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scippnexus.base.Group object at 0x7f8536d2af00>, sel = 'beam_monitor_m3'

    def __getitem__(self, sel):
        """
        Get a child group or child dataset, a selection of child groups, or load and
        return the current group.
    
        Three cases are supported:
    
        - String name: The child group or child dataset of that name is returned.
        - Class such as ``NXdata`` or ``NXlog``: A dict containing all direct children
          with a matching ``NX_class`` attribute are returned. Also accepts a tuple of
          classes. ``Field`` selects all child fields, i.e., all datasets but not
          groups.
        - Scipp-style index: Load the specified slice of the current group, returning
          a :class:`scipp.DataArray` or :class:`scipp.DataGroup`.
    
        Parameters
        ----------
        sel:
            Child name, class, or index.
    
        Returns
        -------
        :
            Field, group, dict of fields, or loaded data.
        """
        if isinstance(sel, str):
            # We cannot get the child directly from the HDF5 group, since we need to
            # create the parent group, to ensure that fields get the correct properties
            # such as sizes and dtype.
            if '/' in sel:
                sel_path = PurePosixPath(sel)
                if sel_path.is_absolute():
                    return self.file[sel_path.relative_to('/').as_posix()]
                # If the path is a single name, we can directly access the child
                elif len(sel_path.parts) == 1:
                    return self[sel_path.as_posix()]
                else:
                    grp = sel_path.parts[0]
                    return self[grp][sel_path.relative_to(grp).as_posix()]
            elif sel == '..':
                return self.parent
>           child = self._children[sel]
                    ^^^^^^^^^^^^^^^^^^^
E           KeyError: 'beam_monitor_m3'
E           In provider ess.reduce.nexus.workflow.load_nexus_data(
E               location: ess.reduce.nexus.types.NeXusDataLocationSpec[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun],
E           ) -> ess.reduce.nexus.types.NeXusData[tests.nexusfiles-scipp.beer.beer_load_nexus_test.BeerMonitor, ess.reduce.nexus.types.SampleRun]

.tox/nexusfiles-scipp-beer/lib/python3.12/site-packages/scippnexus/base.py:370: KeyError