Spec-Zone.ru › Python 3.14

Устаревшие возможности

Планируется удаление в Python 3.15

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

    • Установка __cached__ для модуля без установки __spec__.cached считается устаревшей. В Python 3.15 __cached__ больше не будет устанавливаться или учитываться системой импорта либо стандартной библиотекой. (gh-97879)
    • Установка __package__ для модуля без установки __spec__.parent считается устаревшей. В Python 3.15 __package__ больше не будет устанавливаться или учитываться системой импорта либо стандартной библиотекой. (gh-97879)
  • ctypes:

    • Недокументированная функция ctypes.SetPointerType() считается устаревшей начиная с Python 3.13.
  • http.server:

    • Устаревший и редко используемый класс CGIHTTPRequestHandler считается устаревшим начиная с Python 3.13. Прямой замены ему нет. Для связи веб-сервера с обработчиком запросов что угодно лучше, чем CGI.
    • Флаг --cgi интерфейса командной строки python -m http.server считается устаревшим начиная с Python 3.13.
  • importlib:

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

    • PurePath.is_reserved() считается устаревшим начиная с Python 3.13. Для обнаружения зарезервированных путей в Windows используйте os.path.isreserved().
  • platform:

    • java_ver() считается устаревшей начиная с Python 3.13. Эта функция полезна только для поддержки Jython, имеет запутанный API и практически не тестируется.
  • sysconfig:

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

    • В Python 3.15 RLock() не будет принимать аргументы. Передача любых аргументов считается устаревшей начиная с Python 3.14: версия на Python не допускает аргументов, а версия на C принимает любое число позиционных и именованных аргументов, игнорируя каждый из них.
  • types:

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

    • Недокументированный синтаксис с именованными аргументами для создания классов NamedTuple (например, Point = NamedTuple("Point", x=int, y=int)) считается устаревшим начиная с Python 3.13. Вместо него используйте синтаксис на основе классов или функциональный синтаксис.
    • При использовании функционального синтаксиса TypedDict передача параметру fields значения (TD = TypedDict("TD")) или передача None (TD = TypedDict("TD", None)) считается устаревшей начиная с Python 3.13. Для создания TypedDict без полей используйте class TD(TypedDict): pass или TD = TypedDict("TD", {}).
    • Функция-декоратор @typing.no_type_check_decorator считается устаревшей начиная с Python 3.13. За восемь лет существования в модуле typing её так и не реализовал ни один крупный анализатор типов.
  • wave:

    • Методы getmark(), setmark() и getmarkers() классов Wave_read и Wave_write считаются устаревшими начиная с Python 3.13.
  • zipimport:

    • load_module() считается устаревшим начиная с Python 3.10. Вместо него используйте exec_module(). (Вклад внесён Цзяхао Ли в gh-125746.)

Планируется удаление в Python 3.16

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

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

    • Код формата 'u' (wchar_t) считается устаревшим в документации начиная с Python 3.3, а во время выполнения — начиная с Python 3.13. Вместо него используйте код формата 'w' (Py_UCS4) для символов Unicode.
  • asyncio:

    • asyncio.iscoroutinefunction() считается устаревшей и будет удалена в Python 3.16; вместо неё используйте inspect.iscoroutinefunction(). (Вклад внесли Цзяхао Ли и Кумар Адитья в gh-122875.)
    • Система политик asyncio считается устаревшей и будет удалена в Python 3.16. В частности, следующие классы и функции считаются устаревшими:

      • asyncio.AbstractEventLoopPolicy
      • asyncio.DefaultEventLoopPolicy
      • asyncio.WindowsSelectorEventLoopPolicy
      • asyncio.WindowsProactorEventLoopPolicy
      • asyncio.get_event_loop_policy()
      • asyncio.set_event_loop_policy()

      Для использования желаемой реализации цикла событий пользователям следует вызывать asyncio.run() или asyncio.Runner, указав loop_factory.

      Например, чтобы использовать asyncio.SelectorEventLoop в Windows:

      import asyncio
      
      async def main():
          ...
      
      asyncio.run(main(), loop_factory=asyncio.SelectorEventLoop)
      

      (Вклад внесён Кумаром Адитьей в gh-127949.)

  • builtins:

    • Побитовое отрицание значений логического типа, ~True или ~False, считается устаревшим начиная с Python 3.12, поскольку оно приводит к неожиданным и неинтуитивным результатам (-2 и -1). Для логического отрицания значения Boolean используйте not x. В редких случаях, когда требуется побитовое отрицание базового целого числа, явно преобразуйте значение в int (~int(x)).
  • functools:

    • Вызов реализации functools.reduce() на Python с передачей function или sequence в качестве именованных аргументов считается устаревшим начиная с Python 3.14.
  • logging:

    Поддержка пользовательских обработчиков журналирования с аргументом strm считается устаревшей; её планируется удалить в Python 3.16. Вместо этого определяйте обработчики с аргументом stream. (Вклад внесён Мариушем Фелисияком в gh-115032.)

  • mimetypes:

    • Для mimetypes.MimeTypes.add_type() допустимы расширения, начинающиеся с «.» или являющиеся пустыми. Расширения без точки считаются устаревшими; в Python 3.16 они будут вызывать ValueError. (Вклад внесён Уго ван Кеменаде в gh-75223.)
  • shutil:

    • Исключение ExecError считается устаревшим начиная с Python 3.14. Ни одна функция в shutil не использует его с Python 3.4; теперь это псевдоним RuntimeError.
  • symtable:

    • Метод Class.get_methods считается устаревшим начиная с Python 3.14.
  • sys:

    • Функция _enablelegacywindowsfsencoding() считается устаревшей начиная с Python 3.13. Вместо неё используйте переменную среды PYTHONLEGACYWINDOWSFSENCODING.
  • sysconfig:

    • Функция sysconfig.expand_makefile_vars() считается устаревшей начиная с Python 3.14. Вместо неё используйте аргумент vars функции sysconfig.get_paths().
  • tarfile:

    • Недокументированный и неиспользуемый атрибут TarFile.tarfile считается устаревшим начиная с Python 3.13.

