🐍 Почему ошибки валидации в 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
🐍 Python полезные ресурсы (https://t.iss.one/addlist/MUtJEeJSxeY2YTFi) 🚀Max (https://max.ru/pythonl)
@Python_Community_ru
Чем глубже вложена структура данных, тем сложнее понять, где именно произошла ошибка.
Если использовать обычные 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
🐍 Python полезные ресурсы (https://t.iss.one/addlist/MUtJEeJSxeY2YTFi) 🚀Max (https://max.ru/pythonl)
@Python_Community_ru
Telegram
Golang
You’ve been invited to add the folder “Golang”, which includes 20 chats.