Source code for rhesis.sdk.entities.behavior

from typing import Any, ClassVar, Dict, Optional

from rhesis.sdk.clients import APIClient, Endpoints, Methods
from rhesis.sdk.entities.base_collection import BaseCollection
from rhesis.sdk.entities.base_entity import BaseEntity

ENDPOINT = Endpoints.BEHAVIORS


[docs] class Behavior(BaseEntity): endpoint: ClassVar[Endpoints] = ENDPOINT name: Optional[str] = None description: Optional[str] = None id: Optional[str] = None
[docs] def get_metrics(self) -> Dict[str, Any]: """Get all metrics associated with this behavior. Returns: Dict containing the list of metrics for this behavior Raises: ValueError: If behavior ID is not set Example: >>> behavior = Behavior(id='behavior-123') >>> metrics = behavior.get_metrics() """ if self.id is None: raise ValueError("Behavior ID is required") client = APIClient() response = client.send_request( endpoint=self.endpoint, method=Methods.GET, url_params=f"{self.id}/metrics/", ) return response
[docs] def add_metric(self, metric_id: str) -> Dict[str, Any]: """Add a metric to this behavior. Args: metric_id: The ID of the metric to add to this behavior Returns: Dict containing the response from adding the metric Raises: ValueError: If behavior ID is not set Example: >>> behavior = Behavior(id='behavior-123') >>> response = behavior.add_metric('metric-456') """ if self.id is None: raise ValueError("Behavior ID is required") client = APIClient() response = client.send_request( endpoint=self.endpoint, method=Methods.POST, url_params=f"{self.id}/metrics/{metric_id}", ) return response
[docs] def remove_metric(self, metric_id: str) -> Dict[str, Any]: """Remove a metric from this behavior. Args: metric_id: The ID of the metric to remove from this behavior Returns: Dict containing the response from removing the metric Raises: ValueError: If behavior ID is not set Example: >>> behavior = Behavior(id='behavior-123') >>> response = behavior.remove_metric('metric-456') """ if self.id is None: raise ValueError("Behavior ID is required") client = APIClient() response = client.send_request( endpoint=self.endpoint, method=Methods.DELETE, url_params=f"{self.id}/metrics/{metric_id}", ) return response
[docs] class Behaviors(BaseCollection): endpoint = ENDPOINT entity_class = Behavior