Что нового в Python 3.14

Редактор:

TBD

В этой статье рассказывается о новых возможностях в Python 3.14 по сравнению с 3.13.

Подробную информацию смотрите в changelog.

Примечание

Пользователи пререлиза должны знать, что этот документ в настоящее время находится в черновом варианте. Он будет существенно обновляться по мере продвижения Python 3.14 к релизу, поэтому стоит вернуться к нему даже после прочтения предыдущих версий.

Резюме - Основные моменты выпуска

Новые возможности

Другие языковые изменения

Новые модули

  • Пока нет.

Улучшенные модули

ast

Добавлена функция ast.compare() для сравнения двух AST. (Внесено Батуханом Таская и Джереми Хилтоном в bpo-15987).

Оптимизации

Утратившие актуальность

  • Передача комплексного числа в качестве аргумента real или imag в конструкторе complex() теперь неактуальна; его следует передавать только в качестве одиночного позиционного аргумента. (Внесено Сергеем Сторчакой в gh-109218).

Удалено

argparse

  • Удалите параметры type, choices и metavar из argparse.BooleanOptionalAction. Они были устаревшими с версии 3.12.

ast

  • Удалите следующие классы. Все они были устаревшими с Python 3.8, а с Python 3.12 выдают предупреждения об устаревании:

    • ast.Num

    • ast.Str

    • ast.Bytes

    • ast.NameConstant

    • ast.Ellipsis

    Вместо этого используйте ast.Constant. В результате этих удалений пользовательские методы visit_Num, visit_Str, visit_Bytes, visit_NameConstant и visit_Ellipsis в пользовательских подклассах ast.NodeVisitor больше не будут вызываться, когда подкласс NodeVisitor посещает AST. Вместо этого определите метод visit_Constant.

    Также удалите следующие устаревшие свойства ast.Constant, которые присутствовали для совместимости с ныне удаленными классами AST:

    • ast.Constant.n

    • ast.Constant.s

    Вместо этого используйте ast.Constant.value.

    (Внесено Алексом Уэйгудом в gh-119562).

коллекции.abc

  • Уберите collections.abc.ByteString. Ранее, начиная с Python 3.12, он поднимал DeprecationWarning.

e-mail

importlib

itertools

  • Уберите поддержку itertools для операций копирования, глубокого копирования и pickle. Начиная с версии Python 3.12, они вызывали ошибку DeprecationWarning. (Внесено Раймондом Хеттингером в gh-101588).

pathlib

  • Удалена поддержка передачи дополнительных аргументов ключевых слов в pathlib.Path. В предыдущих версиях такие аргументы игнорировались.

  • Удалена поддержка передачи дополнительных позиционных аргументов в pathlib.PurePath.relative_to() и is_relative_to(). В предыдущих версиях любые такие аргументы присоединялись к other.

pty

  • Удалите устаревшие pty.master_open() и pty.slave_open(). Начиная с версии Python 3.12, они ранее поднимали DeprecationWarning. Вместо них используйте pty.openpty(). (Внесено Никитой Соболевым в gh-118824).

sqlite3

  • Удалите version и version_info из sqlite3. (Внесено Хьюго ван Кеменаде в gh-118924).

  • Запрет на использование последовательности параметров с именованными держателями. Начиная с Python 3.12 это вызывало ошибку DeprecationWarning; теперь это будет вызывать ошибку sqlite3.ProgrammingError. (Внесено Эрлендом Э. Аасланд в gh-118928 и gh-101693).

набор текста

  • Уберите typing.ByteString. Ранее, начиная с Python 3.12, он поднимал DeprecationWarning.

Другие

  • Использование NotImplemented в булевом контексте теперь приводит к появлению TypeError. Ранее, начиная с Python 3.9, оно приводило к появлению DeprecationWarning. (Внесено Jelle Zijlstra в gh-118767).

  • Встроенный int() больше не делегирует полномочия __trunc__(). Классы, которые хотят поддерживать преобразование в целое число, должны реализовать либо __int__(), либо __index__(). (Внесено Марком Дикинсоном в gh-119743).

Переход на Python 3.14

В этом разделе перечислены ранее описанные изменения и другие исправления, которые могут потребовать внесения изменений в ваш код.

Изменения в конструкции

Изменения в API на языке C

Новые возможности

Переход на Python 3.14

Утратившие актуальность

  • Макросы Py_IS_NAN, Py_IS_INFINITY и Py_IS_FINITE стали soft deprecated, используйте вместо них isnan, isinf и isfinite, доступные в math.h начиная с C99. (Внесено Сергеем Кирпичевым в gh-119613).

Удалено

  • Создание immutable types с мутабельными базами было устаревшим с версии 3.12 и теперь приводит к ошибке TypeError.