bluesky/event-model

ComposeStreamBundle.compose_stream_datum: `AttributeError: 'dict' object has no attribute 'compose_stream_datum'`

Closed this issue · 1 comments

Calling ComposeStreamBundle.compose_stream_datum with indices returns AttributeError: 'dict' object has no attribute 'compose_stream_datum'

Expected Behavior

I expect to be able to call each of the bundles and yield StreamDatum

Current Behavior

Method crashes with AttributeError: 'dict' object has no attribute 'compose_stream_datum'.

One thing I might be doing differently is that as per the deprecation notice of compose_stream_resource I am using the class variant.

Possible Solution

Not sure

Steps to Reproduce (for bugs)

this pull request and test_streaming_plan.py
or:
`from pathlib import Path
from typing import Iterator
from event_model import (
ComposeStreamResource,
ComposeStreamResourceBundle,
StreamDatum,
StreamRange,
)

def main():
bundler_composer = ComposeStreamResource()

path: Path = Path("root")
bundle: ComposeStreamResourceBundle = bundler_composer(
    spec="test",
    root="root",
    resource_path=str(path),
    data_key="name",
    resource_kwargs={
        "path": str(path.as_posix()),
        "multiplier": 1,
        "timestamps": "/entry/instrument/NDAttributes/NDArrayTimeStamp",
    },
)
indices_range = StreamRange(start=0, stop=1)

def compose(b: ComposeStreamResourceBundle):
    yield b.compose_stream_datum(indices_range)

iterator: Iterator[StreamDatum] = [compose(b) for b in [bundle]]
print(iterator)

if name == "main":
main()
`

Context

Trying to set up a simulated h5py writer for ophyd-async issue bluesky/ophyd-async#131

Your Environment

python 3.9

resolved: compose... for d in datasets creates an array of 2 composed, while the theoretically equivalent for d in datasets: bundle = compose ... \n bundles += bundle creates an array 4 items, decomposing the bundle