/ mlflow / entities / trace_state.py
trace_state.py
 1  from enum import Enum
 2  
 3  from opentelemetry import trace as trace_api
 4  
 5  from mlflow.protos import service_pb2 as pb
 6  
 7  
 8  class TraceState(str, Enum):
 9      """Enum representing the state of a trace.
10  
11      - ``STATE_UNSPECIFIED``: Unspecified trace state.
12      - ``OK``: Trace successfully completed.
13      - ``ERROR``: Trace encountered an error.
14      - ``IN_PROGRESS``: Trace is currently in progress.
15      """
16  
17      STATE_UNSPECIFIED = "STATE_UNSPECIFIED"
18      OK = "OK"
19      ERROR = "ERROR"
20      IN_PROGRESS = "IN_PROGRESS"
21  
22      def __str__(self):
23          return self.value
24  
25      def to_proto(self):
26          return pb.TraceInfoV3.State.Value(self)
27  
28      @classmethod
29      def from_proto(cls, proto: int) -> "TraceState":
30          return TraceState(pb.TraceInfoV3.State.Name(proto))
31  
32      @staticmethod
33      def from_otel_status(otel_status: trace_api.Status):
34          """Convert OpenTelemetry status code to MLflow TraceState."""
35          return _OTEL_STATUS_CODE_TO_MLFLOW[otel_status.status_code]
36  
37  
38  _OTEL_STATUS_CODE_TO_MLFLOW = {
39      trace_api.StatusCode.OK: TraceState.OK,
40      trace_api.StatusCode.ERROR: TraceState.ERROR,
41      trace_api.StatusCode.UNSET: TraceState.STATE_UNSPECIFIED,
42  }