Spaces:
Running
Running
from typing import Literal | |
from pydantic import BaseModel, Field, field_serializer, field_validator | |
class Source(BaseModel): | |
id: str | None = Field(default=None, description="The id of the source component.") | |
display_name: str | None = Field(default=None, description="The display name of the source component.") | |
source: str | None = Field( | |
default=None, | |
description="The source of the message. Normally used to display the model name (e.g. 'gpt-4o')", | |
) | |
class Properties(BaseModel): | |
text_color: str | None = None | |
background_color: str | None = None | |
edited: bool = False | |
source: Source = Field(default_factory=Source) | |
icon: str | None = None | |
allow_markdown: bool = False | |
state: Literal["partial", "complete"] = "complete" | |
targets: list = [] | |
def validate_source(cls, v): | |
if isinstance(v, str): | |
return Source(id=v, display_name=v, source=v) | |
return v | |
def serialize_source(self, value): | |
if isinstance(value, Source): | |
return value.model_dump() | |
return value | |