"""Public type re-exports for the evaluators subdomain."""
from datetime import datetime
from pydantic import BaseModel, ConfigDict, field_validator
from arize._generated.api_client.models.code_config import CodeConfig
from arize._generated.api_client.models.custom_code_config import (
CustomCodeConfig,
)
from arize._generated.api_client.models.data_granularity import DataGranularity
from arize._generated.api_client.models.evaluator import Evaluator
from arize._generated.api_client.models.evaluator_llm_config import (
EvaluatorLlmConfig,
)
from arize._generated.api_client.models.evaluator_type import EvaluatorType
# Imported under private aliases so our SDK wrappers can claim the public names.
from arize._generated.api_client.models.evaluator_version import (
EvaluatorVersion as _GenEvaluatorVersion,
)
from arize._generated.api_client.models.evaluator_version_code import (
EvaluatorVersionCode as _GenEvaluatorVersionCode,
)
from arize._generated.api_client.models.evaluator_version_code_create import (
EvaluatorVersionCodeCreate,
)
from arize._generated.api_client.models.evaluator_version_create import (
EvaluatorVersionCreate,
)
from arize._generated.api_client.models.evaluator_version_template import (
EvaluatorVersionTemplate,
)
from arize._generated.api_client.models.evaluator_version_template_create import (
EvaluatorVersionTemplateCreate,
)
from arize._generated.api_client.models.evaluators_list200_response import (
EvaluatorsList200Response,
)
from arize._generated.api_client.models.managed_code_config import (
ManagedCodeConfig,
)
from arize._generated.api_client.models.managed_code_evaluator import (
ManagedCodeEvaluator,
)
from arize._generated.api_client.models.optimization_direction import (
OptimizationDirection,
)
from arize._generated.api_client.models.pagination_metadata import (
PaginationMetadata,
)
from arize._generated.api_client.models.static_param import StaticParam
from arize._generated.api_client.models.static_param_default_value import (
StaticParamDefaultValue,
)
from arize._generated.api_client.models.static_param_type import StaticParamType
from arize._generated.api_client.models.template_config import TemplateConfig
class EvaluatorVersionCode(BaseModel):
"""SDK view of the generated ``EvaluatorVersionCode`` with ``code_config`` unwrapped.
The ``code_config`` field holds the concrete inner type
(:class:`CustomCodeConfig` or :class:`ManagedCodeConfig`) instead of the
oneOf wrapper :class:`CodeConfig`, so ``model_dump()`` and attribute access
work as expected.
"""
id: str
evaluator_id: str
commit_hash: str
commit_message: str | None = None
created_at: datetime
created_by_user_id: str | None = None
type: str
code_config: CustomCodeConfig | ManagedCodeConfig
model_config = ConfigDict(from_attributes=True)
@field_validator("code_config", mode="before")
@classmethod
def _coerce_code_config(
cls, v: object
) -> CustomCodeConfig | ManagedCodeConfig:
if isinstance(v, CodeConfig):
if v.actual_instance is None:
raise ValueError("CodeConfig wrapper has actual_instance=None")
return v.actual_instance
return v # type: ignore[return-value]
[docs]
class EvaluatorWithVersion(BaseModel):
"""SDK view of the generated ``EvaluatorWithVersion`` with ``version`` unwrapped.
The ``version`` field holds the concrete inner type
(:class:`EvaluatorVersionCode` for code evaluators, or
:class:`EvaluatorVersionTemplate` for template evaluators) instead of the
oneOf wrapper.
"""
id: str
name: str
description: str | None = None
type: EvaluatorType
space_id: str
created_at: datetime
updated_at: datetime
created_by_user_id: str | None = None
version: EvaluatorVersionCode | EvaluatorVersionTemplate
model_config = ConfigDict(from_attributes=True)
@field_validator("version", mode="before")
@classmethod
def _coerce_version(
cls, v: object
) -> EvaluatorVersionCode | EvaluatorVersionTemplate:
if isinstance(v, _GenEvaluatorVersion):
v = v.actual_instance
if isinstance(v, _GenEvaluatorVersionCode):
return EvaluatorVersionCode.model_validate(v, from_attributes=True)
return v # type: ignore[return-value]
[docs]
class EvaluatorVersionsList200Response(BaseModel):
"""SDK view of the generated ``EvaluatorVersionsList200Response`` with each version unwrapped."""
evaluator_versions: list[EvaluatorVersionCode | EvaluatorVersionTemplate]
pagination: PaginationMetadata
model_config = ConfigDict(from_attributes=True)
@field_validator("evaluator_versions", mode="before")
@classmethod
def _coerce_evaluator_versions(
cls, v: object
) -> list[EvaluatorVersionCode | EvaluatorVersionTemplate]:
result = []
for item in v: # type: ignore[attr-defined]
if isinstance(item, _GenEvaluatorVersion):
item = item.actual_instance
if isinstance(item, _GenEvaluatorVersionCode):
item = EvaluatorVersionCode.model_validate(
item, from_attributes=True
)
result.append(item)
return result
__all__ = [
"CodeConfig",
"CustomCodeConfig",
"DataGranularity",
"Evaluator",
"EvaluatorLlmConfig",
"EvaluatorType",
"EvaluatorVersionCode",
"EvaluatorVersionCodeCreate",
"EvaluatorVersionCreate",
"EvaluatorVersionTemplate",
"EvaluatorVersionTemplateCreate",
"EvaluatorVersionsList200Response",
"EvaluatorWithVersion",
"EvaluatorsList200Response",
"ManagedCodeConfig",
"ManagedCodeEvaluator",
"OptimizationDirection",
"StaticParam",
"StaticParamDefaultValue",
"StaticParamType",
"TemplateConfig",
]