Планируется удаление в Python 3.17

  • collections.abc:

    • collections.abc.ByteString планируется удалить в Python 3.17.

      Для проверки во время выполнения того, что obj реализует протокол буфера, используйте isinstance(obj, collections.abc.Buffer). В аннотациях типов используйте либо Buffer, либо объединение типов, явно перечисляющее типы, поддерживаемые вашим кодом (например, bytes | bytearray | memoryview).

      Изначально предполагалось, что ByteString будет абстрактным классом, выступающим в качестве суперкласса для bytes и bytearray. Однако, поскольку у ABC никогда не было методов, знание о том, что объект является экземпляром ByteString, на самом деле ничего полезного об объекте не сообщало. Другие распространённые типы буферов, например memoryview, также никогда не считались подтипами ByteString (ни во время выполнения, ни статическими анализаторами типов).

      Подробнее см. PEP 688. (Вклад внёс Шантану Джейн в gh-91896.)

  • typing:

    • До Python 3.14 объединения старого стиля реализовывались с помощью закрытого класса typing._UnionGenericAlias. Этот класс больше не нужен для реализации, но сохранён для обратной совместимости; его удаление запланировано в Python 3.17. Вместо обращения к закрытым деталям реализации пользователям следует использовать документированные средства интроспекции, например typing.get_origin() и typing.get_args().
    • typing.ByteString, признанный устаревшим начиная с Python 3.9, планируется удалить в Python 3.17.

      Для проверки во время выполнения того, что obj реализует протокол буфера, используйте isinstance(obj, collections.abc.Buffer). В аннотациях типов используйте либо Buffer, либо объединение типов, явно перечисляющее типы, поддерживаемые вашим кодом (например, bytes | bytearray | memoryview).

      Изначально предполагалось, что ByteString будет абстрактным классом, выступающим в качестве суперкласса для bytes и bytearray. Однако, поскольку у ABC никогда не было методов, знание о том, что объект является экземпляром ByteString, на самом деле ничего полезного об объекте не сообщало. Другие распространённые типы буферов, например memoryview, также никогда не считались подтипами ByteString (ни во время выполнения, ни статическими анализаторами типов).

      Подробнее см. PEP 688. (Вклад внёс Шантану Джейн в gh-91896.)

Планируется удаление в Python 3.18

  • decimal:

    • Нестандартный и недокументированный спецификатор формата Decimal 'N', поддерживаемый только реализацией на C модуля decimal, считается устаревшим начиная с Python 3.13. (Вклад внёс Сергей Сторчака в gh-89902.)

Планируется удаление в Python 3.19

  • ctypes:

    • Неявное переключение на совместимую с MSVC раскладку структур при установке _pack_ без установки _layout_ на платформах, отличных от Windows.

