Подключить Pydantic#
Нужна проверка моделей средствами Pydantic?
Установите extra pydantic:
uv add "eazy-sdk-core[pydantic]"
Адаптер использует Pydantic v2 для разбора ответа. Alias связывает имя Python с полем API:
# examples/docs/integration_pydantic_model.py
class Message(BaseModel):
model_config = ConfigDict(frozen=True)
message_id: int = Field(validation_alias="id", serialization_alias="id")
subject: str
@dataclass(frozen=True, slots=True)
class GetMessage(HttpOperation[Message]):
__http__ = Http.get("/messages/42")
class MessagesApi(SyncApi):
get = op(GetMessage)
Файл целиком
"""Parse a response with the built-in Pydantic model adapter."""
from __future__ import annotations
from dataclasses import dataclass
from pydantic import BaseModel, ConfigDict, Field
from eazy_sdk import Http, HttpOperation, SyncApi, op
from .guide_site import GuideSite, guide_client
# docs:integration-pydantic-model:start
# examples/docs/integration_pydantic_model.py
class Message(BaseModel):
model_config = ConfigDict(frozen=True)
message_id: int = Field(validation_alias="id", serialization_alias="id")
subject: str
@dataclass(frozen=True, slots=True)
class GetMessage(HttpOperation[Message]):
__http__ = Http.get("/messages/42")
class MessagesApi(SyncApi):
get = op(GetMessage)
# docs:integration-pydantic-model:end
def main() -> None:
with guide_client(GuideSite()) as client:
message = MessagesApi(client).get()
print(f"pydantic: {message.message_id} {message.subject}")
if __name__ == "__main__":
main()
pydantic: 42 План на пятницу
Для входящих данных адаптер учитывает validation_alias. При сериализации тела запроса он
использует serialization_alias или alias согласно конфигурации модели. Ошибка в типах ответа
сохраняет структурированные сведения Pydantic в контексте ошибки SDK.