Есть ли опыт работы с Pydantic
PydanticPythonбиблиотекивалидациятипизация
Что проверяют
Пользовались ли вы библиотекой дальше объявления моделей и знаете ли различия между первой и второй версией.
Как отвечать
Расскажите, где применяли: разбор и проверка тел запросов в FastAPI, конфигурация приложения через BaseSettings, проверка данных из внешних API и очередей, сериализация ответов.
Что показывает реальный опыт:
- проверки:
Fieldс ограничениями (длина, диапазон, шаблон), собственные проверки черезfield_validatorиmodel_validator, режимstrictтам, где приведение типов нежелательно; - приведение типов: по умолчанию строка
"42"станет числом, и это удобно для форм, но опасно для строгих контрактов. Знание этого поведения отличает опытного пользователя; - вложенные модели и списки, необязательные поля со значениями по умолчанию, псевдонимы полей через
aliasиpopulate_by_name; - сериализация:
model_dumpс исключением незаполненных полей, режимjson, кастомные сериализаторы; - вторая версия: ядро переписано на Rust и работает заметно быстрее, но API изменился.
parse_objсталmodel_validate,dict()сталmodel_dump(),@validatorзаменён на@field_validator, конфигурация переехала вmodel_config. Про это спрашивают, потому что в проектах живут обе версии; - границы применения: Pydantic для данных, приходящих извне; для внутренних структур обычно хватает
dataclass, иначе платите проверкой за каждый созданный объект.
Где спотыкаются
Делают все поля необязательными, чтобы модель не падала, и теряют смысл проверки.
Не знают про приведение типов и удивляются, что строка стала числом.
Тащат модели Pydantic во все слои приложения, включая горячие циклы обработки.