mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-18 04:44:37 +00:00
* perf(types): defer pydantic schema builds via shared LiteLLMBaseModel Add LiteLLMBaseModel with defer_build driven by DEFER_PYDANTIC_BUILD (default true) and move litellm and enterprise pydantic models onto it Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(types): build deferred models created by a parent validator; keep lens worker models litellm-free Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * chore(types): link pydantic issue on deferred-build rebuild hook Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: nate <nate@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""
|
|
Base model class for domain models.
|
|
"""
|
|
|
|
from datetime import datetime
|
|
from typing import Any
|
|
|
|
from pydantic import ConfigDict
|
|
|
|
from litellm.types.llms.base import LiteLLMBaseModel
|
|
|
|
|
|
class DomainModel(LiteLLMBaseModel):
|
|
"""Base class for all domain models."""
|
|
|
|
model_config = ConfigDict(
|
|
from_attributes=True,
|
|
protected_namespaces=(),
|
|
extra="ignore",
|
|
)
|
|
|
|
created_at: datetime | None = None
|
|
updated_at: datetime | None = None
|
|
|
|
@classmethod
|
|
def from_db_record(cls, record: Any) -> "DomainModel":
|
|
"""Create a domain model from a database record."""
|
|
if record is None:
|
|
raise ValueError("Cannot create domain model from None record")
|
|
if isinstance(record, dict):
|
|
return cls(**record)
|
|
if hasattr(record, "model_dump") and callable(record.model_dump):
|
|
return cls(**record.model_dump())
|
|
if hasattr(record, "dict") and callable(record.dict):
|
|
return cls(**record.dict())
|
|
return cls(**dict(record))
|
|
|
|
def to_db_dict(self, exclude_unset: bool = False) -> dict[str, object]:
|
|
"""Convert domain model to a dictionary for database operations."""
|
|
return self.model_dump(exclude_none=True, exclude_unset=exclude_unset)
|