Устаревшие элементы
Планируемое удаление в 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: Миграция со старого API (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имел недокументированную, неэффективную, исторически глючную и несогласованную поддержку копирования, глубокого копирования и пиклирования. Это будет удалено в версии 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. - адаптеры date и datetime, конвертеры date и timestamp: см. документацию по
sqlite3для предложенных рецептов замены.
-
-
types.CodeType: Доступ кco_lnotabустарел в PEP 626 начиная с 3.10 и планировалось его удаление в 3.12, но в 3.12 он получил только надлежащее предупреждениеDeprecationWarning. Возможно, будет удален в 3.14. (Внесён Никитой Соболевым в gh-101866.) -
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, для взаимодействия веб-сервера с обработчиком запросов. -
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, используйтеos.path.isreservedдля обнаружения зарезервированных путей в Windows. -
platform:java_ver()устарел и будет удалён в 3.15. Он был в основном не протестирован, имел запутанный API и был полезен только для поддержки Jython. (Внесён Никитой Соболевым в gh-116349.) -
threading: Передача аргументов вthreading.RLock()теперь устарела. Версия C позволяет любое количество аргументов и ключевых аргументов, но они просто игнорируются. Версия Python не позволяет никаких аргументов. Все аргументы будут удалены изthreading.RLock()в Python 3.15. (Внесён Никитой Соболевым в gh-102029.) -
- Синтаксис с необъявленными ключевыми аргументами для создания классов
NamedTuple(NT = NamedTuple("NT", x=int)) устарел и будет запрещён в 3.15. Используйте синтаксис на основе класса или функциональный синтаксис вместо него. - При использовании функционального синтаксиса для создания класса
NamedTuple, пропуск значения для параметра fields (NT = NamedTuple("NT")) устарел. ПередачаNoneв параметр fields (NT = NamedTuple("NT", None)) также устарела. Оба варианта будут запрещены в Python 3.15. Чтобы создать классNamedTupleс 0 полями, используйтеclass NT(NamedTuple): passилиNT = NamedTuple("NT", []).
- Синтаксис с необъявленными ключевыми аргументами для создания классов
-
typing.TypedDict: При использовании функционального синтаксиса для создания классаTypedDict, пропуск значения для параметра fields (TD = TypedDict("TD")) устарел. ПередачаNoneв параметр fields (TD = TypedDict("TD", None)) также устарела. Оба варианта будут запрещены в Python 3.15. Чтобы создать классTypedDictс 0 полями, используйте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
-
array:array.array'u'тип (wchar_t): используйте тип'w'вместо него (Py_UCS4). -
symtable: Устарел методsymtable.Class.get_methods()из-за отсутствия интереса. (Внесён Бенедиктом Тран в gh-119698.)
Отклонение от использования в будущих версиях
Следующие API будут удалены в будущем, хотя в настоящее время дата их удаления не назначена.
-
argparse: Вложенные группы аргументов и вложенные взаимно исключающие группы устарели. -
array’s'u'формат кода (gh-57281) -
-
~bool, побитовое инвертирование bool. -
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: Значение множественного числа должно быть целым числом. -
-
load_module()метод: используйтеexec_module()вместо него. -
cache_from_source()параметр debug_override устарел: используйте параметр optimization вместо него.
-
-
-
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:rmtree()’s параметр onerror устарел в 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_GET_OBJECT(): используйтеPyWeakref_GetRef()вместо этого. -
PyWeakref_GetObject(): используйтеPyWeakref_GetRef()вместо этого. -
Py_UNICODE_WIDEтип: используйтеwchar_tвместо этого. -
Py_UNICODEтип: используйте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_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.12/deprecations/index.html