Skip to content

Commit ca39198

Browse files
committed
Cleaner way of mapping samples in grid frequency
Signed-off-by: Simon Völcker <simon.voelcker@frequenz.com>
1 parent 58aea21 commit ca39198

1 file changed

Lines changed: 8 additions & 14 deletions

File tree

src/frequenz/sdk/timeseries/_grid_frequency.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,12 @@ def source(self) -> Component:
8383
return self._source_component
8484

8585
@staticmethod
86-
def _map_frequency_samples(
87-
receiver: Receiver[Sample[Quantity]],
88-
) -> Receiver[Sample[Frequency]]:
86+
def _map_frequency_sample(sample: Sample[Quantity]) -> Sample[Frequency]:
8987
"""Handle NaN values and map sample type to Frequency."""
90-
return receiver.map(
91-
lambda sample: (
92-
Sample[Frequency](sample.timestamp, None)
93-
if sample.value is None or sample.value.isnan()
94-
else Sample(
95-
sample.timestamp, Frequency.from_hertz(sample.value.base_value)
96-
)
97-
)
98-
)
88+
if sample.value is None or sample.value.isnan():
89+
return Sample[Frequency](sample.timestamp, None)
90+
91+
return Sample(sample.timestamp, Frequency.from_hertz(sample.value.base_value))
9992

10093
def new_receiver(self) -> Receiver[Sample[Frequency]]:
10194
"""Create a receiver for grid frequency.
@@ -112,7 +105,8 @@ def new_receiver(self) -> Receiver[Sample[Frequency]]:
112105
self._send_request(self._forwarding_channel.new_sender())
113106
)
114107

115-
return self._map_frequency_samples(self._forwarding_channel.new_receiver())
108+
receiver = self._forwarding_channel.new_receiver()
109+
return receiver.map(self._map_frequency_sample)
116110

117111
async def subscribe(self) -> Receiver[Sample[Frequency]]:
118112
"""Create a receiver for grid frequency."""
@@ -128,7 +122,7 @@ async def subscribe(self) -> Receiver[Sample[Frequency]]:
128122
)
129123
await self._request_sender.send(component_metric_request)
130124
receiver = await telem_stream_receiver.receive()
131-
return self._map_frequency_samples(receiver)
125+
return receiver.map(self._map_frequency_sample)
132126

133127
async def _send_request(self, forwarding_sender: Sender[Sample[Quantity]]) -> None:
134128
"""Send the request for grid frequency."""

0 commit comments

Comments
 (0)