Что такое библиотека Pydantic в Python

Ответ

Pydantic — это библиотека для валидации данных и управления настройками в Python, использующая аннотации типов.

Она позволяет создавать четкие, явные и легко проверяемые модели данных, что критически важно при работе с API, конфигурационными файлами и сложными структурами данных. Pydantic является стандартом де-факто для фреймворка FastAPI.

Ключевые возможности:

  • Валидация данных: Автоматически проверяет типы и значения полей на основе аннотаций (str, int, List[float]) и дополнительных ограничений (Field).
  • Сериализация и десериализация: Легко преобразует объекты Python в JSON и обратно (.model_dump(), .model_dump_json()).
  • Поддержка IDE: Улучшает автодополнение и статическую проверку кода благодаря явным моделям.
  • Кастомные валидаторы: Позволяет определять сложную логику проверки для конкретных полей.

Пример модели с валидацией:

from pydantic import BaseModel, Field, field_validator, ValidationError
from typing import List

class User(BaseModel):
    id: int
    name: str = Field(min_length=2, description="Имя пользователя")
    tags: List[str] = []

    # Пользовательский валидатор для поля 'name'
    @field_validator('name')
    def name_must_be_capitalized(cls, v: str) -> str:
        if not v[0].isupper():
            raise ValueError('Имя должно начинаться с заглавной буквы')
        return v

# --- Использование ---

# Валидные данные
user_data = {'id': 1, 'name': 'Alice', 'tags': ['admin', 'user']}
user = User(**user_data)
print(user.model_dump_json(indent=2))
# Вывод:
# {
#   "id": 1,
#   "name": "Alice",
#   "tags": [
#     "admin",
#     "user"
#   ]
# }

# Невалидные данные
try:
    invalid_data = {'id': 2, 'name': 'bob'}
    User(**invalid_data) # Вызовет ValidationError
except ValidationError as e:
    print(e)

Pydantic сокращает количество шаблонного кода для проверки данных и делает код более надежным и читаемым.