Voydevich
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 (ABI pp80).
  • Оновлено залежності: 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 за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо