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

index.md

292 строк · 42.3 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.16/deprecations/index.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Устаревания89## Ожидаемое удаление в Python 3.171011- [`datetime`](https://python-all.ru/3.16/library/datetime.html#module-datetime):1213  - [`strptime()`](https://python-all.ru/3.16/library/datetime.html#datetime.datetime.strptime) вызовы со строкой формата, содержащей `%e` (день месяца) без указания года. Это устарело с Python 3.15. (Автор: Stan Ulbrych в [gh-70647](https://python-all.ru/3.16/deprecations/index.html).)14- [`collections.abc`](https://python-all.ru/3.16/library/collections.abc.html#module-collections.abc):1516  - [`collections.abc.ByteString`](https://python-all.ru/3.16/library/collections.abc.html#collections.abc.ByteString) запланирован к удалению в Python 3.17.1718    Используйте `isinstance(obj, collections.abc.Buffer)`, чтобы проверить, реализует ли `obj` [протокол буфера](https://python-all.ru/3.16/c-api/buffer.html#bufferobjects) во время выполнения. Для использования в аннотациях типов используйте либо [`Buffer`](https://python-all.ru/3.16/library/collections.abc.html#collections.abc.Buffer), либо объединение, которое явно указывает типы, поддерживаемые вашим кодом (например, `bytes | bytearray | memoryview`).1920    `ByteString` изначально задумывался как абстрактный класс, который служил бы супертипом как для [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes), так и для [`bytearray`](https://python-all.ru/3.16/library/stdtypes.html#bytearray). Однако, поскольку у ABC никогда не было методов, знание того, что объект является экземпляром `ByteString`, на самом деле никогда не давало полезной информации об объекте. Другие распространённые типы буферов, такие как [`memoryview`](https://python-all.ru/3.16/library/stdtypes.html#memoryview), также никогда не воспринимались как подтипы `ByteString` (ни во время выполнения, ни статическими проверками типов).2122    Подробнее см. [**PEP 688**](https://python-all.ru/3.16/deprecations/index.html). (Автор: Shantanu Jain в [gh-91896](https://python-all.ru/3.16/deprecations/index.html).)23- [`encodings`](https://python-all.ru/3.16/library/codecs.html#module-encodings):2425  - Передача имён *кодировок*, отличных от ASCII, в [`encodings.normalize_encoding()`](https://python-all.ru/3.16/library/codecs.html#encodings.normalize_encoding) устарела и запланирована к удалению в Python 3.17. (Автор: Stan Ulbrych в [gh-136702](https://python-all.ru/3.16/deprecations/index.html).)26- [`webbrowser`](https://python-all.ru/3.16/library/webbrowser.html#module-webbrowser):2728  - `webbrowser.MacOSXOSAScript` устарело; вместо него используйте `webbrowser.MacOS`. ([gh-137586](https://python-all.ru/3.16/deprecations/index.html))29- [`typing`](https://python-all.ru/3.16/library/typing.html#module-typing):3031  - До Python 3.14 старые объединения реализовывались с помощью закрытого класса `typing._UnionGenericAlias`. Этот класс больше не нужен для реализации, но сохранён для обратной совместимости; его удаление запланировано на Python 3.17. Пользователям следует использовать документированные вспомогательные функции интроспекции, такие как [`typing.get_origin()`](https://python-all.ru/3.16/library/typing.html#typing.get_origin) и [`typing.get_args()`](https://python-all.ru/3.16/library/typing.html#typing.get_args), вместо того чтобы полагаться на закрытые детали реализации.32  - [`typing.ByteString`](https://python-all.ru/3.16/library/typing.html#typing.ByteString), устаревший с Python 3.9, запланирован к удалению в Python 3.17.3334    Используйте `isinstance(obj, collections.abc.Buffer)`, чтобы проверить, реализует ли `obj` [протокол буфера](https://python-all.ru/3.16/c-api/buffer.html#bufferobjects) во время выполнения. Для использования в аннотациях типов используйте либо [`Buffer`](https://python-all.ru/3.16/library/collections.abc.html#collections.abc.Buffer), либо объединение, которое явно указывает типы, поддерживаемые вашим кодом (например, `bytes | bytearray | memoryview`).3536    `ByteString` изначально задумывался как абстрактный класс, который служил бы супертипом как для [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes), так и для [`bytearray`](https://python-all.ru/3.16/library/stdtypes.html#bytearray). Однако, поскольку у ABC никогда не было методов, знание того, что объект является экземпляром `ByteString`, на самом деле никогда не давало полезной информации об объекте. Другие распространённые типы буферов, такие как [`memoryview`](https://python-all.ru/3.16/library/stdtypes.html#memoryview), также никогда не воспринимались как подтипы `ByteString` (ни во время выполнения, ни статическими проверками типов).3738    Подробнее см. [**PEP 688**](https://python-all.ru/3.16/deprecations/index.html). (Автор: Shantanu Jain в [gh-91896](https://python-all.ru/3.16/deprecations/index.html).)39- [`tkinter`](https://python-all.ru/3.16/library/tkinter.html#module-tkinter):4041  - Методы `tkinter.Variable`: `trace_variable()`, `trace()` (псевдоним `trace_variable()`), `trace_vdelete()` и `trace_vinfo()`, устаревшие с Python 3.14, запланированы к удалению в Python 3.17. Вместо них используйте `trace_add()`, `trace_remove()` и `trace_info()`. (Автор: Serhiy Storchaka в [gh-120220](https://python-all.ru/3.16/deprecations/index.html).)4243## Ожидаемое удаление в Python 3.184445- Больше не принимает логическое значение, если ожидается файловый дескриптор. (Автор: Serhiy Storchaka в [gh-82626](https://python-all.ru/3.16/deprecations/index.html).)46- [`decimal`](https://python-all.ru/3.16/library/decimal.html#module-decimal):4748  - Нестандартный и недокументированный [`Decimal`](https://python-all.ru/3.16/library/decimal.html#decimal.Decimal) спецификатор формата `'N'`, который поддерживается только в реализации C модуля `decimal`, устарел с Python 3.13. (Автор: Serhiy Storchaka в [gh-89902](https://python-all.ru/3.16/deprecations/index.html).)49- Устаревания, определённые в [**PEP 829**](https://python-all.ru/3.16/deprecations/index.html):5051  - Строки `import` в файлах `name.pth` молча игнорируются.5253  (Предложено Барри Варшавом в [gh-148641](https://python-all.ru/3.16/deprecations/index.html).)5455## Запланировано к удалению в Python 3.195657- [`ctypes`](https://python-all.ru/3.16/library/ctypes.html#module-ctypes):5859  - Неявное переключение на совместимую с MSVC структуру путём установки [`_pack_`](https://python-all.ru/3.16/library/ctypes.html#ctypes.Structure._pack_) без [`_layout_`](https://python-all.ru/3.16/library/ctypes.html#ctypes.Structure._layout_) на платформах, отличных от Windows.60- [`hashlib`](https://python-all.ru/3.16/library/hashlib.html#module-hashlib):6162  - В конструкторах хеш-функций, таких как [`new()`](https://python-all.ru/3.16/library/hashlib.html#hashlib.new), или прямых конструкторах, названных по имени хеша, таких как [`md5()`](https://python-all.ru/3.16/library/hashlib.html#hashlib.md5) и [`sha256()`](https://python-all.ru/3.16/library/hashlib.html#hashlib.sha256), их необязательный параметр начальных данных мог также передаваться как именованный аргумент с именем `data=` или `string=` в различных реализациях `hashlib`.6364    Поддержка имени именованного аргумента `string` теперь устарела и будет удалена в Python 3.19.6566    До Python 3.13 именованный параметр `string` не поддерживался правильно в зависимости от реализации хеш-функций на стороне бэкенда. Предпочтительно передавать начальные данные как позиционный аргумент для максимальной обратной совместимости.67- [`http.cookies`](https://python-all.ru/3.16/library/http.cookies.html#module-http.cookies):6869  - [`http.cookies.Morsel.js_output()`](https://python-all.ru/3.16/library/http.cookies.html#http.cookies.Morsel.js_output) устарело и будет удалено в Python 3.19.70  - [`http.cookies.BaseCookie.js_output()`](https://python-all.ru/3.16/library/http.cookies.html#http.cookies.BaseCookie.js_output) устарело и будет удалено в Python 3.19.71- [`imaplib`](https://python-all.ru/3.16/library/imaplib.html#module-imaplib):7273  - Изменение [`IMAP4.file`](https://python-all.ru/3.16/library/imaplib.html#imaplib.IMAP4.file) теперь устарело и будет удалено в Python 3.19. Это свойство теперь не используется, и изменение его значения не приводит к автоматическому закрытию текущего файла.7475    До Python 3.14 это свойство использовалось для реализации соответствующих методов `read()` и `readline()` для [`IMAP4`](https://python-all.ru/3.16/library/imaplib.html#imaplib.IMAP4), но с тех пор это уже не так.7677## Ожидается удаление в Python 3.207879- Вызов метода `__new__()` объекта [`struct.Struct`](https://python-all.ru/3.16/library/struct.html#struct.Struct) без аргумента *format* устарел и будет удалён в Python 3.20. Вызов метода [`__init__()`](https://python-all.ru/3.16/reference/datamodel.html#object.__init__) на инициализированных объектах `Struct` устарел и будет удалён в Python 3.20.8081  (Предложено Сергеем Б. Кирпичевым и Сергеем Сторчакой в [gh-143715](https://python-all.ru/3.16/deprecations/index.html).)82- Атрибуты `__version__`, `version` и `VERSION` устарели в этих модулях стандартной библиотеки и будут удалены в Python 3.20. Вместо них используйте [`sys.version_info`](https://python-all.ru/3.16/library/sys.html#sys.version_info).8384  - [`argparse`](https://python-all.ru/3.16/library/argparse.html#module-argparse)85  - [`csv`](https://python-all.ru/3.16/library/csv.html#module-csv)86  - [`ctypes`](https://python-all.ru/3.16/library/ctypes.html#module-ctypes)87  - `ctypes.macholib`88  - [`decimal`](https://python-all.ru/3.16/library/decimal.html#module-decimal) (вместо используйте [`decimal.SPEC_VERSION`](https://python-all.ru/3.16/library/decimal.html#decimal.SPEC_VERSION))89  - [`http.server`](https://python-all.ru/3.16/library/http.server.html#module-http.server)90  - [`imaplib`](https://python-all.ru/3.16/library/imaplib.html#module-imaplib)91  - [`ipaddress`](https://python-all.ru/3.16/library/ipaddress.html#module-ipaddress)92  - [`json`](https://python-all.ru/3.16/library/json.html#module-json)93  - [`logging`](https://python-all.ru/3.16/library/logging.html#module-logging) (`__date__` также устарел)94  - [`optparse`](https://python-all.ru/3.16/library/optparse.html#module-optparse)95  - [`pickle`](https://python-all.ru/3.16/library/pickle.html#module-pickle)96  - [`platform`](https://python-all.ru/3.16/library/platform.html#module-platform)97  - [`re`](https://python-all.ru/3.16/library/re.html#module-re)98  - [`socketserver`](https://python-all.ru/3.16/library/socketserver.html#module-socketserver)99  - [`tabnanny`](https://python-all.ru/3.16/library/tabnanny.html#module-tabnanny)100  - [`tarfile`](https://python-all.ru/3.16/library/tarfile.html#module-tarfile)101  - [`tkinter.font`](https://python-all.ru/3.16/library/tkinter.font.html#module-tkinter.font)102  - [`tkinter.ttk`](https://python-all.ru/3.16/library/tkinter.ttk.html#module-tkinter.ttk)103  - [`wsgiref.simple_server`](https://python-all.ru/3.16/library/wsgiref.html#module-wsgiref.simple_server)104  - [`xml.etree.ElementTree`](https://python-all.ru/3.16/library/xml.etree.elementtree.html#module-xml.etree.ElementTree)105  - `xml.sax.expatreader`106  - [`xml.sax.handler`](https://python-all.ru/3.16/library/xml.sax.handler.html#module-xml.sax.handler)107  - [`zlib`](https://python-all.ru/3.16/library/zlib.html#module-zlib)108109  (Предложено Хьюго ван Кеменаде и Стэном Ульбрыхом в [gh-76007](https://python-all.ru/3.16/deprecations/index.html).)110- Устаревания, определённые в [**PEP 829**](https://python-all.ru/3.16/deprecations/index.html):111112  - Предупреждения выдаются для строк `import`, найденных в файлах `name.pth`.113  - Файлы `name.pth` больше не декодируются в кодировке локали по умолчанию. Они **ДОЛЖНЫ** быть закодированы в `utf-8-sig`.114115  (Предложено Барри Варшавом в [gh-148641](https://python-all.ru/3.16/deprecations/index.html).)116- [`ast`](https://python-all.ru/3.16/library/ast.html#module-ast):117118  - Создание экземпляров абстрактных узлов AST (таких как [`ast.AST`](https://python-all.ru/3.16/library/ast.html#ast.AST) или `ast.expr`) устарело и будет вызывать ошибку в Python 3.20.119120## Ожидается удаление в Python 3.21121122- [`abc`](https://python-all.ru/3.16/library/abc.html#module-abc)123124  > - Мягко устаревшие с Python 3.3 [`abc.abstractclassmethod`](https://python-all.ru/3.16/library/abc.html#abc.abstractclassmethod), [`abc.abstractstaticmethod`](https://python-all.ru/3.16/library/abc.html#abc.abstractstaticmethod) и [`abc.abstractproperty`](https://python-all.ru/3.16/library/abc.html#abc.abstractproperty) теперь вызывают [`DeprecationWarning`](https://python-all.ru/3.16/library/exceptions.html#DeprecationWarning). Эти классы будут удалены в Python 3.21, вместо них используйте [`abc.abstractmethod()`](https://python-all.ru/3.16/library/abc.html#abc.abstractmethod) с [`classmethod()`](https://python-all.ru/3.16/library/functions.html#classmethod), [`staticmethod()`](https://python-all.ru/3.16/library/functions.html#staticmethod) и [`property`](https://python-all.ru/3.16/library/functions.html#property) соответственно.125- [`ast`](https://python-all.ru/3.16/library/ast.html#module-ast):126127  - Классы `slice`, `Index`, `ExtSlice`, `Suite`, `Param`, `AugLoad` и `AugStore` будут удалены в Python 3.21. Эти типы не создаются синтаксическим анализатором и не принимаются генератором кода.128  - Свойство `dims` объекта `ast.Tuple` будет удалено в Python 3.21. Используйте свойство `ast.Tuple.elts` вместо него.129- [`struct`](https://python-all.ru/3.16/library/struct.html#module-struct):130131  - Мягко устаревшие с Python 3.15, коды типов `'F'` и `'D'` теперь устарели. Эти коды будут удалены в Python 3.21. Используйте вместо них двухбуквенные формы `'Zf'` и `'Zd'`.132- [`tempfile`](https://python-all.ru/3.16/library/tempfile.html#module-tempfile):133134  - `tempfile._TemporaryFileWrapper` будет удалён в Python 3.21. Используйте публичный [`tempfile.TemporaryFileWrapper`](https://python-all.ru/3.16/library/tempfile.html#tempfile.TemporaryFileWrapper) вместо него.135136## Ожидается удаление в будущих версиях137138Следующие API будут удалены в будущем, хотя на данный момент нет запланированной даты их удаления.139140- [`argparse`](https://python-all.ru/3.16/library/argparse.html#module-argparse):141142  - Вложение групп аргументов и вложение взаимоисключающих групп устарело.143  - Передача недокументированного именованного аргумента *prefix\_chars* в [`add_argument_group()`](https://python-all.ru/3.16/library/argparse.html#argparse.ArgumentParser.add_argument_group) теперь устарела.144  - Конвертер типов [`argparse.FileType`](https://python-all.ru/3.16/library/argparse.html#argparse.FileType) устарел.145- [`builtins`](https://python-all.ru/3.16/library/builtins.html#module-builtins):146147  - Генераторы: сигнатура `throw(type, exc, tb)` и `athrow(type, exc, tb)` устарела: используйте `throw(exc)` и `athrow(exc)` вместо неё, сигнатуру с одним аргументом.148  - В настоящее время Python принимает числовые литералы, за которыми сразу следуют ключевые слова, например `0in x`, `1or x`, `0if 1else 2`. Это допускает запутанные и неоднозначные выражения вроде `[0x1for x in y]` (которое может быть интерпретировано как `[0x1 for x in y]` или `[0x1f or x in y]`). Выдаётся предупреждение синтаксиса, если за числовым литералом сразу следует одно из ключевых слов [`and`](https://python-all.ru/3.16/reference/expressions.html#and), [`else`](https://python-all.ru/3.16/reference/compound_stmts.html#else), [`for`](https://python-all.ru/3.16/reference/compound_stmts.html#for), [`if`](https://python-all.ru/3.16/reference/compound_stmts.html#if), [`in`](https://python-all.ru/3.16/reference/expressions.html#in), [`is`](https://python-all.ru/3.16/reference/expressions.html#is) и [`or`](https://python-all.ru/3.16/reference/expressions.html#or). В будущем выпуске это будет изменено на синтаксическую ошибку. ([gh-87999](https://python-all.ru/3.16/deprecations/index.html))149  - Поддержка методов `__index__()` и `__int__()`, возвращающих не-int тип: эти методы должны будут возвращать экземпляр строгого подкласса [`int`](https://python-all.ru/3.16/library/functions.html#int).150  - Поддержка метода `__float__()`, возвращающего строгий подкласс [`float`](https://python-all.ru/3.16/library/functions.html#float): эти методы должны будут возвращать экземпляр `float`.151  - Поддержка метода `__complex__()`, возвращающего строгий подкласс [`complex`](https://python-all.ru/3.16/library/functions.html#complex): эти методы должны будут возвращать экземпляр `complex`.152  - Передача комплексного числа в качестве аргумента *real* или *imag* в конструкторе [`complex()`](https://python-all.ru/3.16/library/functions.html#complex) теперь устарела; его следует передавать только как единственный позиционный аргумент. (Автор: Сергей Сторчака в [gh-109218](https://python-all.ru/3.16/deprecations/index.html).)153- [`calendar`](https://python-all.ru/3.16/library/calendar.html#module-calendar): константы `calendar.January` и `calendar.February` устарели и заменены на [`calendar.JANUARY`](https://python-all.ru/3.16/library/calendar.html#calendar.JANUARY) и [`calendar.FEBRUARY`](https://python-all.ru/3.16/library/calendar.html#calendar.FEBRUARY). (Автор: Prince Roshan в [gh-103636](https://python-all.ru/3.16/deprecations/index.html).)154- [`codecs`](https://python-all.ru/3.16/library/codecs.html#module-codecs): используйте [`open()`](https://python-all.ru/3.16/library/functions.html#open) вместо [`codecs.open()`](https://python-all.ru/3.16/library/codecs.html#codecs.open). ([gh-133038](https://python-all.ru/3.16/deprecations/index.html))155- `codeobject.co_lnotab`: используйте метод [`codeobject.co_lines()`](https://python-all.ru/3.16/reference/datamodel.html#codeobject.co_lines) вместо этого.156- [`datetime`](https://python-all.ru/3.16/library/datetime.html#module-datetime):157158  - [`utcnow()`](https://python-all.ru/3.16/library/datetime.html#datetime.datetime.utcnow): используйте `datetime.datetime.now(tz=datetime.UTC)`.159  - [`utcfromtimestamp()`](https://python-all.ru/3.16/library/datetime.html#datetime.datetime.utcfromtimestamp): используйте `datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)`.160- [`gettext`](https://python-all.ru/3.16/library/gettext.html#module-gettext): значение множественного числа должно быть целым числом.161- [`importlib`](https://python-all.ru/3.16/library/importlib.html#module-importlib):162163  - [`cache_from_source()`](https://python-all.ru/3.16/library/importlib.html#importlib.util.cache_from_source): параметр *debug\_override* устарел: используйте параметр *optimization* вместо него.164- [`importlib.metadata`](https://python-all.ru/3.16/library/importlib.metadata.html#module-importlib.metadata):165166  - `EntryPoints`: интерфейс кортежа.167  - Неявное `None` для возвращаемых значений.168- [`logging`](https://python-all.ru/3.16/library/logging.html#module-logging): метод `warn()` устарел начиная с Python 3.3, используйте [`warning()`](https://python-all.ru/3.16/library/logging.html#logging.warning) вместо него.169- [`mailbox`](https://python-all.ru/3.16/library/mailbox.html#module-mailbox): использование StringIO в режиме ввода и текстовом режиме устарело, используйте BytesIO и двоичный режим.170- [`os`](https://python-all.ru/3.16/library/os.html#module-os): вызов [`os.register_at_fork()`](https://python-all.ru/3.16/library/os.html#os.register_at_fork) в многопоточном процессе.171- [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path): [`os.path.commonprefix()`](https://python-all.ru/3.16/library/os.path.html#os.path.commonprefix) устарела, используйте [`os.path.commonpath()`](https://python-all.ru/3.16/library/os.path.html#os.path.commonpath) для префиксов путей. Функция `os.path.commonprefix()` объявлена устаревшей из-за вводящего в заблуждение названия и модуля. Эта функция небезопасна для использования в качестве префиксов путей, несмотря на то что находится в модуле для работы с путями, что означает, что легко случайно внести уязвимости обхода путей в программы на Python, используя эту функцию.172- `pydoc.ErrorDuringImport`: кортежное значение для параметра *exc\_info* устарело, используйте экземпляр исключения.173- [`re`](https://python-all.ru/3.16/library/re.html#module-re): теперь применяются более строгие правила для числовых ссылок на группы и имён групп в регулярных выражениях. В качестве числовой ссылки теперь принимается только последовательность цифр ASCII. Имя группы в байтовых шаблонах и строках замены теперь может содержать только буквы ASCII, цифры и знак подчёркивания. (Автор: Сергей Сторчака в [gh-91760](https://python-all.ru/3.16/deprecations/index.html).)174- [`shutil`](https://python-all.ru/3.16/library/shutil.html#module-shutil): параметр *onerror* метода [`rmtree()`](https://python-all.ru/3.16/library/shutil.html#shutil.rmtree) устарел в Python 3.12; используйте параметр *onexc* вместо него.175- [`ssl`](https://python-all.ru/3.16/library/ssl.html#module-ssl): опции и протоколы:176177  - [`ssl.SSLContext`](https://python-all.ru/3.16/library/ssl.html#ssl.SSLContext) без аргумента протокол устарело.178  - [`ssl.SSLContext`](https://python-all.ru/3.16/library/ssl.html#ssl.SSLContext): [`set_npn_protocols()`](https://python-all.ru/3.16/library/ssl.html#ssl.SSLContext.set_npn_protocols) и `selected_npn_protocol()` устарели: используйте ALPN вместо них.179  - `ssl.OP_NO_SSL*`: опции180  - `ssl.OP_NO_TLS*`: опции181  - `ssl.PROTOCOL_SSLv3`182  - `ssl.PROTOCOL_TLS`183  - `ssl.PROTOCOL_TLSv1`184  - `ssl.PROTOCOL_TLSv1_1`185  - `ssl.PROTOCOL_TLSv1_2`186  - `ssl.TLSVersion.SSLv3`187  - `ssl.TLSVersion.TLSv1`188  - `ssl.TLSVersion.TLSv1_1`189- [`threading`](https://python-all.ru/3.16/library/threading.html#module-threading): методы190191  - `threading.Condition.notifyAll()`: используйте [`notify_all()`](https://python-all.ru/3.16/library/threading.html#threading.Condition.notify_all).192  - `threading.Event.isSet()`: используйте [`is_set()`](https://python-all.ru/3.16/library/threading.html#threading.Event.is_set).193  - `threading.Thread.isDaemon()`, [`threading.Thread.setDaemon()`](https://python-all.ru/3.16/library/threading.html#threading.Thread.setDaemon): используйте атрибут [`threading.Thread.daemon`](https://python-all.ru/3.16/library/threading.html#threading.Thread.daemon).194  - `threading.Thread.getName()`, [`threading.Thread.setName()`](https://python-all.ru/3.16/library/threading.html#threading.Thread.setName): используйте атрибут [`threading.Thread.name`](https://python-all.ru/3.16/library/threading.html#threading.Thread.name).195  - `threading.currentThread()`: используйте [`threading.current_thread()`](https://python-all.ru/3.16/library/threading.html#threading.current_thread).196  - `threading.activeCount()`: используйте [`threading.active_count()`](https://python-all.ru/3.16/library/threading.html#threading.active_count).197- [`typing.Text`](https://python-all.ru/3.16/library/typing.html#typing.Text) ([gh-92332](https://python-all.ru/3.16/deprecations/index.html)).198- Внутренний класс `typing._UnionGenericAlias` больше не используется для реализации [`typing.Union`](https://python-all.ru/3.16/library/typing.html#typing.Union). Для сохранения совместимости с пользователями, использующими этот закрытый класс, будет предоставлена прослойка совместимости как минимум до Python 3.17. (Автор: Jelle Zijlstra, [gh-105499](https://python-all.ru/3.16/deprecations/index.html).)199- [`unittest.IsolatedAsyncioTestCase`](https://python-all.ru/3.16/library/unittest.html#unittest.IsolatedAsyncioTestCase): возврат значения, не являющегося `None`, из тестового примера устарел.200- [`urllib.parse`](https://python-all.ru/3.16/library/urllib.parse.html#module-urllib.parse) устаревшие функции: используйте [`urlparse()`](https://python-all.ru/3.16/library/urllib.parse.html#urllib.parse.urlparse) вместо них.201202  - `splitattr()`203  - `splithost()`204  - `splitnport()`205  - `splitpasswd()`206  - `splitport()`207  - `splitquery()`208  - `splittag()`209  - `splittype()`210  - `splituser()`211  - `splitvalue()`212  - `to_bytes()`213- [`wsgiref`](https://python-all.ru/3.16/library/wsgiref.html#module-wsgiref): `SimpleHandler.stdout.write()` не должна выполнять частичную запись.214- [`xml.etree.ElementTree`](https://python-all.ru/3.16/library/xml.etree.elementtree.html#module-xml.etree.ElementTree): проверка истинностного значения [`Element`](https://python-all.ru/3.16/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element) устарела. В будущем выпуске она всегда будет возвращать `True`. Вместо этого используйте явные проверки `len(elem)` или `elem is not None`.215- [`sys._clear_type_cache()`](https://python-all.ru/3.16/library/sys.html#sys._clear_type_cache) устарело: используйте [`sys._clear_internal_caches()`](https://python-all.ru/3.16/library/sys.html#sys._clear_internal_caches) вместо него.216217## Мягкие устаревания218219Планов по удалению [мягко устаревших](https://python-all.ru/3.16/glossary.html#term-soft-deprecated) API нет.220221- [`re.match()`](https://python-all.ru/3.16/library/re.html#re.match) и [`re.Pattern.match()`](https://python-all.ru/3.16/library/re.html#re.Pattern.match) теперь [мягко устарели](https://python-all.ru/3.16/glossary.html#term-soft-deprecated) в пользу новых API [`re.prefixmatch()`](https://python-all.ru/3.16/library/re.html#re.prefixmatch) и [`re.Pattern.prefixmatch()`](https://python-all.ru/3.16/library/re.html#re.Pattern.prefixmatch), которые были добавлены как альтернативные, более явные имена. Они предназначены для устранения путаницы относительно того, что означает *match*, следуя мантре Дзена Python *«Явное лучше неявного»*. Большинство других библиотек регулярных выражений используют API с именем *match* для обозначения того, что в Python всегда называлось *search*.222223  Мы **не** планируем удалять старое имя `match()`, так как оно используется в коде более 30 лет. Код, поддерживающий старые версии Python, должен продолжать использовать `match()`, а в новом коде следует предпочитать `prefixmatch()`. См. [prefixmatch() vs. match()](https://python-all.ru/3.16/library/re.html#prefixmatch-vs-match).224225  (Авторы: Gregory P. Smith, [gh-86519](https://python-all.ru/3.16/deprecations/index.html), и Hugo van Kemenade, [gh-148100](https://python-all.ru/3.16/deprecations/index.html).)226227## Устаревания в C API228229### Запланировано удаление в Python 3.18230231- Следующие закрытые функции устарели и планируются к удалению в Python 3.18:232233  - `_PyBytes_Join()`: используйте [`PyBytes_Join()`](https://python-all.ru/3.16/c-api/bytes.html#c.PyBytes_Join).234  - `_PyDict_GetItemStringWithError()`: используйте [`PyDict_GetItemStringRef()`](https://python-all.ru/3.16/c-api/dict.html#c.PyDict_GetItemStringRef).235  - `_PyDict_Pop()`: используйте [`PyDict_Pop()`](https://python-all.ru/3.16/c-api/dict.html#c.PyDict_Pop).236  - `_PyLong_Sign()`: используйте [`PyLong_GetSign()`](https://python-all.ru/3.16/c-api/long.html#c.PyLong_GetSign).237  - `_PyLong_FromDigits()` и `_PyLong_New()`: используйте [`PyLongWriter_Create()`](https://python-all.ru/3.16/c-api/long.html#c.PyLongWriter_Create).238  - `_PyThreadState_UncheckedGet()`: используйте [`PyThreadState_GetUnchecked()`](https://python-all.ru/3.16/c-api/threads.html#c.PyThreadState_GetUnchecked).239  - `_PyUnicode_AsString()`: используйте [`PyUnicode_AsUTF8()`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicode_AsUTF8).240  - `_PyUnicodeWriter_Init()`: замените `_PyUnicodeWriter_Init(&writer)` на [`writer = PyUnicodeWriter_Create(0)`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicodeWriter_Create).241  - `_PyUnicodeWriter_Finish()`: замените `_PyUnicodeWriter_Finish(&writer)` на [`PyUnicodeWriter_Finish(writer)`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicodeWriter_Finish).242  - `_PyUnicodeWriter_Dealloc()`: замените `_PyUnicodeWriter_Dealloc(&writer)` на [`PyUnicodeWriter_Discard(writer)`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicodeWriter_Discard).243  - `_PyUnicodeWriter_WriteChar()`: замените `_PyUnicodeWriter_WriteChar(&writer, ch)` на [`PyUnicodeWriter_WriteChar(writer, ch)`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicodeWriter_WriteChar).244  - `_PyUnicodeWriter_WriteStr()`: замените `_PyUnicodeWriter_WriteStr(&writer, str)` на [`PyUnicodeWriter_WriteStr(writer, str)`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicodeWriter_WriteStr).245  - `_PyUnicodeWriter_WriteSubstring()`: замените `_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)` на [`PyUnicodeWriter_WriteSubstring(writer, str, start, end)`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicodeWriter_WriteSubstring).246  - `_PyUnicodeWriter_WriteASCIIString()`: заменить `_PyUnicodeWriter_WriteASCIIString(&writer, str)` на [`PyUnicodeWriter_WriteASCII(writer, str)`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicodeWriter_WriteASCII).247  - `_PyUnicodeWriter_WriteLatin1String()`: заменить `_PyUnicodeWriter_WriteLatin1String(&writer, str)` на [`PyUnicodeWriter_WriteUTF8(writer, str)`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicodeWriter_WriteUTF8).248  - `_PyUnicodeWriter_Prepare()`: (нет замены).249  - `_PyUnicodeWriter_PrepareKind()`: (нет замены).250  - `_Py_HashPointer()`: используйте [`Py_HashPointer()`](https://python-all.ru/3.16/c-api/hash.html#c.Py_HashPointer).251  - `_Py_fopen_obj()`: используйте [`Py_fopen()`](https://python-all.ru/3.16/c-api/sys.html#c.Py_fopen).252  - [`PyGen_New()`](https://python-all.ru/3.16/c-api/gen.html#c.PyGen_New): (нет замены).253  - [`PyGen_NewWithQualName()`](https://python-all.ru/3.16/c-api/gen.html#c.PyGen_NewWithQualName): (нет замены).254  - [`PyCoro_New()`](https://python-all.ru/3.16/c-api/coro.html#c.PyCoro_New): (нет замены).255  - [`PyAsyncGen_New()`](https://python-all.ru/3.16/c-api/gen.html#c.PyAsyncGen_New): (нет замены).256257  Проект [pythoncapi-compat](https://python-all.ru/3.16/deprecations/index.html) можно использовать для получения этих новых открытых функций в Python 3.13 и старше. (Предложено Виктором Стиннером в [gh-128863](https://python-all.ru/3.16/deprecations/index.html).)258259### Запланировано к удалению в Python 3.19260261- [**PEP 456**](https://python-all.ru/3.16/deprecations/index.html) поддержка встраивающих систем для определения схемы хеширования строк.262263### Будет удалено в Python 3.20264265- `_PyObject_CallMethodId()`, `_PyObject_GetAttrId()` и `_PyUnicode_FromId()` устарели с версии 3.15 и будут удалены в 3.20. Вместо этого используйте [`PyUnicode_InternFromString()`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicode_InternFromString) и кешируйте результат в состоянии модуля, затем вызывайте [`PyObject_CallMethod()`](https://python-all.ru/3.16/c-api/call.html#c.PyObject_CallMethod) или [`PyObject_GetAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetAttr). (Предложено Виктором Стиннером в [gh-141049](https://python-all.ru/3.16/deprecations/index.html).)266- Поле `cval` в [`PyComplexObject`](https://python-all.ru/3.16/c-api/complex.html#c.PyComplexObject) ([gh-128813](https://python-all.ru/3.16/deprecations/index.html)). Используйте [`PyComplex_AsCComplex()`](https://python-all.ru/3.16/c-api/complex.html#c.PyComplex_AsCComplex) и [`PyComplex_FromCComplex()`](https://python-all.ru/3.16/c-api/complex.html#c.PyComplex_FromCComplex) для преобразования комплексного числа Python в/из представления C [`Py_complex`](https://python-all.ru/3.16/c-api/complex.html#c.Py_complex) .267- Макросы `Py_MATH_PIl` и `Py_MATH_El`.268269### Будет удалено в будущих версиях270271Следующие API устарели и будут удалены, хотя на данный момент дата их удаления не назначена.272273- [`Py_TPFLAGS_HAVE_FINALIZE`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_TPFLAGS_HAVE_FINALIZE): Не требуется начиная с Python 3.8.274- [`PyErr_Fetch()`](https://python-all.ru/3.16/c-api/exceptions.html#c.PyErr_Fetch): Вместо этого используйте [`PyErr_GetRaisedException()`](https://python-all.ru/3.16/c-api/exceptions.html#c.PyErr_GetRaisedException).275- [`PyErr_NormalizeException()`](https://python-all.ru/3.16/c-api/exceptions.html#c.PyErr_NormalizeException): Вместо этого используйте [`PyErr_GetRaisedException()`](https://python-all.ru/3.16/c-api/exceptions.html#c.PyErr_GetRaisedException).276- [`PyErr_Restore()`](https://python-all.ru/3.16/c-api/exceptions.html#c.PyErr_Restore): Вместо этого используйте [`PyErr_SetRaisedException()`](https://python-all.ru/3.16/c-api/exceptions.html#c.PyErr_SetRaisedException).277- [`PyModule_GetFilename()`](https://python-all.ru/3.16/c-api/module.html#c.PyModule_GetFilename): Вместо этого используйте [`PyModule_GetFilenameObject()`](https://python-all.ru/3.16/c-api/module.html#c.PyModule_GetFilenameObject).278- [`PyOS_AfterFork()`](https://python-all.ru/3.16/c-api/sys.html#c.PyOS_AfterFork): Вместо этого используйте [`PyOS_AfterFork_Child()`](https://python-all.ru/3.16/c-api/sys.html#c.PyOS_AfterFork_Child).279- [`PySlice_GetIndicesEx()`](https://python-all.ru/3.16/c-api/slice.html#c.PySlice_GetIndicesEx): Вместо этого используйте [`PySlice_Unpack()`](https://python-all.ru/3.16/c-api/slice.html#c.PySlice_Unpack) и [`PySlice_AdjustIndices()`](https://python-all.ru/3.16/c-api/slice.html#c.PySlice_AdjustIndices).280- [`PyUnicode_READY()`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicode_READY): Не требуется начиная с Python 3.12281- `PyErr_Display()`: Вместо этого используйте [`PyErr_DisplayException()`](https://python-all.ru/3.16/c-api/exceptions.html#c.PyErr_DisplayException).282- `_PyErr_ChainExceptions()`: Вместо этого используйте `_PyErr_ChainExceptions1()`.283- Элемент `PyBytesObject.ob_shash`: вместо этого вызывайте [`PyObject_Hash()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_Hash).284- API локального хранилища потока (TLS):285286  - [`PyThread_create_key()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_create_key): Вместо этого используйте [`PyThread_tss_alloc()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_tss_alloc).287  - [`PyThread_delete_key()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_delete_key): Вместо этого используйте [`PyThread_tss_free()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_tss_free).288  - [`PyThread_set_key_value()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_set_key_value): Вместо этого используйте [`PyThread_tss_set()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_tss_set).289  - [`PyThread_get_key_value()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_get_key_value): Вместо этого используйте [`PyThread_tss_get()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_tss_get).290  - [`PyThread_delete_key_value()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_delete_key_value): Вместо этого используйте [`PyThread_tss_delete()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_tss_delete).291  - [`PyThread_ReInitTLS()`](https://python-all.ru/3.16/c-api/tls.html#c.PyThread_ReInitTLS): Не требуется с Python 3.7.292