Конференция завершена.

Ждем вас

на Data Internals X

в следующий раз!

От Pydantic v1 к v2: глубокий разбор Pydantic Core на Rust и алгоритмов валидаторов

Разработка инструментов работы с данными

Python
Оптимизация производительности
Оптимизация
Обработка данных

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Глубокое погружение в Pydantic v2: от Python-обертки до Rust-движка. Узнаете, как работают валидаторы на низком уровне, почему v2 быстрее v1, как оптимизировать схемы для максимальной производительности. Сравним с самописными решениями и разберем, когда что выбирать на практике.

Целевая аудитория

* Backend Developers. * Web Developers. * Data Engineers. * Data Analysts. * CTO.

Тезисы

* Разберем, какие бывают подходы к валидации данных — от type hints и type guards до декларативных схем и библиотек для валидации.
* Сопоставим самописные проверки и библиотеки; затем разберем, как устроен Pydantic: CoreSchema → pydantic-core (Rust) → validate_json fast-path — и почему это чаще выигрывает у самописного кода.
* Покажу, как проектировать быстрые и поддерживаемые схемы: model_validate_json, переиспользование валидаторов, fail-fast, кеширование.
* Когда выбирать библиотеку для валидации, а когда уместна точечная самописная логика для валидации.

Привет! Я Арсений, и я обожаю технологии во всех их проявлениях.

Я живу в Омске, рост 178 см, люблю мороженное крем-брюле 🙂
Очень сильно люблю разработку, технологии и все, что с этим связано!

Являюсь Backend инженером и архитектором решений в компании Effective (effective.dev).
Работаю на стыке инженерии и бизнеса: участвую в пресейле, помогаю формировать техническое видение и принимать архитектурные решения, спокойно расширяемые и поддерживаемые спустя время. Часто выступаю в роли технического лидера - от раннего проектирования до продакшена и поддержки.

Занимаюсь проектированием и оценкой архитектуры для продуктовых команд, в том числе для компаний уровня Яндекс, YanGo, Mokka и других бизнесов с высокой нагрузкой, сложными доменными моделями и требованиями к надёжности и масштабированию. Такой опыт научил смотреть на системы не только с точки зрения кода, но и с точки зрения роста продукта и команды.

Также помимо этого занимаюсь разработкой и поддержкой решений на Python, node.js для зарубежных технологических компаний.

Видео

Подготовительное задание
1. Какие ключевые оптимизации PydanticCore обеспечили прирост производительности?
Переезд logic-валидации в Rust через PyO3, использование SIMD-парсинга JSON (числа и строки), fast-path для ASCII-строк, перенос enum-валидации в pydantic-core, кэширование CoreSchema и переиспользование Validator/Serializer объектов .
2. Как устроена внутренняя архитектура CoreSchema и SchemaValidator?
Каждая модель преобразуется в CoreSchema — дерево узлов (typed-dict, list, union, annotated и пр.), по которому SchemaValidator выполняет обход и применяет низкоуровневые валидаторы в Rust с минимальным переходом в Python благодаря PyO3 .
3. Какие алгоритмы лежат в основе валидаторов?
Tree-of-small-validators (рекурсивное объединение простых проверок), discriminated union для быстpого выбора варианта, hash-lookup для enum, оптимизированные JSON-парсеры jiter/serde_json с fast-path и SIMD .
4. Какие количественные результаты подтверждают эффективность?
– До 17× ускорение валидации vs Pydantic v1;
– 67% ускорение старта FastAPI при heavy generics;
– ~4× быстрее enum-валидация;
– ~15% прирост скорости JSON-парсинга;
– Снижение памяти в 2–5× при построении схем .
5. Какие изменения API и планы на Pydantic v3?
Удаление shim-кода из v1, фиксы edge-case в модели по MRO, постоянный default by_alias=True, добавление line_number/column_number в ValidationError, улучшенная поддержка @validate_call, без серьёзных API-ломов

Другие доклады секции

Разработка инструментов работы с данными