PydanticЩо нового в Pydantic 2.14
Реліз Pydantic 2.14 приносить підтримку Python 3.15, припиняє підтримку Python 3.9, додає нові core schemas та усуває низку вразливостей безпеки.
Реліз від 11 жовтня 2026 · оновлено 8 листопада 2026
Головне
- Припинено підтримку Python 3.9 та додано підтримку Python 3.15
- Додано параметр __namespace__ у create_model()
- Підтримка обмеження multiple_of для fraction та timedelta
- Нові core schemas: ordered-dict та counter
- Виправлено вразливості безпеки GHSA-gj4f-r7mf-jjxh, GHSA-955g-x97g-8mcp, GHSA-qpmf-fgh3-ff25, GHSA-3r8g-cqwr-jr29
Коротко
Лінійка релізів Pydantic 2.14 оновлює матрицю підтримуваних середовищ: додано підтримку Python 3.15 та припинено підтримку Python 3.9. Оновлення розширює можливості динамічного створення моделей, додає нові схеми для словників та лічильників, а також приносить суттєві оптимізації продуктивності валідації та серіалізації. Крім того, у версіях 2.14.0 та 2.14.2 закрили чотири проблеми безпеки.
Нові можливості
Оновлення валідації та створення моделей
- Параметр
__namespace__уcreate_model(): функціяcreate_model()отримала параметр__namespace__для передачі простору імен під час динамічного створення моделей. - Обмеження
multiple_ofдля типівfractionтаtimedelta: додано підтримку валідації кратності для схемfractionтаtimedelta(при цьому дляmultiple_ofвимагаються додатні значення). - Нові core-схеми: додано схему
ordered-dictта схемуcounter.
Зміни в роботі з даними та конфігураціями
- Незмінність конфігурації: атрибут
model_configбільше не мутується. - Відхилення символів нового рядка в
NameEmail: валідаціяNameEmailтепер відхиляє вхідні дані, що містять перенесення рядків. - Уніфікація валідації JSON з Python-підходом: обробка пошуку полів та зайвих даних у JSON-валідації приведена у відповідність до валідації в Python. Ключі, які збігаються лише з невикористаним псевдонімом або назвою поля, тепер розглядаються як зайві дані (
extra), а не відкидаються мовчки (викликаючи помилку, якщоextra='forbid'). - Підтримка спадкування в
TypedDict: додано підтримку параметрівclosedтаextra_itemsчерез механізм спадкування вTypedDict.
Покращення пакування
- Опубліковано колеса
pydantic-coreдля PyPy 8.0 (ABIpp80). - Оновлено залежності: PyO3 до 0.30.1, jiter до 0.18.0 (з використанням
PyFrozenDict), speedate до v0.18.0. - Додано збірку коліс для GraalPy 3.13 (публікацію коліс для GraalPy 3.11 припинено).
Оптимізація продуктивності
- Усунено зайве виділення пам'яті для кортежів Python під час валідації полів моделі та усунено зайве виділення словників
dict. - Усунено виділення пам'яті в купі для невеликих буферів полів JSON-моделей.
- Оптимізовано серіалізацію моделей, словників та визначення типів під час серіалізації.
- Виправлено квадратичний час серіалізації в разі використання повибіркових
include/excludeза індексами у послідовностях. - Пропуск перевірок декораторів полів, якщо декоратори полів відсутні, та пропуск налаштування обробника анотацій, коли анотації порожні.
- Лінивий виклик
reprзначень під час серіалізації вкладенихUnion. - Відмова від оцінки анотацій для
model_config.
Виправлення та покращення
- Безпека:
- Відхилення великих експонент під час валідації
Fraction(GHSA-gj4f-r7mf-jjxh). - Усунення багаторазової валідації префікса URL в адресах із кількома хостами (GHSA-955g-x97g-8mcp).
- Виправлення обробки невикористаних аліасів та зайвих ключів при валідації JSON (GHSA-qpmf-fgh3-ff25).
- Ігнорування зайвих даних, що збігаються з назвою поля, у
TypedDictта датакласах зextra=allow(GHSA-3r8g-cqwr-jr29).
- Відхилення великих експонент під час валідації
- JSON Schema: виправлено поширення конфігурацій стандартних датакласів та
TypedDict, врахування явногоby_aliasнадvalidate_by_alias, а також включенняnullдля серіалізаторів полівunless-none. - Робота з типами та моделями:
- Виправлено збій плагіна mypy на відкладених порожніх моделях.
- Виправлено виклики конструкторів
Enumв обох режимах валідації. - Виправлено обчислення прямих анотацій і підстановку типових змінних під час перебудови параметризованих дженерик-моделей, а також резолв
Self. - Забезпечено підтримку іменованих кортежів під час валідації та серіалізації
Sequence. - Виправлено
RecursionErrorпід час копіювання чи десеріалізації з pickle моделей із налаштуваннямdefer_build. - Виправлено глибоке копіювання (
deepcopy) моделей із циклічними посиланнями на себе.
- Валідація значень:
- Відхилення цілих чисел поза допустимим діапазоном для
timedelta. - Застосування обмеження цілої частини
max_digitsу валідаторіDecimal. - Заборона нерядкових додаткових ключів (
extra keys) під час валідації. - Перевірка обмеження
max_lengthдля мапінгів. - Відловлювання помилок операційної системи під час валідації
ZoneInfoтаOverflowErrorпід час валідаціїByteSize.
- Відхилення цілих чисел поза допустимим діапазоном для
Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо