Документация Python неофициальный перевод
Содержание страницы

УстареванияDeprecations

Запланировано к удалению в Python 3.13Pending Removal in Python 3.13

Модули (см. PEP 594):

Другие модули:

  • lib2to3 и программа 2to3 (gh-84540)

API:

Запланировано к удалению в Python 3.14Pending Removal in Python 3.14

Запланировано к удалению в Python 3.15Pending Removal in Python 3.15

  • http.server.CGIHTTPRequestHandler будет удалён вместе со связанным флагом --cgi для python -m http.server. Он был устаревшим и редко использовался. Прямой замены не существует. Что угодно лучше, чем CGI, для взаимодействия веб-сервера с обработчиком запросов.

  • importlib:

    • Метод load_module(): вместо него используйте exec_module().

  • locale: locale.getdefaultlocale() был устаревшим в Python 3.11 и изначально планировался к удалению в Python 3.13 (gh-90817), но удаление было отложено до Python 3.15. Вместо этого используйте locale.setlocale(), locale.getencoding() и locale.getlocale(). (Автор: Hugo van Kemenade, gh-111187.)

  • pathlib: pathlib.PurePath.is_reserved() устарел и запланирован к удалению в Python 3.15. Начиная с Python 3.13, используйте os.path.isreserved для обнаружения зарезервированных путей в Windows.

  • platform: java_ver() устарел и будет удалён в 3.15. Он был в основном не протестирован, имел запутанный API и был полезен только для поддержки Jython. (Автор: Nikita Sobolev, gh-116349.)

  • sysconfig:

    • Аргумент check_home функции sysconfig.is_python_build() считается устаревшим начиная с Python 3.12.

  • threading: Передача любых аргументов в threading.RLock() теперь устарела. Версия на C допускает любое количество args и kwargs, но они просто игнорируются. Версия на Python не допускает никаких аргументов. Все аргументы будут удалены из threading.RLock() в Python 3.15. (Автор: Nikita Sobolev, gh-102029.)

  • typing.NamedTuple:

    • Не документированный синтаксис именованных аргументов для создания классов NamedTuple (NT = NamedTuple("NT", x=int)) устарел и будет запрещён в 3.15. Вместо этого используйте синтаксис на основе классов или функциональный синтаксис.

  • types:

    • types.CodeType: доступ к co_lnotab был объявлен устаревшим в PEP 626 начиная с версии 3.10 и планировался к удалению в 3.12, но получил надлежащий DeprecationWarning только в 3.12. Может быть удалён в 3.15. (Предложено Никитой Соболевым в gh-101866.)

  • typing:

    • При использовании функционального синтаксиса для создания класса NamedTuple, отсутствие значения у параметра fields (NT = NamedTuple("NT")) устарело. Передача None в параметр fields (NT = NamedTuple("NT", None)) также устарела. Оба варианта будут запрещены в Python 3.15. Чтобы создать класс NamedTuple с 0 полями, используйте class NT(NamedTuple): pass или NT = NamedTuple("NT", []).

  • typing.TypedDict: При использовании функционального синтаксиса для создания класса TypedDict, отсутствие значения у параметра fields (TD = TypedDict("TD")) устарело. Передача None в параметр fields (TD = TypedDict("TD", None)) также устарела. Оба варианта будут запрещены в Python 3.15. Чтобы создать класс TypedDict с 0 полями, используйте class TD(TypedDict): pass или TD = TypedDict("TD", {}).

  • wave: Устарели методы getmark(), setmark() и getmarkers() классов wave.Wave_read и wave.Wave_write. Они будут удалены в Python 3.15. (Автор: Victor Stinner, gh-105096.)

Запланированное удаление в Python 3.16Pending Removal in Python 3.16

  • Система импорта:

    • Установка __loader__ в модуле при отсутствии __spec__.loader устарела. В Python 3.16 __loader__ перестанет устанавливаться или учитываться системой импорта или стандартной библиотекой.

  • array: array.array тип 'u' (wchar_t): используйте тип 'w' вместо него (Py_UCS4).

  • builtins: ~bool, побитовая инверсия для bool.

  • symtable: Устарел symtable.Class.get_methods() из-за отсутствия интереса. (Автор: Bénédikt Tran, gh-119698.)

Запланировано к удалению в будущих версияхPending Removal in Future Versions

