Skip to content

Commit 1726cf1

Browse files
committed
gh-105373: Doc lists pending C API removals
1 parent 6e6a4cd commit 1726cf1

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

Doc/whatsnew/3.13.rst

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,7 @@ Deprecated
470470
* :c:func:`Py_GetPythonHome`: get :c:member:`PyConfig.home` or
471471
:envvar:`PYTHONHOME` environment variable instead.
472472

473+
Functions scheduled for removal in Python 3.15.
473474
(Contributed by Victor Stinner in :gh:`105145`.)
474475

475476
* Deprecate the :c:func:`PyImport_ImportModuleNoBlock` function which is just
@@ -612,3 +613,78 @@ Removed
612613
<https://github.com/python/pythoncapi-compat/>`__ can be used to get
613614
:c:func:`PyInterpreterState_Get()` on Python 3.8 and older.
614615
(Contributed by Victor Stinner in :gh:`106320`.)
616+
617+
Pending Removal in Python 3.15
618+
------------------------------
619+
620+
* :c:func:`PyImport_ImportModuleNoBlock`: use :c:func:`PyImport_ImportModule`.
621+
* :c:func:`PyWeakref_GET_OBJECT`: use :c:func:`PyWeakref_GetRef` instead.
622+
* :c:func:`PyWeakref_GetObject`: use :c:func:`PyWeakref_GetRef` instead.
623+
* :c:type:`Py_UNICODE_WIDE` type: use :c:expr:`wchar_t` instead.
624+
* :c:type:`Py_UNICODE` type: use :c:expr:`wchar_t` instead.
625+
* Python initialization functions:
626+
627+
* :c:func:`PySys_ResetWarnOptions`: clear :data:`sys.warnoptions` and
628+
:data:`!warnings.filters` instead.
629+
* :c:func:`Py_GetExecPrefix`: get :data:`sys.exec_prefix` instead.
630+
* :c:func:`Py_GetPath`: get :data:`sys.path` instead.
631+
* :c:func:`Py_GetPrefix`: get :data:`sys.prefix` instead.
632+
* :c:func:`Py_GetProgramFullPath`: get :data:`sys.executable` instead.
633+
* :c:func:`Py_GetProgramName`: get :data:`sys.executable` instead.
634+
* :c:func:`Py_GetPythonHome`: get :c:member:`PyConfig.home` or
635+
:envvar:`PYTHONHOME` environment variable instead.
636+
637+
Pending Removal in Future Versions
638+
----------------------------------
639+
640+
* :c:data:`Py_TPFLAGS_HAVE_FINALIZE`: no needed since Python 3.8.
641+
* :c:func:`PyErr_Fetch`: use :c:func:`PyErr_GetRaisedException`.
642+
* :c:func:`PyErr_NormalizeException`: use :c:func:`PyErr_GetRaisedException`.
643+
* :c:func:`PyErr_Restore`: use :c:func:`PyErr_SetRaisedException`.
644+
* :c:func:`PyModule_GetFilename`: use :c:func:`PyModule_GetFilenameObject`.
645+
* :c:func:`PyOS_AfterFork`: use :c:func:`PyOS_AfterFork_Child()`.
646+
* :c:func:`PySlice_GetIndicesEx`.
647+
* :c:func:`PyUnicode_AsDecodedObject`.
648+
* :c:func:`PyUnicode_AsDecodedUnicode`.
649+
* :c:func:`PyUnicode_AsEncodedObject`.
650+
* :c:func:`PyUnicode_AsEncodedUnicode`.
651+
* :c:func:`PyUnicode_READY`: not needed since Python 3.12.
652+
* :c:func:`_PyErr_ChainExceptions`
653+
* :c:member:`PyBytesObject.ob_shash` member: call :c:func:`PyObject_Hash` instead.
654+
* :c:member:`PyDictObject.ma_version_tag` member.
655+
* Global configuration variables:
656+
657+
* :c:var:`Py_DebugFlag`: use :c:member:`PyConfig.parser_debug`
658+
* :c:var:`Py_VerboseFlag`: use :c:member:`PyConfig.verbose`
659+
* :c:var:`Py_QuietFlag`: use :c:member:`PyConfig.quiet`
660+
* :c:var:`Py_InteractiveFlag`: use :c:member:`PyConfig.interactive`
661+
* :c:var:`Py_InspectFlag`: use :c:member:`PyConfig.inspect`
662+
* :c:var:`Py_OptimizeFlag`: use :c:member:`PyConfig.optimization_level`
663+
* :c:var:`Py_NoSiteFlag`: use :c:member:`PyConfig.site_import`
664+
* :c:var:`Py_BytesWarningFlag`: use :c:member:`PyConfig.bytes_warning`
665+
* :c:var:`Py_FrozenFlag`: use :c:member:`PyConfig.pathconfig_warnings`
666+
* :c:var:`Py_IgnoreEnvironmentFlag`: use :c:member:`PyConfig.use_environment`
667+
* :c:var:`Py_DontWriteBytecodeFlag`: use :c:member:`PyConfig.write_bytecode`
668+
* :c:var:`Py_NoUserSiteDirectory`: use :c:member:`PyConfig.user_site_directory`
669+
* :c:var:`Py_UnbufferedStdioFlag`: use :c:member:`PyConfig.buffered_stdio`
670+
* :c:var:`Py_HashRandomizationFlag`: use :c:member:`PyConfig.use_hash_seed`
671+
and :c:member:`PyConfig.hash_seed`
672+
* :c:var:`Py_IsolatedFlag`: use :c:member:`PyConfig.isolated`
673+
* :c:var:`Py_LegacyWindowsFSEncodingFlag`: use :c:member:`PyPreConfig.legacy_windows_fs_encoding`
674+
* :c:var:`Py_LegacyWindowsStdioFlag`: use :c:member:`PyConfig.legacy_windows_stdio`
675+
* :c:var:`!Py_FileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding`
676+
* :c:var:`!Py_HasFileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding`
677+
* :c:var:`!Py_FileSystemDefaultEncodeErrors`: use :c:member:`PyConfig.filesystem_errors`
678+
* :c:var:`!Py_UTF8Mode`: use :c:member:`PyPreConfig.utf8_mode` (see :c:func:`Py_PreInitialize`)
679+
680+
The :c:func:`Py_InitializeFromConfig` API should be used with
681+
:c:type:`PyConfig` instead.
682+
683+
* TLS API:
684+
685+
* :c:func:`PyThread_create_key`: use :c:func:`PyThread_tss_alloc`.
686+
* :c:func:`PyThread_delete_key`: use :c:func:`PyThread_tss_free`.
687+
* :c:func:`PyThread_set_key_value`: use :c:func:`PyThread_tss_set`.
688+
* :c:func:`PyThread_get_key_value`: use :c:func:`PyThread_tss_get`.
689+
* :c:func:`PyThread_delete_key_value`: use :c:func:`PyThread_tss_delete`.
690+
* :c:func:`PyThread_ReInitTLS`: no longer needed.

0 commit comments

Comments
 (0)