Планируется удаление в будущих версиях

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

  • argparse:

    • Вложенные группы аргументов и вложенные взаимоисключающие группы считаются устаревшими.
    • Передача недокументированного именованного аргумента prefix_chars в add_argument_group() теперь считается устаревшей.
    • Преобразователь типов argparse.FileType считается устаревшим.
  • builtins:

    • Генераторы: сигнатура 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.
    • Передача комплексного числа в качестве аргумента real или imag конструктору complex() теперь считается устаревшей; такое число следует передавать только как единственный позиционный аргумент. (Добавлено Сергеем Сторчаком в gh-109218.)
  • calendar: константы calendar.January и calendar.February считаются устаревшими и заменены на calendar.JANUARY и calendar.FEBRUARY. (Добавлено Принсом Рошаном в gh-103636.)
  • codecs: используйте open() вместо codecs.open(). (gh-133038)
  • codeobject.co_lnotab: вместо него используйте метод codeobject.co_lines().
  • datetime:

    • utcnow(): используйте datetime.datetime.now(tz=datetime.UTC).
    • utcfromtimestamp(): используйте datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC).
  • gettext: значение для множественного числа должно быть целым числом.
  • importlib:

    • Параметр debug_override функции cache_from_source() считается устаревшим: вместо него используйте параметр optimization.
  • importlib.metadata:

    • Интерфейс кортежа EntryPoints.
    • Неявное None возвращаемых значений.
  • logging: метод warn() считается устаревшим с Python 3.3; вместо него используйте warning().
  • 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:

    • threading.Condition.notifyAll(): используйте notify_all().
    • threading.Event.isSet(): используйте is_set().
    • threading.Thread.isDaemon(), threading.Thread.setDaemon(): используйте атрибут threading.Thread.daemon.
    • threading.Thread.getName(), threading.Thread.setName(): используйте атрибут threading.Thread.name.
    • threading.currentThread(): используйте threading.current_thread().
    • threading.activeCount(): используйте threading.active_count().
  • typing.Text (gh-92332).
  • Внутренний класс typing._UnionGenericAlias больше не используется для реализации typing.Union. Для обеспечения совместимости с пользователями этого закрытого класса shim совместимости будет предоставляться как минимум до Python 3.17. (Добавлено Йелле Зейлстрой в gh-105499.)
  • unittest.IsolatedAsyncioTestCase: возвращать из тестового случая значение, отличное от None, считается устаревшим.
  • Устаревшие функции urllib.parse: вместо них используйте urlparse()

    • splitattr()
    • splithost()
    • splitnport()
    • splitpasswd()
    • splitport()
    • splitquery()
    • splittag()
    • splittype()
    • splituser()
    • splitvalue()
    • to_bytes()
  • wsgiref: SimpleHandler.stdout.write() не должен выполнять частичную запись.
  • xml.etree.ElementTree: проверка логического значения Element считается устаревшей. В будущей версии она всегда будет возвращать True. Вместо этого предпочтительнее явно проверять len(elem) или elem is not None.
  • sys._clear_type_cache() считается устаревшим: вместо него используйте sys._clear_internal_caches().

Устаревшие элементы C API

Планируется удалить в Python 3.15

  • The PyImport_ImportModuleNoBlock(): Вместо этого используйте PyImport_ImportModule().
  • PyWeakref_GetObject() и PyWeakref_GET_OBJECT(): Вместо этого используйте PyWeakref_GetRef(). Для использования PyWeakref_GetRef() в Python 3.12 и более ранних версиях можно воспользоваться проектом pythoncapi-compat.
  • Тип Py_UNICODE и макрос Py_UNICODE_WIDE: Вместо этого используйте wchar_t.
  • PyUnicode_AsDecodedObject(): Вместо этого используйте PyCodec_Decode().
  • PyUnicode_AsDecodedUnicode(): Вместо этого используйте PyCodec_Decode(). Обратите внимание, что некоторые кодеки (например, «base64») могут возвращать тип, отличный от str, например bytes.
  • PyUnicode_AsEncodedObject(): Вместо этого используйте PyCodec_Encode().
  • PyUnicode_AsEncodedUnicode(): Вместо этого используйте PyCodec_Encode(). Обратите внимание, что некоторые кодеки (например, «base64») могут возвращать тип, отличный от bytes, например str.
  • Функции инициализации Python, объявленные устаревшими в Python 3.13:

    • Py_GetPath(): Вместо этого используйте PyConfig_Get("module_search_paths") (sys.path).
    • Py_GetPrefix(): Вместо этого используйте PyConfig_Get("base_prefix") (sys.base_prefix). Используйте PyConfig_Get("prefix") (sys.prefix), если необходимо учитывать виртуальные окружения.
    • Py_GetExecPrefix(): Вместо этого используйте PyConfig_Get("base_exec_prefix") (sys.base_exec_prefix). Используйте PyConfig_Get("exec_prefix") (sys.exec_prefix), если необходимо учитывать виртуальные окружения.
    • Py_GetProgramFullPath(): Вместо этого используйте PyConfig_Get("executable") (sys.executable).
    • Py_GetProgramName(): Вместо этого используйте PyConfig_Get("executable") (sys.executable).
    • Py_GetPythonHome(): Вместо этого используйте PyConfig_Get("home") или переменную окружения PYTHONHOME.

    Для использования PyConfig_Get() в Python 3.13 и более ранних версиях можно воспользоваться проектом pythoncapi-compat.

  • Функции настройки инициализации Python, объявленные устаревшими в Python 3.11:

    • PySys_SetArgvEx(): Вместо этого задайте PyConfig.argv.
    • PySys_SetArgv(): Вместо этого задайте PyConfig.argv.
    • Py_SetProgramName(): Вместо этого задайте PyConfig.program_name.
    • Py_SetPythonHome(): Вместо этого задайте PyConfig.home.
    • PySys_ResetWarnOptions(): Вместо этого очистите sys.warnoptions и warnings.filters.

    Вместо этого следует использовать API Py_InitializeFromConfig() вместе с PyConfig.

  • Глобальные переменные конфигурации:

    • Py_DebugFlag: Вместо этого используйте PyConfig.parser_debug или PyConfig_Get("parser_debug").
    • Py_VerboseFlag: Вместо этого используйте PyConfig.verbose или PyConfig_Get("verbose").
    • Py_QuietFlag: Вместо этого используйте PyConfig.quiet или PyConfig_Get("quiet").
    • Py_InteractiveFlag: Вместо этого используйте PyConfig.interactive или PyConfig_Get("interactive").
    • Py_InspectFlag: Вместо этого используйте PyConfig.inspect или PyConfig_Get("inspect").
    • Py_OptimizeFlag: Вместо этого используйте PyConfig.optimization_level или PyConfig_Get("optimization_level").
    • Py_NoSiteFlag: Вместо этого используйте PyConfig.site_import или PyConfig_Get("site_import").
    • Py_BytesWarningFlag: Вместо этого используйте PyConfig.bytes_warning или PyConfig_Get("bytes_warning").
    • Py_FrozenFlag: Вместо этого используйте PyConfig.pathconfig_warnings или PyConfig_Get("pathconfig_warnings").
    • Py_IgnoreEnvironmentFlag: Вместо этого используйте PyConfig.use_environment или PyConfig_Get("use_environment").
    • Py_DontWriteBytecodeFlag: Вместо этого используйте PyConfig.write_bytecode или PyConfig_Get("write_bytecode").
    • Py_NoUserSiteDirectory: Вместо этого используйте PyConfig.user_site_directory или PyConfig_Get("user_site_directory").
    • Py_UnbufferedStdioFlag: Вместо этого используйте PyConfig.buffered_stdio или PyConfig_Get("buffered_stdio").
    • Py_HashRandomizationFlag: Вместо этого используйте PyConfig.use_hash_seed и PyConfig.hash_seed или PyConfig_Get("hash_seed").
    • Py_IsolatedFlag: Вместо этого используйте PyConfig.isolated или PyConfig_Get("isolated").
    • Py_LegacyWindowsFSEncodingFlag: Вместо этого используйте PyPreConfig.legacy_windows_fs_encoding или PyConfig_Get("legacy_windows_fs_encoding").
    • Py_LegacyWindowsStdioFlag: Вместо этого используйте PyConfig.legacy_windows_stdio или PyConfig_Get("legacy_windows_stdio").
    • Py_FileSystemDefaultEncoding, Py_HasFileSystemDefaultEncoding: Вместо этого используйте PyConfig.filesystem_encoding или PyConfig_Get("filesystem_encoding").
    • Py_FileSystemDefaultEncodeErrors: Вместо этого используйте PyConfig.filesystem_errors или PyConfig_Get("filesystem_errors").
    • Py_UTF8Mode: Вместо этого используйте PyPreConfig.utf8_mode или PyConfig_Get("utf8_mode"). (см. Py_PreInitialize())

    Для задания этих параметров следует использовать API Py_InitializeFromConfig() вместе с PyConfig. Чтобы получить значения этих параметров во время выполнения, можно использовать PyConfig_Get().

