"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations from .presetdesignatedversion import ( PresetDesignatedVersion, PresetDesignatedVersionTypedDict, ) from .presetstatus import PresetStatus from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL from openrouter.utils import validate_open_enum from pydantic import model_serializer from pydantic.functional_validators import PlainValidator from typing_extensions import Annotated, TypedDict class PresetWithDesignatedVersionTypedDict(TypedDict): r"""A preset with its currently designated version.""" created_at: str creator_user_id: Nullable[str] description: Nullable[str] designated_version_id: Nullable[str] id: str name: str slug: str status: PresetStatus r"""The status of a preset.""" status_updated_at: Nullable[str] updated_at: str workspace_id: Nullable[str] designated_version: Nullable[PresetDesignatedVersionTypedDict] r"""A specific version of a preset, containing config and optional system prompt.""" class PresetWithDesignatedVersion(BaseModel): r"""A preset with its currently designated version.""" created_at: str creator_user_id: Nullable[str] description: Nullable[str] designated_version_id: Nullable[str] id: str name: str slug: str status: Annotated[PresetStatus, PlainValidator(validate_open_enum(False))] r"""The status of a preset.""" status_updated_at: Nullable[str] updated_at: str workspace_id: Nullable[str] designated_version: Nullable[PresetDesignatedVersion] r"""A specific version of a preset, containing config and optional system prompt.""" @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [] nullable_fields = [ "creator_user_id", "description", "designated_version_id", "status_updated_at", "workspace_id", "designated_version", ] null_default_fields = [] serialized = handler(self) m = {} for n, f in type(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