Устаревшие функции
Устаревшие функции, удаляемые в 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.abcустаревшие классы:importlib.abc.ResourceReaderimportlib.abc.Traversableimportlib.abc.TraversableResources
Используйте классы из
importlib.resources.abc:(Внесено Джейсоном Р. Кумбсом и Хьюго ван Кеменеде в gh-93963.)
-
itertoolsимели недокументированную, неэффективную, исторически ошибочную и несовместимую поддержку копирования, глубокого копирования и пиклирования. Это будет удалено в версии 3.14 для значительного сокращения объема кода и нагрузки на сопровождение. (Внесено Реймондом Хеттингером в gh-101588.) -
multiprocessing: Метод запуска по умолчанию изменится на более безопасный на Linux, BSD и других не-macOS платформах POSIX, где'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при использовании.
Удаление в 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.
- Устаревший и редко используемый
-
- Функция
getdefaultlocale()устарела с Python 3.11. Её удаление планировалось для Python 3.13 (gh-90817), но перенесено на Python 3.15. Используйтеgetlocale(),setlocale()иgetencoding()вместо неё. (Внесён Hugo van Kemenade в gh-111187.)
- Функция
-
-
PurePath.is_reserved()устарела с Python 3.13. Используйтеos.path.isreserved()для определения защищённых путей в Windows.
-
-
-
java_ver()устарела с Python 3.13. Эта функция полезна только для поддержки Jython, имеет запутанный API и в основном не протестирована.
-
-
-
RLock()не будет принимать аргументы в Python 3.15. Передача аргументов устарела с Python 3.14, так как версия Python не допускает аргументы, но версия C допускает любое количество позиционных или ключевых аргументов, игнорируя все аргументы.
-
-
-
types.CodeType: Доступ кco_lnotabустарел в PEP 626 начиная с 3.10 и планировалось его удаление в 3.12, но в 3.12 он получил соответствующее предупреждениеDeprecationWarning. Может быть удален в 3.15. (Внесён Nikita Sobolev в gh-101866.)
-
-
- Устарел не документированный синтаксис ключевых аргументов для создания классов
NamedTuple(например,Point = NamedTuple("Point", x=int, y=int)). Используйте синтаксис на основе класса или функциональный синтаксис вместо него. - Функция-декоратор
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. Используйте код формата'w'(Py_UCS4) для символов Юникода вместо него.
- Код формата
-
-
asyncio.iscoroutinefunction()устарел и будет удален в Python 3.16, используйтеinspect.iscoroutinefunction()вместо него. (Внесенно Jiahao Li и Kumar Aditya в gh-122875.)
-
-
- Битовая инверсия для булевых типов,
~Trueили~Falseустарела с Python 3.12, так как она приводит к неожиданным и неинтуитивным результатам (-2и-1). Используйтеnot xдля логического отрицания булева значения. В редких случаях, если вам нужна битовая инверсия базового целого числа, явно преобразуйте его вint(~int(x)).
- Битовая инверсия для булевых типов,
-
- Исключение
ExecErrorустарело с Python 3.14. Оно не использовалось ни одной функцией вshutilс Python 3.4 и теперь является псевдонимомRuntimeError.
- Исключение
-
- Метод
Class.get_methodsустарел с Python 3.14.
- Метод
-
sys:- Функция
_enablelegacywindowsfsencoding()устарела с Python 3.13. Используйте переменную окруженияPYTHONLEGACYWINDOWSFSENCODINGвместо неё.
- Функция
-
- Недокументированное и неиспользуемое свойство
TarFile.tarfileустарело с Python 3.13.
- Недокументированное и неиспользуемое свойство
Удаление в будущих версиях
Следующие API будут удалены в будущем, хотя дата их удаления пока не запланирована.
-
argparse: Вложенные группы аргументов и вложенные взаимно исключающие группы устарели. -
array’s'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()теперь устарело; его следует передавать только как единственный позиционный аргумент. (Внесено Serhiy Storchaka в gh-109218.)
-
-
calendar:calendar.Januaryиcalendar.Februaryконстанты устарели и заменены наcalendar.JANUARYиcalendar.FEBRUARY. (Внесено Prince Roshan в gh-103636.) -
codeobject.co_lnotab: используйте методcodeobject.co_lines()вместо него. -
-
utcnow(): используйтеdatetime.datetime.now(tz=datetime.UTC). -
utcfromtimestamp(): используйтеdatetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC).
-
-
gettext: Значение множественного числа должно быть целым числом. -
-
load_module()метод: используйтеexec_module()вместо него. -
cache_from_source()параметр debug_override устарел: используйте параметр optimization вместо него.
-
-
-
EntryPointsинтерфейс кортежей. - Неявное
Noneдля возвращаемых значений.
-
-
logging: методwarn()устарел с Python 3.3, используйтеwarning()вместо него. -
mailbox: Использование StringIO в режиме ввода и текстовом режиме устарело, используйте BytesIO и бинарный режим вместо него. -
os: Вызовos.register_at_fork()в многопоточном процессе. -
pydoc.ErrorDuringImport: Кортеж в качестве значения параметра exc_info устарел, используйте экземпляр исключения. -
re: Теперь применяются более строгие правила для числовых ссылок на группы и имён групп в регулярных выражениях. В качестве числовой ссылки теперь принимается только последовательность ASCII-цифр. Имя группы в байтовом шаблоне и строке замены теперь может содержать только ASCII-буквы, цифры и знак подчеркивания. (Внесено Serhiy Storchaka в 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
-
-
sysconfig.is_python_build()параметр check_home устарел и игнорируется. -
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.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_shashmember: вызовитеPyObject_Hash()вместо этого. -
PyDictObject.ma_version_tagmember. -
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.13/deprecations/index.html