Skip to content

Commit f3fa398

Browse files
committed
Improve documentation of ComponentMetricRequest
In particular clarify the use of the `namespace` attribute and its relationship with the channel name. Signed-off-by: Leandro Lucarella <[email protected]>
1 parent ff786cd commit f3fa398

File tree

1 file changed

+23
-16
lines changed

1 file changed

+23
-16
lines changed

src/frequenz/sdk/microgrid/_data_sourcing/_component_metric_request.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,28 @@
1313

1414
@dataclass
1515
class ComponentMetricRequest:
16-
"""A request object to start streaming a metric for a component."""
16+
"""A request to start streaming a component's metric.
17+
18+
Requesters use this class to specify which component's metric they want to subscribe
19+
to, including the component ID, metric ID, and an optional start time. The
20+
`namespace` is defined by the requester and influences the construction of the
21+
channel name via the `get_channel_name()` method.
22+
23+
The `namespace` allows differentiation of data streams for the same component and
24+
metric. For example, requesters can use different `namespace` values to subscribe to
25+
raw or resampled data streams separately. This ensures that each requester receives
26+
the appropriate type of data without interference. Requests with the same
27+
`namespace`, `component_id`, and `metric_id` will use the same channel, preventing
28+
unnecessary duplication of data streams.
29+
30+
The requester and provider must use the same channel name so that they can
31+
independently retrieve the same channel from the `ChannelRegistry`. This is
32+
achieved by using the `get_channel_name` method to generate the name on both sides
33+
based on parameters set by the requesters.
34+
"""
1735

1836
namespace: str
19-
"""The namespace that this request belongs to.
20-
21-
Metric requests with a shared namespace enable the reuse of channels within
22-
that namespace.
23-
24-
If for example, an actor making a multiple requests, uses the name of the
25-
actor as the namespace, then requests from the actor will get reused when
26-
possible.
27-
"""
37+
"""A client-defined identifier influencing the channel name."""
2838

2939
component_id: int
3040
"""The ID of the requested component."""
@@ -35,17 +45,14 @@ class ComponentMetricRequest:
3545
start_time: datetime | None
3646
"""The start time from which data is required.
3747
38-
When None, we will stream only live data.
48+
If None, only live data is streamed.
3949
"""
4050

4151
def get_channel_name(self) -> str:
42-
"""Return a channel name constructed from Self.
43-
44-
This channel name can be used by the sending side and receiving sides to
45-
identify the right channel from the ChannelRegistry.
52+
"""Constructs the channel name based on the request parameters.
4653
4754
Returns:
48-
A string denoting a channel name.
55+
A string representing the channel name.
4956
"""
5057
return (
5158
f"component_metric_request<namespace={self.namespace},"

0 commit comments

Comments
 (0)