Spec-Zone.ru › Python 3.12

Устаревшие элементы

Планируемое удаление в Python 3.13

Модули (см. PEP 594):

  • aifc
  • audioop
  • cgi
  • cgitb
  • chunk
  • crypt
  • imghdr
  • mailcap
  • msilib
  • nis
  • nntplib
  • ossaudiodev
  • pipes
  • sndhdr
  • spwd
  • sunau
  • telnetlib
  • uu
  • xdrlib

Другие модули:

  • 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.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: __package__ и __cached__ больше не будут устанавливаться или учитываться системой импорта (gh-97879).
  • 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 и других POSIX платформах, не являющихся macOS, где '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.
    • адаптеры date и datetime, конвертеры date и timestamp: см. документацию по sqlite3 для предложенных рецептов замены.
END_OF_DOCUMENT_MARKER
  • 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.)
  • typing.NamedTuple:

    • Синтаксис с необъявленными ключевыми аргументами для создания классов 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 будут удалены в будущем, хотя в настоящее время дата их удаления не назначена.

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

    • ~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() вместо него.
  • 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 для значений возврата.
  • 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_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().
  • typing.Text (gh-92332).
  • unittest.IsolatedAsyncioTestCase: Возвращение значения, не являющегося None, из тестового случая устарело.
END_OF_DOCUMENT_MARKER
  • 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() вместо него.
END_OF_DOCUMENT_MARKER

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_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.12/deprecations/index.html

Spec-Zone.ru

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