Следующие API будут удалены в будущем, хотя на данный момент нет запланированной даты их удаления.

  • argparse: Вложение групп аргументов и вложение взаимоисключающих групп устарело.

  • Код формата 'u' для array (gh-57281)

  • builtins:

    • bool(NotImplemented).

    • Генераторы: сигнатура throw(type, exc, tb) и athrow(type, exc, tb) устарела: используйте throw(exc) и athrow(exc) вместо неё, сигнатуру с одним аргументом.

    • В настоящее время Python принимает числовые литералы, за которыми сразу следуют ключевые слова, например 0in x, 1or x, 0if 1else 2. Это допускает запутанные и неоднозначные выражения вроде [0x1for x in y] (которое может быть интерпретировано как [0x1 for x in y] или [0x1f or x in y]). Выдаётся предупреждение синтаксиса, если за числовым литералом сразу следует одно из ключевых слов and, else, for, if, in, is и or. В будущем выпуске это будет изменено на синтаксическую ошибку. (gh-87999)

    • Поддержка методов __index__() и __int__(), возвращающих не-int тип: эти методы должны будут возвращать экземпляр строгого подкласса int.

    • Поддержка метода __float__(), возвращающего строгий подкласс float: эти методы должны будут возвращать экземпляр float.

    • Поддержка метода __complex__(), возвращающего строгий подкласс complex: эти методы должны будут возвращать экземпляр complex.

    • Делегирование int() методу __trunc__().

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

  • calendar: константы calendar.January и calendar.February устарели и заменены на calendar.JANUARY и calendar.FEBRUARY. (Автор: Prince Roshan в gh-103636.)

  • codeobject.co_lnotab: используйте метод codeobject.co_lines() вместо этого.

  • datetime:

    • utcnow(): используйте datetime.datetime.now(tz=datetime.UTC).

    • utcfromtimestamp(): используйте datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC).

  • gettext: значение множественного числа должно быть целым числом.

  • importlib:

    • cache_from_source(): параметр debug_override устарел: используйте параметр optimization вместо него.

  • importlib.metadata:

    • EntryPoints: интерфейс кортежа.

    • Неявное None для возвращаемых значений.

  • mailbox: использование StringIO в режиме ввода и текстовом режиме устарело, используйте BytesIO и двоичный режим.

  • os: вызов os.register_at_fork() в многопоточном процессе.

  • pydoc.ErrorDuringImport: кортежное значение для параметра exc_info устарело, используйте экземпляр исключения.

  • re: теперь применяются более строгие правила для числовых ссылок на группы и имён групп в регулярных выражениях. В качестве числовой ссылки теперь принимается только последовательность цифр ASCII. Имя группы в байтовых шаблонах и строках замены теперь может содержать только буквы ASCII, цифры и знак подчёркивания. (Автор: Сергей Сторчака в gh-91760.)

  • Модули sre_compile, sre_constants и sre_parse.

  • shutil: параметр onerror метода rmtree() устарел в Python 3.12; используйте параметр onexc вместо него.

  • ssl: опции и протоколы:

    • ssl.SSLContext без аргумента протокол устарело.

    • ssl.SSLContext: set_npn_protocols() и selected_npn_protocol() устарели: используйте ALPN вместо них.

    • ssl.OP_NO_SSL*: опции

    • ssl.OP_NO_TLS*: опции

    • ssl.PROTOCOL_SSLv3

    • ssl.PROTOCOL_TLS

    • ssl.PROTOCOL_TLSv1

    • ssl.PROTOCOL_TLSv1_1

    • ssl.PROTOCOL_TLSv1_2

    • ssl.TLSVersion.SSLv3

    • ssl.TLSVersion.TLSv1

    • ssl.TLSVersion.TLSv1_1

  • threading: методы

  • typing.Text (gh-92332).

  • unittest.IsolatedAsyncioTestCase: возврат значения, не являющегося None, из тестового примера устарел.

  • urllib.parse устаревшие функции: используйте urlparse() вместо них.

    • splitattr()

    • splithost()

    • splitnport()

    • splitpasswd()

    • splitport()

    • splitquery()

    • splittag()

    • splittype()

    • splituser()

    • splitvalue()

    • to_bytes()

  • urllib.request: Стиль вызова запросов URLopener и FancyURLopener устарел. Используйте более новые функции и методы urlopen().

  • wsgiref: SimpleHandler.stdout.write() не должна выполнять частичную запись.

  • xml.etree.ElementTree: проверка истинностного значения Element устарела. В будущем выпуске она всегда будет возвращать True. Вместо этого используйте явные проверки len(elem) или elem is not None.

  • zipimport.zipimporter.load_module() устарело: используйте exec_module() вместо него.

Устаревшие возможности C APIC API Deprecations

Запланировано к удалению в Python 3.14Pending Removal in Python 3.14

Запланировано к удалению в Python 3.15Pending Removal in Python 3.15

Запланировано к удалению в будущих версияхPending Removal in Future Versions

Следующие API устарели и будут удалены, хотя на данный момент дата их удаления не назначена.