from typing import Any
from mlflow.entities._mlflow_object import _MlflowObject
from mlflow.entities.logged_model_output import LoggedModelOutput
from mlflow.protos.service_pb2 import RunOutputs as ProtoRunOutputs
[docs]class RunOutputs(_MlflowObject):
    """RunOutputs object."""
    def __init__(self, model_outputs: list[LoggedModelOutput]) -> None:
        self._model_outputs = model_outputs
    def __eq__(self, other: _MlflowObject) -> bool:
        if type(other) is type(self):
            return self.__dict__ == other.__dict__
        return False
    @property
    def model_outputs(self) -> list[LoggedModelOutput]:
        """Array of model outputs."""
        return self._model_outputs
[docs]    def to_proto(self):
        run_outputs = ProtoRunOutputs()
        run_outputs.model_outputs.extend(
            [model_output.to_proto() for model_output in self.model_outputs]
        )
        return run_outputs 
[docs]    def to_dictionary(self) -> dict[Any, Any]:
        return {
            "model_outputs": self.model_outputs,
        } 
[docs]    @classmethod
    def from_proto(cls, proto):
        model_outputs = [
            LoggedModelOutput.from_proto(model_output) for model_output in proto.model_outputs
        ]
        return cls(model_outputs)