# This file was auto-generated by Fern from our API Definition.

import typing

import pydantic
import typing_extensions
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.serialization import FieldMetadata
from ..core.unchecked_base_model import UncheckedBaseModel
from .file_summary import FileSummary
from .provided_processor_output import ProvidedProcessorOutput


class EvaluationSetItem(UncheckedBaseModel):
    object: typing.Literal["evaluation_set_item"] = pydantic.Field(default="evaluation_set_item")
    """
    The type of object. In this case, it will always be `"evaluation_set_item"`.
    """

    id: str = pydantic.Field()
    """
    The ID of the evaluation set item.
    
    Example: `"evi_kR9mNP12Qw4yTv8BdR3H"`
    """

    evaluation_set_id: typing_extensions.Annotated[str, FieldMetadata(alias="evaluationSetId")] = pydantic.Field(
        alias="evaluationSetId"
    )
    """
    The ID of the evaluation set that this item belongs to.
    
    Example: `"ev_2LcgeY_mp2T5yPaEuq5Lw"`
    """

    file: FileSummary = pydantic.Field()
    """
    A summary of the file associated with the evaluation set item.
    """

    expected_output: typing_extensions.Annotated[ProvidedProcessorOutput, FieldMetadata(alias="expectedOutput")] = (
        pydantic.Field(alias="expectedOutput")
    )
    """
    The expected output that will be used to evaluate the performance of the extractor, classifier, or splitter associated with the evaluation set. This must conform to the output schema of the entity associated with the evaluation set.
    """

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow
