Устаревшие возможности
Будут удалены в Python 3.14
-
argparse: параметры type, choices и metavar вargparse.BooleanOptionalActionустарели и будут удалены в версии 3.14. (Добавлено Никитой Соболевым в gh-92248.) -
ast: следующие возможности были объявлены устаревшими в документации начиная с Python 3.8, теперь при обращении к ним или их использовании во время выполнения выдают предупреждениеDeprecationWarningи будут удалены в Python 3.14:ast.Numast.Strast.Bytesast.NameConstantast.Ellipsis
Вместо этого используйте
ast.Constant. (Добавлено Сергеем Сторчаком в gh-90953.) -
- Классы наблюдателей дочерних процессов
MultiLoopChildWatcher,FastChildWatcher,AbstractChildWatcherиSafeChildWatcherустарели и будут удалены в Python 3.14. (Добавлено Кумаром Адитьей в gh-94597.) -
asyncio.set_child_watcher(),asyncio.get_child_watcher(),asyncio.AbstractEventLoopPolicy.set_child_watcher()иasyncio.AbstractEventLoopPolicy.get_child_watcher()устарели и будут удалены в Python 3.14. (Добавлено Кумаром Адитьей в gh-94597.) - Метод
get_event_loop()политики цикла событий по умолчанию теперь выдает предупреждениеDeprecationWarning, если текущий цикл событий не задан и метод решает создать его. (Добавлено Сергеем Сторчаком и Гвидо ван Россумом в gh-100160.)
- Классы наблюдателей дочерних процессов
-
builtins:bool(NotImplemented)теперь выдает предупреждениеDeprecationWarning, а в Python 3.14 будет возбуждать исключениеTypeError. (Добавлено Йелле Зейлстрой в gh-118767.) -
email: параметр isdst вemail.utils.localtime()объявлен устаревшим. (Добавлено Аланом Уильямсом в gh-72346.) -
Устаревшие классы
importlib.abc:importlib.abc.ResourceReaderimportlib.abc.Traversableimportlib.abc.TraversableResources
Вместо них используйте классы
importlib.resources.abc:(Добавлено Джейсоном Р. Кумбсом и Хьюго ван Кеменаде в gh-93963.)
-
itertoolsимел неподокументированную, неэффективную, исторически проблемную и непоследовательную поддержку операций копирования, глубокого копирования и pickle. Она будет удалена в версии 3.14, что значительно сократит объем кода и расходы на его сопровождение. (Добавлено Рэймондом Хеттингером в gh-101588.) -
multiprocessing: в Linux, BSD и других POSIX-платформах, кроме macOS, где сейчас по умолчанию используется'fork', метод запуска по умолчанию изменится на более безопасный (gh-84559). Добавление предупреждения во время выполнения сочли слишком disruptive, поскольку предполагается, что большинству кода это не важно. Используйте APIget_context()илиset_start_method(), чтобы явно указать, когда вашему коду требуется'fork'. См. Контексты и методы запуска. -
pathlib: передача дополнительных аргументов вis_relative_to()иrelative_to()объявлена устаревшей. -
pkgutil:find_loader()иget_loader()теперь выдают предупреждениеDeprecationWarning; вместо них используйтеimportlib.util.find_spec(). (Добавлено Никитой Соболевым в gh-97850.) -
pty:-
master_open(): используйтеpty.openpty(). -
slave_open(): используйтеpty.openpty().
-
-
-
versionиversion_info. -
execute()иexecutemany(), если используются именованные заполнители, а parameters является последовательностью, а неdict.
-
-
urllib:urllib.parse.Quoterобъявлен устаревшим: он не предназначался для использования в качестве общедоступного API. (Добавлено Грегори П. Смитом в gh-88168.)
Будут удалены в Python 3.15
-
Система импорта:
- Задание
__cached__для модуля без задания__spec__.cachedобъявлено устаревшим. В Python 3.15__cached__больше не будет задаваться и учитываться системой импорта или стандартной библиотекой. (gh-97879) - Задание
__package__для модуля без задания__spec__.parentобъявлено устаревшим. В Python 3.15__package__больше не будет задаваться и учитываться системой импорта или стандартной библиотекой. (gh-97879)
- Задание
-
- Неподокументированная функция
ctypes.SetPointerType()объявлена устаревшей начиная с Python 3.13.
- Неподокументированная функция
-
- Устаревший и редко используемый класс
CGIHTTPRequestHandlerобъявлен устаревшим начиная с Python 3.13. Прямой замены нет. Любой другой способ взаимодействия веб-сервера с обработчиком запросов лучше CGI. - Флаг
--cgiинтерфейса командной строки команды python -m http.server объявлен устаревшим начиная с Python 3.13.
- Устаревший и редко используемый класс
-
-
Метод
load_module(): вместо него используйтеexec_module().
-
Метод
-
- Функция
getdefaultlocale()объявлена устаревшей начиная с Python 3.11. Изначально ее планировалось удалить в Python 3.13 (gh-90817), но удаление отложили до Python 3.15. Вместо нее используйтеgetlocale(),setlocale()иgetencoding(). (Добавлено Хьюго ван Кеменаде в gh-111187.)
- Функция
-
-
PurePath.is_reserved()объявлен устаревшим начиная с Python 3.13. Для проверки зарезервированных путей в Windows используйтеos.path.isreserved().
-
-
-
java_ver()объявлен устаревшим начиная с Python 3.13. Эта функция полезна только для поддержки Jython, имеет запутанный API и практически не тестируется.
-
-
- Аргумент check_home функции
sysconfig.is_python_build()объявлен устаревшим начиная с Python 3.12.
- Аргумент check_home функции
-
-
RLock()в Python 3.15 не будет принимать аргументы. Передача любых аргументов объявлена устаревшей начиная с Python 3.14: версия на Python не разрешает передавать аргументы, но версия на C допускает любое количество позиционных и именованных аргументов, игнорируя каждый из них.
-
-
-
types.CodeType: обращение кco_lnotabбыло объявлено устаревшим в PEP 626 начиная с версии 3.10; его планировалось удалить в версии 3.12, но надлежащее предупреждениеDeprecationWarningпоявилось только в версии 3.12. Может быть удален в версии 3.15. (Добавлено Никитой Соболевым в gh-101866.)
-
-
- Неподокументированный синтаксис с именованными аргументами для создания классов
NamedTuple(например,Point = NamedTuple("Point", x=int, y=int)) объявлен устаревшим начиная с Python 3.13. Вместо него используйте синтаксис на основе классов или функциональный синтаксис. - При использовании функционального синтаксиса
TypedDictобъявлено устаревшим начиная с Python 3.13 отсутствие значения для параметра fields (TD = TypedDict("TD")) или передачаNone(TD = TypedDict("TD", None)). Чтобы создать 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.
- Методы
Будут удалены в Python 3.16
-
Система импорта:
- Задание
__loader__для модуля без задания__spec__.loaderобъявлено устаревшим. В Python 3.16__loader__больше не будет задаваться и учитываться системой импорта или стандартной библиотекой.
- Задание
-
- Код формата
'u'(wchar_t) объявлен устаревшим в документации начиная с Python 3.3, а во время выполнения — начиная с Python 3.13. Для символов Unicode вместо него используйте код формата'w'(Py_UCS4).
- Код формата
-
-
asyncio.iscoroutinefunction()объявлен устаревшим и будет удален в Python 3.16; вместо него используйтеinspect.iscoroutinefunction(). (Добавлено Цзяхао Ли и Кумаром Адитьей в gh-122875.)
-
-
- Побитовое отрицание значений булевых типов,
~Trueили~False, объявлено устаревшим начиная с Python 3.12, поскольку оно дает неожиданные и нелогичные результаты (-2и-1). Для логического отрицания булева значения используйтеnot x. В редких случаях, когда нужно побитовое отрицание базового целого числа, явно преобразуйте значение вint(~int(x)).
- Побитовое отрицание значений булевых типов,
-
- Исключение
ExecErrorобъявлено устаревшим начиная с Python 3.14. Начиная с Python 3.4 ни одна функция вshutilего не использовала; теперь это псевдонимRuntimeError.
- Исключение
-
- Метод
Class.get_methodsобъявлен устаревшим начиная с Python 3.14.
- Метод
-
sys:- Функция
_enablelegacywindowsfsencoding()объявлена устаревшей начиная с Python 3.13. Вместо нее используйте переменную средыPYTHONLEGACYWINDOWSFSENCODING.
- Функция
-
- Неподокументированный и неиспользуемый атрибут
TarFile.tarfileобъявлен устаревшим начиная с Python 3.13.
- Неподокументированный и неиспользуемый атрибут
Будут удалены в Python 3.17
-
-
collections.abc.ByteStringпланируется удалить в Python 3.17.Используйте
isinstance(obj, collections.abc.Buffer), чтобы во время выполнения проверить, реализует лиobjпротокол буфера. В аннотациях типов используйте либоBuffer, либо объединение типов с явным перечислением поддерживаемых вашим кодом типов (например,bytes | bytearray | memoryview).Изначально
ByteStringзадумывался как абстрактный класс, который служил бы супертипом и дляbytes, и дляbytearray. Однако у этого ABC никогда не было методов, поэтому знание того, что объект является экземпляромByteString, на практике не давало никакой полезной информации об объекте. Другие распространенные типы буферов, такие какmemoryview, также никогда не считались подтипамиByteString— ни во время выполнения, ни статическими анализаторами типов.Подробнее см. PEP 688. (Добавлено Шантану Джейном в gh-91896.)
-
-
- До Python 3.14 объединения старого стиля реализовывались с помощью закрытого класса
typing._UnionGenericAlias. Для реализации этот класс больше не нужен, но он сохранен для обратной совместимости; его удаление запланировано на Python 3.17. Вместо того чтобы полагаться на детали закрытой реализации, используйте документированные средства интроспекции, напримерtyping.get_origin()иtyping.get_args(). -
typing.ByteString, объявленный устаревшим начиная с Python 3.9, планируется удалить в Python 3.17.Используйте
isinstance(obj, collections.abc.Buffer), чтобы во время выполнения проверить, реализует лиobjпротокол буфера. В аннотациях типов используйте либоBuffer, либо объединение типов с явным перечислением поддерживаемых вашим кодом типов (например,bytes | bytearray | memoryview).Изначально
ByteStringзадумывался как абстрактный класс, который служил бы супертипом и дляbytes, и дляbytearray. Однако у этого ABC никогда не было методов, поэтому знание того, что объект является экземпляромByteString, на практике не давало никакой полезной информации об объекте. Другие распространенные типы буферов, такие какmemoryview, также никогда не считались подтипамиByteString— ни во время выполнения, ни статическими анализаторами типов.Подробнее см. PEP 688. (Добавлено Шантану Джейном в gh-91896.)
- До Python 3.14 объединения старого стиля реализовывались с помощью закрытого класса
Планируется удалить в будущих версиях
Следующие API будут удалены в будущем, хотя в настоящее время дата их удаления не назначена.
-
argparse: Вложенные группы аргументов и вложенные взаимоисключающие группы объявлены устаревшими. -
- Генераторы: сигнатуры
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. (Предложено Принсом Рошаном в gh-103636.) -
codeobject.co_lnotab: вместо него используйте методcodeobject.co_lines(). -
-
utcnow(): используйтеdatetime.datetime.now(tz=datetime.UTC). -
utcfromtimestamp(): используйтеdatetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC).
-
-
gettext: значение множественного числа должно быть целым числом. -
-
Параметр debug_override функции
cache_from_source()объявлен устаревшим: вместо него используйте параметр optimization.
-
Параметр debug_override функции
-
- Интерфейс кортежа
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_SSLv3ssl.PROTOCOL_TLSssl.PROTOCOL_TLSv1ssl.PROTOCOL_TLSv1_1ssl.PROTOCOL_TLSv1_2ssl.TLSVersion.SSLv3ssl.TLSVersion.TLSv1ssl.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). -
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 API
Планируется удалить в Python 3.14
- Поле
ma_version_tagвPyDictObjectдля модулей расширения (PEP 699; gh-101193). - Создание
immutable typesс изменяемыми базовыми классами (gh-95388). -
Функции настройки инициализации Python, объявленные устаревшими в Python 3.11:
-
PySys_SetArgvEx(): вместо этого задайтеPyConfig.argv. -
PySys_SetArgv(): вместо этого задайтеPyConfig.argv. -
Py_SetProgramName(): вместо этого задайтеPyConfig.program_name. -
Py_SetPythonHome(): вместо этого задайтеPyConfig.home.
Вместо этого следует использовать API
Py_InitializeFromConfig()вместе сPyConfig. -
-
Глобальные переменные конфигурации:
-
Py_DebugFlag: вместо этого используйтеPyConfig.parser_debug. -
Py_VerboseFlag: вместо этого используйтеPyConfig.verbose. -
Py_QuietFlag: вместо этого используйтеPyConfig.quiet. -
Py_InteractiveFlag: вместо этого используйтеPyConfig.interactive. -
Py_InspectFlag: вместо этого используйтеPyConfig.inspect. -
Py_OptimizeFlag: вместо этого используйтеPyConfig.optimization_level. -
Py_NoSiteFlag: вместо этого используйтеPyConfig.site_import. -
Py_BytesWarningFlag: вместо этого используйтеPyConfig.bytes_warning. -
Py_FrozenFlag: вместо этого используйтеPyConfig.pathconfig_warnings. -
Py_IgnoreEnvironmentFlag: вместо этого используйтеPyConfig.use_environment. -
Py_DontWriteBytecodeFlag: вместо этого используйтеPyConfig.write_bytecode. -
Py_NoUserSiteDirectory: вместо этого используйтеPyConfig.user_site_directory. -
Py_UnbufferedStdioFlag: вместо этого используйтеPyConfig.buffered_stdio. -
Py_HashRandomizationFlag: вместо этого используйтеPyConfig.use_hash_seedиPyConfig.hash_seed. -
Py_IsolatedFlag: вместо этого используйтеPyConfig.isolated. -
Py_LegacyWindowsFSEncodingFlag: вместо этого используйтеPyPreConfig.legacy_windows_fs_encoding. -
Py_LegacyWindowsStdioFlag: вместо этого используйтеPyConfig.legacy_windows_stdio. -
Py_FileSystemDefaultEncoding: вместо этого используйтеPyConfig.filesystem_encoding. -
Py_HasFileSystemDefaultEncoding: вместо этого используйтеPyConfig.filesystem_encoding. -
Py_FileSystemDefaultEncodeErrors: вместо этого используйтеPyConfig.filesystem_errors. -
Py_UTF8Mode: вместо этого используйтеPyPreConfig.utf8_mode. (см.Py_PreInitialize())
Вместо этого следует использовать API
Py_InitializeFromConfig()вместе сPyConfig. -
Планируется удалить в Python 3.15
PyImport_ImportModuleNoBlock(): вместо него используйтеPyImport_ImportModule().-
PyWeakref_GetObject()иPyWeakref_GET_OBJECT(): вместо них используйтеPyWeakref_GetRef(). -
Тип
Py_UNICODEи макросPy_UNICODE_WIDE: вместо них используйтеwchar_t. -
Функции инициализации Python:
-
PySys_ResetWarnOptions(): вместо этого очиститеsys.warnoptionsиwarnings.filters. -
Py_GetExecPrefix(): вместо этого получитеsys.base_exec_prefixиsys.exec_prefix. -
Py_GetPath(): вместо этого получитеsys.path. -
Py_GetPrefix(): вместо этого получитеsys.base_prefixиsys.prefix. -
Py_GetProgramFullPath(): вместо этого получитеsys.executable. -
Py_GetProgramName(): вместо этого получитеsys.executable. -
Py_GetPythonHome(): вместо этого получитеPyConfig.homeили используйте переменную окруженияPYTHONHOME.
-
Планируется удалить в будущих версиях
Следующие 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_AsDecodedObject(): вместо нее используйтеPyCodec_Decode(). -
PyUnicode_AsDecodedUnicode(): вместо нее используйтеPyCodec_Decode(). -
PyUnicode_AsEncodedObject(): вместо нее используйтеPyCodec_Encode(). -
PyUnicode_AsEncodedUnicode(): вместо нее используйтеPyCodec_Encode(). -
PyUnicode_READY(): не требуется начиная с Python 3.12 -
PyErr_Display(): вместо нее используйтеPyErr_DisplayException(). -
_PyErr_ChainExceptions(): вместо нее используйте_PyErr_ChainExceptions1(). -
Элемент
PyBytesObject.ob_shash: вместо него вызывайтеPyObject_Hash(). -
Элемент
PyDictObject.ma_version_tag. -
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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/deprecations/index.html