Устаревшие функции
Планируется удалить в Python 3.13
Модули (см. PEP 594):
aifcaudioopcgicgitbchunkcryptimghdrmailcapmsilibnisnntplibossaudiodevpipessndhdrspwdsunautelnetlibuuxdrlib
Другие модули:
-
lib2to3и программа 2to3 (gh-84540)
API:
-
configparser.LegacyInterpolation(gh-90765) -
locale.resetlocale()(gh-90817) -
turtle.RawTurtle.settiltangle()(gh-50096) -
unittest.findTestCases()(gh-50096) -
unittest.getTestCaseNames()(gh-50096) -
unittest.makeSuite()(gh-50096) -
unittest.TestProgram.usageExit()(gh-67048) -
webbrowser.MacOSX(gh-86421) -
Цепочки дескрипторов
classmethod(gh-89519) -
Устаревшие методы
importlib.resources:contents()is_resource()open_binary()open_text()path()read_binary()read_text()
Вместо них используйте
importlib.resources.files(). См. importlib-resources: переход с устаревшего интерфейса (gh-106531)
Планируется удалить в 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.)
- Классы наблюдателей дочерних процессов
-
collections.abc: устаревший типByteString. Предпочтительно использоватьSequenceилиBuffer. Для аннотаций типов предпочтительно использовать объединение, напримерbytes | bytearray, илиcollections.abc.Buffer. (Предложено Шантану Джейном в gh-91896.) -
email: параметр isdst функцииemail.utils.localtime()объявлен устаревшим. (Предложено Аланом Уильямсом в gh-72346.) -
importlib: система импорта перестанет устанавливать или учитывать__package__и__cached__(gh-97879). -
Устаревшие классы
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). Предупреждение во время выполнения сочли слишком обременительным, поскольку предполагается, что большинству кода это не важно. Используйте 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.
-
-
typing: использованиеByteString, объявленного устаревшим начиная с Python 3.9, теперь вызывает предупреждениеDeprecationWarning. -
urllib:urllib.parse.Quoterобъявлен устаревшим, поскольку не предназначался для использования в качестве публичного API. (Предложено Грегори П. Смитом в gh-88168.)
Планируется удалить в Python 3.15
-
http.server.CGIHTTPRequestHandlerбудет удалён вместе со связанным флагом--cgiуpython -m http.server. Он устарел и редко использовался. Прямой замены нет. Для взаимодействия веб-сервера с обработчиком запросов подойдёт что угодно, кроме CGI. -
-
Метод
load_module(): вместо него используйтеexec_module().
-
Метод
-
locale:locale.getdefaultlocale()была объявлена устаревшей в Python 3.11, и изначально её планировали удалить в Python 3.13 (gh-90817), однако удаление отложили до Python 3.15. Вместо неё используйтеlocale.setlocale(),locale.getencoding()иlocale.getlocale(). (Предложено Хьюго ван Кеменаде в gh-111187.) -
pathlib:pathlib.PurePath.is_reserved()объявлен устаревшим и будет удалён в Python 3.15. Начиная с Python 3.13 для проверки путей, зарезервированных в Windows, используйтеos.path.isreserved. -
platform:java_ver()объявлена устаревшей и будет удалена в версии 3.15. Она практически не тестировалась, имела запутанный API и была полезна только для поддержки Jython. (Предложено Никитой Соболевым в gh-116349.) -
- Аргумент check_home функции
sysconfig.is_python_build()объявлен устаревшим начиная с Python 3.12.
- Аргумент check_home функции
-
threading: передача любых аргументов вthreading.RLock()теперь считается устаревшей. Версия на C принимает любое количество позиционных и именованных аргументов, но просто игнорирует их. Версия на Python не принимает никаких аргументов. В Python 3.15 все аргументы будут удалены изthreading.RLock(). (Предложено Никитой Соболевым в gh-102029.) -
- Недокументированный синтаксис с именованными аргументами для создания классов
NamedTuple(NT = NamedTuple("NT", x=int)) объявлен устаревшим и будет запрещён в версии 3.15. Вместо него используйте синтаксис на основе классов или функциональный синтаксис.
- Недокументированный синтаксис с именованными аргументами для создания классов
-
-
types.CodeType: обращение кco_lnotabбыло объявлено устаревшим в PEP 626 начиная с версии 3.10; его планировали удалить в 3.12, но надлежащее предупреждениеDeprecationWarningпоявилось только в 3.12. Может быть удалено в версии 3.15. (Предложено Никитой Соболевым в gh-101866.)
-
-
- При создании класса
NamedTupleс помощью функционального синтаксиса объявлено устаревшим не передавать значение параметру fields (NT = NamedTuple("NT")). Также объявлена устаревшей передачаNoneпараметру fields (NT = NamedTuple("NT", None)). Оба варианта будут запрещены в Python 3.15. Чтобы создать классNamedTupleс нулём полей, используйтеclass NT(NamedTuple): passилиNT = NamedTuple("NT", []).
- При создании класса
-
typing.TypedDict: при создании классаTypedDictс помощью функционального синтаксиса объявлено устаревшим не передавать значение параметру fields (TD = TypedDict("TD")). Также объявлена устаревшей передачаNoneпараметру fields (TD = TypedDict("TD", None)). Оба варианта будут запрещены в Python 3.15. Чтобы создать классTypedDictс нулём полей, используйтеclass TD(TypedDict): passилиTD = TypedDict("TD", {}). -
wave: методыgetmark(),setmark()иgetmarkers()классовwave.Wave_readиwave.Wave_writeобъявлены устаревшими. Они будут удалены в Python 3.15. (Предложено Виктором Стиннером в gh-105096.)
Планируется удалить в Python 3.16
-
Система импорта:
- Установка
__loader__для модуля без установки__spec__.loaderобъявлена устаревшей. В Python 3.16 система импорта и стандартная библиотека перестанут устанавливать или учитывать__loader__.
- Установка
-
array: тип'u'array.array(wchar_t): вместо него используйте тип'w'(Py_UCS4). -
builtins:~bool, побитовая инверсия для bool. -
symtable: методsymtable.Class.get_methods()объявлен устаревшим из-за отсутствия интереса к нему. (Предложено Бенедиктом Траном в gh-119698.)
Будут удалены в будущих версиях
-
argparse: Вложенные группы аргументов и вложенные взаимоисключающие группы объявлены устаревшими. -
array: форматный код'u'(gh-57281) -
-
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. (Внесено Принсом Рошаном в 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возвращаемых значений.
-
Интерфейс кортежа
-
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без аргумента protocol объявлен устаревшим. -
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
- Встроенная копия
libmpdecimal. 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.exec_prefix. -
Py_GetPath(): вместо этого получитеsys.path. -
Py_GetPrefix(): вместо этого получите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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/deprecations/index.html