Python Community
12K subscribers
1.39K photos
109 videos
15 files
925 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
🐍 Почему ошибки валидации в 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