Source code for kittycad.models.text_to_cad_response

import datetime
from typing import Dict, List, Literal, Optional, Union

from pydantic import Field, RootModel
from typing_extensions import Annotated

from ..models.api_call_status import ApiCallStatus
from ..models.file_export_format import FileExportFormat
from ..models.ml_feedback import MlFeedback
from ..models.source_range_prompt import SourceRangePrompt
from ..models.text_to_cad_model import TextToCadModel
from ..models.uuid import Uuid
from .base import KittyCadBaseModel
from .base64data import Base64Data


[docs] class OptionTextToCad(KittyCadBaseModel): """A response from a text to CAD prompt.""" code: Optional[str] = None completed_at: Optional[datetime.datetime] = None conversation_id: Uuid created_at: datetime.datetime error: Optional[str] = None feedback: Optional[MlFeedback] = None id: Uuid kcl_version: Optional[str] = None model: TextToCadModel model_version: str output_format: FileExportFormat outputs: Optional[Dict[str, Base64Data]] = None prompt: str started_at: Optional[datetime.datetime] = None status: ApiCallStatus type: Literal["text_to_cad"] = "text_to_cad" updated_at: datetime.datetime user_id: Uuid
[docs] class OptionTextToCadIteration(KittyCadBaseModel): """A response from a text to CAD iteration.""" code: str completed_at: Optional[datetime.datetime] = None conversation_id: Uuid created_at: datetime.datetime error: Optional[str] = None feedback: Optional[MlFeedback] = None id: Uuid model: TextToCadModel model_version: str original_source_code: str prompt: Optional[str] = None source_ranges: List[SourceRangePrompt] started_at: Optional[datetime.datetime] = None status: ApiCallStatus type: Literal["text_to_cad_iteration"] = "text_to_cad_iteration" updated_at: datetime.datetime user_id: Uuid
[docs] class OptionTextToCadMultiFileIteration(KittyCadBaseModel): """A response from a text to CAD multi-file iteration.""" completed_at: Optional[datetime.datetime] = None conversation_id: Uuid created_at: datetime.datetime error: Optional[str] = None feedback: Optional[MlFeedback] = None id: Uuid kcl_version: Optional[str] = None model: TextToCadModel model_version: str outputs: Optional[Dict[str, str]] = None project_name: Optional[str] = None prompt: Optional[str] = None source_ranges: List[SourceRangePrompt] started_at: Optional[datetime.datetime] = None status: ApiCallStatus type: Literal["text_to_cad_multi_file_iteration"] = ( "text_to_cad_multi_file_iteration" ) updated_at: datetime.datetime user_id: Uuid
TextToCadResponse = RootModel[ Annotated[ Union[ OptionTextToCad, OptionTextToCadIteration, OptionTextToCadMultiFileIteration, ], Field(discriminator="type"), ] ]