2025-04-02 09:01:55 +02:00

163 lines
4.7 KiB
Python

"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from .checkpointout import CheckpointOut, CheckpointOutTypedDict
from .eventout import EventOut, EventOutTypedDict
from .githubrepositoryout import GithubRepositoryOut, GithubRepositoryOutTypedDict
from .jobmetadataout import JobMetadataOut, JobMetadataOutTypedDict
from .trainingparameters import TrainingParameters, TrainingParametersTypedDict
from .wandbintegrationout import WandbIntegrationOut, WandbIntegrationOutTypedDict
from mistralai.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
from mistralai.utils import validate_const
import pydantic
from pydantic import model_serializer
from pydantic.functional_validators import AfterValidator
from typing import List, Literal, Optional
from typing_extensions import Annotated, NotRequired, TypedDict
DetailedJobOutStatus = Literal[
"QUEUED",
"STARTED",
"VALIDATING",
"VALIDATED",
"RUNNING",
"FAILED_VALIDATION",
"FAILED",
"SUCCESS",
"CANCELLED",
"CANCELLATION_REQUESTED",
]
DetailedJobOutObject = Literal["job"]
DetailedJobOutIntegrationsTypedDict = WandbIntegrationOutTypedDict
DetailedJobOutIntegrations = WandbIntegrationOut
DetailedJobOutRepositoriesTypedDict = GithubRepositoryOutTypedDict
DetailedJobOutRepositories = GithubRepositoryOut
class DetailedJobOutTypedDict(TypedDict):
id: str
auto_start: bool
hyperparameters: TrainingParametersTypedDict
model: str
r"""The name of the model to fine-tune."""
status: DetailedJobOutStatus
job_type: str
created_at: int
modified_at: int
training_files: List[str]
validation_files: NotRequired[Nullable[List[str]]]
object: DetailedJobOutObject
fine_tuned_model: NotRequired[Nullable[str]]
suffix: NotRequired[Nullable[str]]
integrations: NotRequired[Nullable[List[DetailedJobOutIntegrationsTypedDict]]]
trained_tokens: NotRequired[Nullable[int]]
repositories: NotRequired[List[DetailedJobOutRepositoriesTypedDict]]
metadata: NotRequired[Nullable[JobMetadataOutTypedDict]]
events: NotRequired[List[EventOutTypedDict]]
r"""Event items are created every time the status of a fine-tuning job changes. The timestamped list of all events is accessible here."""
checkpoints: NotRequired[List[CheckpointOutTypedDict]]
class DetailedJobOut(BaseModel):
id: str
auto_start: bool
hyperparameters: TrainingParameters
model: str
r"""The name of the model to fine-tune."""
status: DetailedJobOutStatus
job_type: str
created_at: int
modified_at: int
training_files: List[str]
validation_files: OptionalNullable[List[str]] = UNSET
OBJECT: Annotated[
Annotated[
Optional[DetailedJobOutObject], AfterValidator(validate_const("job"))
],
pydantic.Field(alias="object"),
] = "job"
fine_tuned_model: OptionalNullable[str] = UNSET
suffix: OptionalNullable[str] = UNSET
integrations: OptionalNullable[List[DetailedJobOutIntegrations]] = UNSET
trained_tokens: OptionalNullable[int] = UNSET
repositories: Optional[List[DetailedJobOutRepositories]] = None
metadata: OptionalNullable[JobMetadataOut] = UNSET
events: Optional[List[EventOut]] = None
r"""Event items are created every time the status of a fine-tuning job changes. The timestamped list of all events is accessible here."""
checkpoints: Optional[List[CheckpointOut]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
"validation_files",
"object",
"fine_tuned_model",
"suffix",
"integrations",
"trained_tokens",
"repositories",
"metadata",
"events",
"checkpoints",
]
nullable_fields = [
"validation_files",
"fine_tuned_model",
"suffix",
"integrations",
"trained_tokens",
"metadata",
]
null_default_fields = []
serialized = handler(self)
m = {}
for n, f in self.model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
return m