Ответ
Pydantic — это библиотека для валидации данных и управления настройками с использованием аннотаций типов Python. Она обеспечивает строгую проверку типов и структуры данных во время выполнения программы.
Ключевые возможности:
- Валидация данных: Автоматически проверяет, соответствуют ли входящие данные (например, из JSON-запроса) типам, указанным в модели.
- Парсинг и приведение типов: Умеет преобразовывать данные в нужные типы (например, строку
'2023-01-01'в объектdatetime). - Сериализация: Легко преобразует объекты моделей в словари или JSON.
- Генерация JSON Schema: Автоматически создает схемы данных, которые используются для генерации документации API (например, в FastAPI).
- Кастомные валидаторы: Позволяет определять собственные функции для сложной логики проверки полей.
Пример базовой модели:
from pydantic import BaseModel, EmailStr, PositiveInt, field_validator
from typing import List
class User(BaseModel):
id: PositiveInt
name: str
email: EmailStr
tags: List[str] = []
# Кастомный валидатор
@field_validator('name')
def name_must_contain_space(cls, v):
if ' ' not in v:
raise ValueError('must contain a space')
return v.title()
# Создание экземпляра с валидацией
try:
user_data = {"id": 123, "name": "john doe", "email": "john.doe@example.com"}
user = User(**user_data)
# Сериализация в JSON
print(user.model_dump_json(indent=2))
except ValueError as e:
print(e)
Основные сценарии использования:
- API: Валидация тел запросов и ответов (основа FastAPI).
- Управление конфигурацией: Загрузка и валидация настроек из файлов или переменных окружения.
- ETL-процессы: Обеспечение корректности данных на этапах извлечения и преобразования.