Планируется удалить в Python 3.18

  • Следующие закрытые функции объявлены устаревшими и планируются к удалению в Python 3.18:

    • _PyBytes_Join(): используйте PyBytes_Join().
    • _PyDict_GetItemStringWithError(): используйте PyDict_GetItemStringRef().
    • _PyDict_Pop(): используйте PyDict_Pop().
    • _PyLong_Sign(): используйте PyLong_GetSign().
    • _PyLong_FromDigits() и _PyLong_New(): используйте PyLongWriter_Create().
    • _PyThreadState_UncheckedGet(): используйте PyThreadState_GetUnchecked().
    • _PyUnicode_AsString(): используйте PyUnicode_AsUTF8().
    • _PyUnicodeWriter_Init(): замените _PyUnicodeWriter_Init(&writer) на writer = PyUnicodeWriter_Create(0).
    • _PyUnicodeWriter_Finish(): замените _PyUnicodeWriter_Finish(&writer) на PyUnicodeWriter_Finish(writer).
    • _PyUnicodeWriter_Dealloc(): замените _PyUnicodeWriter_Dealloc(&writer) на PyUnicodeWriter_Discard(writer).
    • _PyUnicodeWriter_WriteChar(): замените _PyUnicodeWriter_WriteChar(&writer, ch) на PyUnicodeWriter_WriteChar(writer, ch).
    • _PyUnicodeWriter_WriteStr(): замените _PyUnicodeWriter_WriteStr(&writer, str) на PyUnicodeWriter_WriteStr(writer, str).
    • _PyUnicodeWriter_WriteSubstring(): замените _PyUnicodeWriter_WriteSubstring(&writer, str, start, end) на PyUnicodeWriter_WriteSubstring(writer, str, start, end).
    • _PyUnicodeWriter_WriteASCIIString(): замените _PyUnicodeWriter_WriteASCIIString(&writer, str) на PyUnicodeWriter_WriteASCII(writer, str).
    • _PyUnicodeWriter_WriteLatin1String(): замените _PyUnicodeWriter_WriteLatin1String(&writer, str) на PyUnicodeWriter_WriteUTF8(writer, str).
    • _PyUnicodeWriter_Prepare(): (замены нет).
    • _PyUnicodeWriter_PrepareKind(): (замены нет).
    • _Py_HashPointer(): используйте Py_HashPointer().
    • _Py_fopen_obj(): используйте Py_fopen().

    Для использования этих новых общедоступных функций в Python 3.13 и более ранних версиях можно воспользоваться проектом pythoncapi-compat. (Предложено Виктором Стиннером в gh-128863.)

Планируется удалить в будущих версиях

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

  • Py_TPFLAGS_HAVE_FINALIZE: Не требуется начиная с Python 3.8.
  • PyErr_Fetch(): Вместо этого используйте PyErr_GetRaisedException().
  • PyErr_NormalizeException(): Вместо этого используйте PyErr_GetRaisedException().
  • PyErr_Restore(): Вместо этого используйте PyErr_SetRaisedException().
  • PyModule_GetFilename(): Вместо этого используйте PyModule_GetFilenameObject().
  • PyOS_AfterFork(): Вместо этого используйте PyOS_AfterFork_Child().
  • PySlice_GetIndicesEx(): Вместо этого используйте PySlice_Unpack() и PySlice_AdjustIndices().
  • PyUnicode_READY(): Не требуется начиная с Python 3.12
  • PyErr_Display(): Вместо этого используйте PyErr_DisplayException().
  • _PyErr_ChainExceptions(): Вместо этого используйте _PyErr_ChainExceptions1().
  • Поле PyBytesObject.ob_shash: вместо этого вызовите PyObject_Hash().
  • API локального хранилища потоков (TLS):

    • PyThread_create_key(): Вместо этого используйте PyThread_tss_alloc().
    • PyThread_delete_key(): Вместо этого используйте PyThread_tss_free().
    • PyThread_set_key_value(): Вместо этого используйте PyThread_tss_set().
    • PyThread_get_key_value(): Вместо этого используйте PyThread_tss_get().
    • PyThread_delete_key_value(): Вместо этого используйте PyThread_tss_delete().
    • PyThread_ReInitTLS(): Не требуется начиная с Python 3.7.

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/deprecations/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API