"""Protocol definitions for Metrics messages."""from__future__importannotationsfromtypingimportOptionalfromih_muse.ih_museimportPyMetricDefinition,PyMetricPayload,PyMetricQuery
[docs]classMetricDefinition:"""Definition of a metric."""_metric_def:PyMetricDefinitiondef__init__(self,code:str,name:str,description:str)->None:"""Initialize MetricDefinition."""self._metric_def=PyMetricDefinition(code,name,description)
[docs]classMetricPayload:"""Definition of a metric payloadi."""_metric_payload:PyMetricPayloaddef__init__(self,time:int,element_id:int,metric_ids:list[int],values:list[Optional[float]],)->None:"""Initialize MetricPayload."""self._metric_payload=PyMetricPayload(time,element_id,metric_ids,values)
[docs]@classmethoddeffrom_py_metric_payload(cls:type[MetricPayload],py_metric_payload:PyMetricPayload)->MetricPayload:"""Create a MetricPayload from a PyMetricPayload. :param PyMetricPayload py_metric_payload: The PyMetricPayload to convert. :return: A corresponding MetricPayload instance. """returncls(time=py_metric_payload.time,element_id=py_metric_payload.element_id,metric_ids=py_metric_payload.metric_ids,values=py_metric_payload.values,)
@propertydeftime(self)->int:"""Retrieve the timestamp of the metric payload. :return: The time in milliseconds since epoch. """returnself._metric_payload.time@propertydefelement_id(self)->int:"""Retrieve the element ID associated with the metric payload. :return: The element ID as an integer. """returnself._metric_payload.element_id@propertydefmetric_ids(self)->list[int]:"""Retrieve the list of metric IDs. :return: A list of integers representing metric IDs. """returnself._metric_payload.metric_ids@propertydefvalues(self)->list[Optional[float]]:"""Retrieve the list of metric values. :return: A list of floats or None for each metric value. """returnself._metric_payload.values
[docs]classMetricQuery:"""Definition of a metric."""_metric_query:PyMetricQuerydef__init__(self,start_time:Optional[int]=None,end_time:Optional[int]=None,element_id:Optional[int]=None,parent_id:Optional[int]=None,metric_id:Optional[float]=None,)->None:"""Initialize MetricQuery."""self._metric_query=PyMetricQuery(start_time,end_time,element_id,parent_id,metric_id)