Source code for ralph.pipeline.run_metrics
"""Run metrics model for pipeline state."""
from __future__ import annotations
from pydantic import ConfigDict
from ralph.pydantic_compat import RalphBaseModel
_FROZEN = ConfigDict(frozen=True)
[docs]
class RunMetrics(RalphBaseModel):
"""Run-level execution metrics."""
model_config = _FROZEN
total_agent_calls: int = 0
total_continuations: int = 0
total_fallbacks: int = 0
total_retries: int = 0
[docs]
def with_retry_increment(self) -> RunMetrics:
"""Return a copy with total_retries incremented by 1."""
return RunMetrics(
total_agent_calls=self.total_agent_calls,
total_continuations=self.total_continuations,
total_fallbacks=self.total_fallbacks,
total_retries=self.total_retries + 1,
)
[docs]
def with_fallback_increment(self) -> RunMetrics:
"""Return a copy with total_fallbacks incremented by 1."""
return RunMetrics(
total_agent_calls=self.total_agent_calls,
total_continuations=self.total_continuations,
total_fallbacks=self.total_fallbacks + 1,
total_retries=self.total_retries,
)
[docs]
def with_continuation_increment(self) -> RunMetrics:
"""Return a copy with total_continuations incremented by 1."""
return RunMetrics(
total_agent_calls=self.total_agent_calls,
total_continuations=self.total_continuations + 1,
total_fallbacks=self.total_fallbacks,
total_retries=self.total_retries,
)