@@ -326,7 +326,7 @@ async def receive_single_sensor_data(
326326 end_time : datetime | None ,
327327 resampling_period : timedelta | None ,
328328 include_states : bool = False ,
329- ) -> AsyncIterator [MetricSample ]:
329+ ) -> Receiver [MetricSample ]:
330330 """Iterate over the data for a single sensor and metric.
331331
332332 Args:
@@ -338,10 +338,8 @@ async def receive_single_sensor_data(
338338 resampling_period: The period for resampling the data.
339339 include_states: Whether to include the state data.
340340
341- Yields:
342- A named tuple with the following fields:
343- * timestamp: The timestamp of the metric sample.
344- * value: The metric value.
341+ Returns:
342+ A receiver of `MetricSample`s.
345343 """
346344 receiver = await self ._receive_microgrid_sensors_data_batch (
347345 microgrid_sensors = [(microgrid_id , [sensor_id ])],
@@ -351,9 +349,7 @@ async def receive_single_sensor_data(
351349 resampling_period = resampling_period ,
352350 include_states = include_states ,
353351 )
354- async for batch in receiver :
355- for entry in batch :
356- yield entry
352+ return BatchUnrollReceiver (receiver )
357353
358354 # pylint: disable=too-many-arguments
359355 async def receive_microgrid_sensors_data (
@@ -365,7 +361,7 @@ async def receive_microgrid_sensors_data(
365361 end_time : datetime | None ,
366362 resampling_period : timedelta | None ,
367363 include_states : bool = False ,
368- ) -> AsyncIterator [MetricSample ]:
364+ ) -> Receiver [MetricSample ]:
369365 """Iterate over the data for multiple sensors in a microgrid.
370366
371367 Args:
@@ -377,13 +373,8 @@ async def receive_microgrid_sensors_data(
377373 resampling_period: The period for resampling the data.
378374 include_states: Whether to include the state data.
379375
380- Yields:
381- A named tuple with the following fields:
382- * microgrid_id: The microgrid ID.
383- * sensor_id: The sensor ID.
384- * metric: The metric name.
385- * timestamp: The timestamp of the metric sample.
386- * value: The metric value.
376+ Returns:
377+ A receiver of `MetricSample`s.
387378 """
388379 receiver = await self ._receive_microgrid_sensors_data_batch (
389380 microgrid_sensors = microgrid_sensors ,
@@ -393,9 +384,7 @@ async def receive_microgrid_sensors_data(
393384 resampling_period = resampling_period ,
394385 include_states = include_states ,
395386 )
396- async for batch in receiver :
397- for entry in batch :
398- yield entry
387+ return BatchUnrollReceiver (receiver )
399388
400389 # pylint: disable=too-many-arguments
401390 # pylint: disable=too-many-locals
@@ -408,7 +397,7 @@ async def _receive_microgrid_sensors_data_batch(
408397 end_time : datetime | None ,
409398 resampling_period : timedelta | None ,
410399 include_states : bool = False ,
411- ) -> AsyncIterator [SensorsDataBatch ]:
400+ ) -> Receiver [SensorsDataBatch ]:
412401 """Iterate over the sensor data batches in the stream using GrpcStreamBroadcaster.
413402
414403 Args:
@@ -420,7 +409,7 @@ async def _receive_microgrid_sensors_data_batch(
420409 include_states: Whether to include the state data.
421410
422411 Returns:
423- A SensorDataBatch object of microgrid sensors data.
412+ A GrpcStreamBroadcaster that can be used to receive sensor data batches .
424413 """
425414 stream_key = (
426415 tuple ((mid , tuple (sids )) for mid , sids in microgrid_sensors ),
0 commit comments