Spec-Zone.ru › Python 3.13

Устаревшие функции

Устаревшие функции, удаляемые в Python 3.14

  • argparse: Параметры type, choices и metavar для argparse.BooleanOptionalAction устарели и будут удалены в версии 3.14. (Внесено Никитой Соболевым в gh-92248.)
  • ast: Следующие функции устарели в документации с Python 3.8. Теперь при обращении или использовании они генерируют DeprecationWarning, и будут удалены в Python 3.14:

    • ast.Num
    • ast.Str
    • ast.Bytes
    • ast.NameConstant
    • ast.Ellipsis

    Используйте ast.Constant вместо них. (Внесено Сергием Сторчака в gh-90953.)

  • asyncio:

    • Классы наблюдателей дочерних процессов 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.ResourceReader
    • importlib.abc.Traversable
    • importlib.abc.TraversableResources

    Используйте классы из importlib.resources.abc:

    • importlib.resources.abc.Traversable
    • importlib.resources.abc.TraversableResources

    (Внесено Джейсоном Р. Кумбсом и Хьюго ван Кеменеде в gh-93963.)

  • itertools имели недокументированную, неэффективную, исторически ошибочную и несовместимую поддержку копирования, глубокого копирования и пиклирования. Это будет удалено в версии 3.14 для значительного сокращения объема кода и нагрузки на сопровождение. (Внесено Реймондом Хеттингером в gh-101588.)
  • multiprocessing: Метод запуска по умолчанию изменится на более безопасный на Linux, BSD и других не-macOS платформах POSIX, где 'fork' является текущим значением по умолчанию (gh-84559). Добавление предупреждения во время выполнения считалось слишком разрушительным, так как большинство кода, вероятно, не обратит на это внимание. Используйте API get_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().
  • sqlite3:

    • version и version_info.
    • execute() и executemany(), если используются именованные плейсхолдеры и parameters — последовательность, а не dict.
  • typing: ByteString, устаревшее с Python 3.9, теперь вызывает DeprecationWarning при использовании.
END_OF_DOCUMENT_MARKER
  • urllib: urllib.parse.Quoter устарело: оно не должно было быть частью публичного API. (Внесён Gregory P. Smith в gh-88168.)

Удаление в 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.
  • locale:

    • Функция getdefaultlocale() устарела с Python 3.11. Её удаление планировалось для Python 3.13 (gh-90817), но перенесено на Python 3.15. Используйте getlocale(), setlocale() и getencoding() вместо неё. (Внесён Hugo van Kemenade в gh-111187.)
  • pathlib:

    • PurePath.is_reserved() устарела с Python 3.13. Используйте os.path.isreserved() для определения защищённых путей в Windows.
  • platform:

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

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

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

    • Устарел не документированный синтаксис ключевых аргументов для создания классов 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.
END_OF_DOCUMENT_MARKER

Удаление в Python 3.16

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

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

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

    • asyncio.iscoroutinefunction() устарел и будет удален в Python 3.16, используйте inspect.iscoroutinefunction() вместо него. (Внесенно Jiahao Li и Kumar Aditya в gh-122875.)
  • builtins:

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

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

    • Метод Class.get_methods устарел с Python 3.14.
  • sys:

    • Функция _enablelegacywindowsfsencoding() устарела с Python 3.13. Используйте переменную окружения PYTHONLEGACYWINDOWSFSENCODING вместо неё.
  • tarfile:

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

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

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

  • argparse: Вложенные группы аргументов и вложенные взаимно исключающие группы устарели.
  • array’s 'u' форматный код (gh-57281)
  • builtins:

    • 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() вместо него.
  • datetime:

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

    • load_module() метод: используйте exec_module() вместо него.
    • cache_from_source() параметр debug_override устарел: используйте параметр 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-буквы, цифры и знак подчеркивания. (Внесено 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_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
  • 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().
END_OF_DOCUMENT_MARKER
  • 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_shash member: вызовите PyObject_Hash() вместо этого.
  • PyDictObject.ma_version_tag member.
  • 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

Spec-Zone.ru

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