Загружаем изображение…

🐍 Почему ошибки валидации в Python иногда так сложно найти


Чем глубже вложена структура данных, тем сложнее понять, где именно произошла ошибка.
Если использовать обычные dataclass, вы чаще всего увидите только значение, которое не прошло проверку — но не путь к полю, где возникла проблема.  
В сложных вложенных структурах это превращает отладку в настоящую боль.
Pydantic решает эту проблему.
Он показывает полный путь до поля, которое вызвало ошибку — от корневой модели до конкретного атрибута.
В результате сразу понятно, где искать проблему.
Пример:

from pydantic import BaseModel, Field
class Address(BaseModel):
    zip_code: str = Field(pattern=r"^\d{5}$")
class Customer(BaseModel):
    name: str
    address: Address
customer = Customer(
    name="Alice",
    address={"zip_code": "9ABC1"}
)
Ошибка будет выглядеть так:

ValidationError: address.zip_code
String should match pattern '^\d{5}$'

То есть Pydantic сразу показывает:

address.zip_code

А не просто сообщает, что «где-то внутри данных ошибка».
Для сложных JSON, API-ответов и вложенных моделей это сильно упрощает дебаг.
#Python #Pydantic #Backend #DataValidation
Просмотры: 3 371
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти