⚡️ Проверка данных
Пользователи так и норовят запихнуть в важные поля что-то не то, так ещё и Python подливает масло в костёр со своей динамической типизацией. В этой ситуации помогает pydantic.
Установка:
Он занимается не только валидацией, но и решает проблемы с динамической типизацией. Подробнее можете почитать в документации.
#миниурок #pydantic
Пользователи так и норовят запихнуть в важные поля что-то не то, так ещё и Python подливает масло в костёр со своей динамической типизацией. В этой ситуации помогает pydantic.
Установка:
pip install pydantic
Модуль пользуется популярностью, имеет хорошую документацию и поддерживает PyCharm, VSCode. Код выглядит просто и выполняется быстро (сравнение тут).Он занимается не только валидацией, но и решает проблемы с динамической типизацией. Подробнее можете почитать в документации.
#миниурок #pydantic
👍1
🐍 Почему ошибки валидации в 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.