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

Ждем вас

на 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, кеширование.
* Когда выбирать библиотеку для валидации, а когда уместна точечная самописная логика для валидации.

Backend-инженер и архитектор решений в Effective: занимается оценкой и проектированием архитектуры для проектов Яндекса, 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-ломов

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

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