Skip to content

Commit 6b47b87

Browse files
committed
[3.13] pythonGH-122085: Use include files for C API deprecations (pythonGH-109843)
(cherry picked from commit 76bdfa4) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
1 parent d8701e2 commit 6b47b87

File tree

6 files changed

+117
-181
lines changed

6 files changed

+117
-181
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
Pending Removal in Python 3.14
2+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3+
4+
* The ``ma_version_tag`` field in :c:type:`PyDictObject` for extension modules
5+
(:pep:`699`; :gh:`101193`).
6+
7+
* Creating :c:data:`immutable types <Py_TPFLAGS_IMMUTABLETYPE>` with mutable
8+
bases (:gh:`95388`).
9+
10+
* Functions to configure Python's initialization, deprecated in Python 3.11:
11+
12+
* ``PySys_SetArgvEx()``: set :c:member:`PyConfig.argv` instead.
13+
* ``PySys_SetArgv()``: set :c:member:`PyConfig.argv` instead.
14+
* ``Py_SetProgramName()``: set :c:member:`PyConfig.program_name` instead.
15+
* ``Py_SetPythonHome()``: set :c:member:`PyConfig.home` instead.
16+
17+
The :c:func:`Py_InitializeFromConfig` API should be used with
18+
:c:type:`PyConfig` instead.
19+
20+
* Global configuration variables:
21+
22+
* :c:var:`Py_DebugFlag`: use :c:member:`PyConfig.parser_debug` instead.
23+
* :c:var:`Py_VerboseFlag`: use :c:member:`PyConfig.verbose` instead.
24+
* :c:var:`Py_QuietFlag`: use :c:member:`PyConfig.quiet` instead.
25+
* :c:var:`Py_InteractiveFlag`: use :c:member:`PyConfig.interactive` instead.
26+
* :c:var:`Py_InspectFlag`: use :c:member:`PyConfig.inspect` instead.
27+
* :c:var:`Py_OptimizeFlag`: use :c:member:`PyConfig.optimization_level` instead.
28+
* :c:var:`Py_NoSiteFlag`: use :c:member:`PyConfig.site_import` instead.
29+
* :c:var:`Py_BytesWarningFlag`: use :c:member:`PyConfig.bytes_warning` instead.
30+
* :c:var:`Py_FrozenFlag`: use :c:member:`PyConfig.pathconfig_warnings` instead.
31+
* :c:var:`Py_IgnoreEnvironmentFlag`: use :c:member:`PyConfig.use_environment` instead.
32+
* :c:var:`Py_DontWriteBytecodeFlag`: use :c:member:`PyConfig.write_bytecode` instead.
33+
* :c:var:`Py_NoUserSiteDirectory`: use :c:member:`PyConfig.user_site_directory` instead.
34+
* :c:var:`Py_UnbufferedStdioFlag`: use :c:member:`PyConfig.buffered_stdio` instead.
35+
* :c:var:`Py_HashRandomizationFlag`: use :c:member:`PyConfig.use_hash_seed`
36+
and :c:member:`PyConfig.hash_seed` instead.
37+
* :c:var:`Py_IsolatedFlag`: use :c:member:`PyConfig.isolated` instead.
38+
* :c:var:`Py_LegacyWindowsFSEncodingFlag`: use :c:member:`PyPreConfig.legacy_windows_fs_encoding` instead.
39+
* :c:var:`Py_LegacyWindowsStdioFlag`: use :c:member:`PyConfig.legacy_windows_stdio` instead.
40+
* :c:var:`!Py_FileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding` instead.
41+
* :c:var:`!Py_HasFileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding` instead.
42+
* :c:var:`!Py_FileSystemDefaultEncodeErrors`: use :c:member:`PyConfig.filesystem_errors` instead.
43+
* :c:var:`!Py_UTF8Mode`: use :c:member:`PyPreConfig.utf8_mode` instead. (see :c:func:`Py_PreInitialize`)
44+
45+
The :c:func:`Py_InitializeFromConfig` API should be used with
46+
:c:type:`PyConfig` instead.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
Pending Removal in Python 3.15
2+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3+
4+
* The bundled copy of ``libmpdecimal``.
5+
* :c:func:`PyImport_ImportModuleNoBlock`: use :c:func:`PyImport_ImportModule` instead.
6+
* :c:func:`PyWeakref_GET_OBJECT`: use :c:func:`PyWeakref_GetRef` instead.
7+
* :c:func:`PyWeakref_GetObject`: use :c:func:`PyWeakref_GetRef` instead.
8+
* :c:type:`!Py_UNICODE_WIDE` type: use :c:type:`wchar_t` instead.
9+
* :c:type:`Py_UNICODE` type: use :c:type:`wchar_t` instead.
10+
* Python initialization functions:
11+
12+
* :c:func:`PySys_ResetWarnOptions`: clear :data:`sys.warnoptions` and
13+
:data:`!warnings.filters` instead.
14+
* :c:func:`Py_GetExecPrefix`: get :data:`sys.exec_prefix` instead.
15+
* :c:func:`Py_GetPath`: get :data:`sys.path` instead.
16+
* :c:func:`Py_GetPrefix`: get :data:`sys.prefix` instead.
17+
* :c:func:`Py_GetProgramFullPath`: get :data:`sys.executable` instead.
18+
* :c:func:`Py_GetProgramName`: get :data:`sys.executable` instead.
19+
* :c:func:`Py_GetPythonHome`: get :c:member:`PyConfig.home` or
20+
the :envvar:`PYTHONHOME` environment variable instead.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
Pending Removal in Future Versions
2+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3+
4+
The following APIs are deprecated and will be removed,
5+
although there is currently no date scheduled for their removal.
6+
7+
* :c:macro:`Py_TPFLAGS_HAVE_FINALIZE`: unneeded since Python 3.8.
8+
* :c:func:`PyErr_Fetch`: use :c:func:`PyErr_GetRaisedException` instead.
9+
* :c:func:`PyErr_NormalizeException`: use :c:func:`PyErr_GetRaisedException` instead.
10+
* :c:func:`PyErr_Restore`: use :c:func:`PyErr_SetRaisedException` instead.
11+
* :c:func:`PyModule_GetFilename`: use :c:func:`PyModule_GetFilenameObject` instead.
12+
* :c:func:`PyOS_AfterFork`: use :c:func:`PyOS_AfterFork_Child` instead.
13+
* :c:func:`PySlice_GetIndicesEx`: use :c:func:`PySlice_Unpack` and :c:func:`PySlice_AdjustIndices` instead.
14+
* :c:func:`!PyUnicode_AsDecodedObject`: use :c:func:`PyCodec_Decode` instead.
15+
* :c:func:`!PyUnicode_AsDecodedUnicode`: use :c:func:`PyCodec_Decode` instead.
16+
* :c:func:`!PyUnicode_AsEncodedObject`: use :c:func:`PyCodec_Encode` instead.
17+
* :c:func:`!PyUnicode_AsEncodedUnicode`: use :c:func:`PyCodec_Encode` instead.
18+
* :c:func:`PyUnicode_READY`: unneeded since Python 3.12
19+
* :c:func:`!PyErr_Display`: use :c:func:`PyErr_DisplayException` instead.
20+
* :c:func:`!_PyErr_ChainExceptions`: use ``_PyErr_ChainExceptions1`` instead.
21+
* :c:member:`!PyBytesObject.ob_shash` member:
22+
call :c:func:`PyObject_Hash` instead.
23+
* :c:member:`!PyDictObject.ma_version_tag` member.
24+
* Thread Local Storage (TLS) API:
25+
26+
* :c:func:`PyThread_create_key`: use :c:func:`PyThread_tss_alloc` instead.
27+
* :c:func:`PyThread_delete_key`: use :c:func:`PyThread_tss_free` instead.
28+
* :c:func:`PyThread_set_key_value`: use :c:func:`PyThread_tss_set` instead.
29+
* :c:func:`PyThread_get_key_value`: use :c:func:`PyThread_tss_get` instead.
30+
* :c:func:`PyThread_delete_key_value`: use :c:func:`PyThread_tss_delete` instead.
31+
* :c:func:`PyThread_ReInitTLS`: unneeded since Python 3.7.

Doc/deprecations/index.rst

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
Deprecations
22
============
33

4-
.. include:: pending-removal-in-3.14.rst
5-
64
.. include:: pending-removal-in-3.15.rst
75

86
.. include:: pending-removal-in-3.16.rst
97

108
.. include:: pending-removal-in-future.rst
9+
10+
C API Deprecations
11+
------------------
12+
13+
.. include:: c-api-pending-removal-in-3.14.rst
14+
15+
.. include:: c-api-pending-removal-in-3.15.rst
16+
17+
.. include:: c-api-pending-removal-in-future.rst

Doc/whatsnew/3.12.rst

Lines changed: 4 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -2210,92 +2210,13 @@ Deprecated
22102210
overrides :c:member:`~PyTypeObject.tp_new` is deprecated.
22112211
Call the metaclass instead.
22122212

2213-
Pending Removal in Python 3.14
2214-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2213+
.. Add deprecations above alphabetically, not here at the end.
22152214
2216-
* The ``ma_version_tag`` field in :c:type:`PyDictObject` for extension modules
2217-
(:pep:`699`; :gh:`101193`).
2215+
.. include:: ../deprecations/c-api-pending-removal-in-3.14.rst
22182216

2219-
* Global configuration variables:
2217+
.. include:: ../deprecations/c-api-pending-removal-in-3.15.rst
22202218

2221-
* :c:var:`Py_DebugFlag`: use :c:member:`PyConfig.parser_debug`
2222-
* :c:var:`Py_VerboseFlag`: use :c:member:`PyConfig.verbose`
2223-
* :c:var:`Py_QuietFlag`: use :c:member:`PyConfig.quiet`
2224-
* :c:var:`Py_InteractiveFlag`: use :c:member:`PyConfig.interactive`
2225-
* :c:var:`Py_InspectFlag`: use :c:member:`PyConfig.inspect`
2226-
* :c:var:`Py_OptimizeFlag`: use :c:member:`PyConfig.optimization_level`
2227-
* :c:var:`Py_NoSiteFlag`: use :c:member:`PyConfig.site_import`
2228-
* :c:var:`Py_BytesWarningFlag`: use :c:member:`PyConfig.bytes_warning`
2229-
* :c:var:`Py_FrozenFlag`: use :c:member:`PyConfig.pathconfig_warnings`
2230-
* :c:var:`Py_IgnoreEnvironmentFlag`: use :c:member:`PyConfig.use_environment`
2231-
* :c:var:`Py_DontWriteBytecodeFlag`: use :c:member:`PyConfig.write_bytecode`
2232-
* :c:var:`Py_NoUserSiteDirectory`: use :c:member:`PyConfig.user_site_directory`
2233-
* :c:var:`Py_UnbufferedStdioFlag`: use :c:member:`PyConfig.buffered_stdio`
2234-
* :c:var:`Py_HashRandomizationFlag`: use :c:member:`PyConfig.use_hash_seed`
2235-
and :c:member:`PyConfig.hash_seed`
2236-
* :c:var:`Py_IsolatedFlag`: use :c:member:`PyConfig.isolated`
2237-
* :c:var:`Py_LegacyWindowsFSEncodingFlag`: use :c:member:`PyPreConfig.legacy_windows_fs_encoding`
2238-
* :c:var:`Py_LegacyWindowsStdioFlag`: use :c:member:`PyConfig.legacy_windows_stdio`
2239-
* :c:var:`!Py_FileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding`
2240-
* :c:var:`!Py_HasFileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding`
2241-
* :c:var:`!Py_FileSystemDefaultEncodeErrors`: use :c:member:`PyConfig.filesystem_errors`
2242-
* :c:var:`!Py_UTF8Mode`: use :c:member:`PyPreConfig.utf8_mode` (see :c:func:`Py_PreInitialize`)
2243-
2244-
The :c:func:`Py_InitializeFromConfig` API should be used with
2245-
:c:type:`PyConfig` instead.
2246-
2247-
* Creating :c:data:`immutable types <Py_TPFLAGS_IMMUTABLETYPE>` with mutable
2248-
bases (:gh:`95388`).
2249-
2250-
Pending Removal in Python 3.15
2251-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2252-
2253-
* :c:func:`PyImport_ImportModuleNoBlock`: use :c:func:`PyImport_ImportModule`
2254-
* :c:type:`!Py_UNICODE_WIDE` type: use :c:type:`wchar_t`
2255-
* :c:type:`Py_UNICODE` type: use :c:type:`wchar_t`
2256-
* Python initialization functions:
2257-
2258-
* :c:func:`PySys_ResetWarnOptions`: clear :data:`sys.warnoptions` and
2259-
:data:`!warnings.filters`
2260-
* :c:func:`Py_GetExecPrefix`: get :data:`sys.exec_prefix`
2261-
* :c:func:`Py_GetPath`: get :data:`sys.path`
2262-
* :c:func:`Py_GetPrefix`: get :data:`sys.prefix`
2263-
* :c:func:`Py_GetProgramFullPath`: get :data:`sys.executable`
2264-
* :c:func:`Py_GetProgramName`: get :data:`sys.executable`
2265-
* :c:func:`Py_GetPythonHome`: get :c:member:`PyConfig.home` or
2266-
the :envvar:`PYTHONHOME` environment variable
2267-
2268-
Pending Removal in Future Versions
2269-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2270-
2271-
The following APIs are deprecated and will be removed,
2272-
although there is currently no date scheduled for their removal.
2273-
2274-
* :c:macro:`Py_TPFLAGS_HAVE_FINALIZE`: unneeded since Python 3.8
2275-
* :c:func:`PyErr_Fetch`: use :c:func:`PyErr_GetRaisedException`
2276-
* :c:func:`PyErr_NormalizeException`: use :c:func:`PyErr_GetRaisedException`
2277-
* :c:func:`PyErr_Restore`: use :c:func:`PyErr_SetRaisedException`
2278-
* :c:func:`PyModule_GetFilename`: use :c:func:`PyModule_GetFilenameObject`
2279-
* :c:func:`PyOS_AfterFork`: use :c:func:`PyOS_AfterFork_Child`
2280-
* :c:func:`PySlice_GetIndicesEx`: use :c:func:`PySlice_Unpack` and :c:func:`PySlice_AdjustIndices`
2281-
* :c:func:`!PyUnicode_AsDecodedObject`: use :c:func:`PyCodec_Decode`
2282-
* :c:func:`!PyUnicode_AsDecodedUnicode`: use :c:func:`PyCodec_Decode`
2283-
* :c:func:`!PyUnicode_AsEncodedObject`: use :c:func:`PyCodec_Encode`
2284-
* :c:func:`!PyUnicode_AsEncodedUnicode`: use :c:func:`PyCodec_Encode`
2285-
* :c:func:`PyUnicode_READY`: unneeded since Python 3.12
2286-
* :c:func:`!PyErr_Display`: use :c:func:`PyErr_DisplayException`
2287-
* :c:func:`!_PyErr_ChainExceptions`: use ``_PyErr_ChainExceptions1``
2288-
* :c:member:`!PyBytesObject.ob_shash` member:
2289-
call :c:func:`PyObject_Hash` instead
2290-
* :c:member:`!PyDictObject.ma_version_tag` member
2291-
* Thread Local Storage (TLS) API:
2292-
2293-
* :c:func:`PyThread_create_key`: use :c:func:`PyThread_tss_alloc`
2294-
* :c:func:`PyThread_delete_key`: use :c:func:`PyThread_tss_free`
2295-
* :c:func:`PyThread_set_key_value`: use :c:func:`PyThread_tss_set`
2296-
* :c:func:`PyThread_get_key_value`: use :c:func:`PyThread_tss_get`
2297-
* :c:func:`PyThread_delete_key_value`: use :c:func:`PyThread_tss_delete`
2298-
* :c:func:`PyThread_ReInitTLS`: unneeded since Python 3.7
2219+
.. include:: ../deprecations/c-api-pending-removal-in-future.rst
22992220

23002221
Removed
23012222
-------

Doc/whatsnew/3.13.rst

Lines changed: 7 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -2196,6 +2196,9 @@ Removed C APIs
21962196
be used instead.
21972197
(Contributed by Serhiy Storchaka in :gh:`86493`.)
21982198

2199+
* Remove undocumented ``PY_TIMEOUT_MAX`` constant from the limited C API.
2200+
(Contributed by Victor Stinner in :gh:`110014`.)
2201+
21992202
Deprecated C APIs
22002203
-----------------
22012204

@@ -2237,105 +2240,13 @@ Deprecated C APIs
22372240
Refer to the deprecation notices on each function for their recommended replacements.
22382241
(Soft deprecated as part of :pep:`667`.)
22392242

2240-
Pending Removal in Python 3.14
2241-
------------------------------
2242-
2243-
* Creating immutable types (:c:macro:`Py_TPFLAGS_IMMUTABLETYPE`) with mutable
2244-
bases using the C API.
2245-
2246-
* Functions to configure the Python initialization, deprecated in Python 3.11:
2247-
2248-
* ``PySys_SetArgvEx()``: set :c:member:`PyConfig.argv` instead.
2249-
* ``PySys_SetArgv()``: set :c:member:`PyConfig.argv` instead.
2250-
* ``Py_SetProgramName()``: set :c:member:`PyConfig.program_name` instead.
2251-
* ``Py_SetPythonHome()``: set :c:member:`PyConfig.home` instead.
2252-
2253-
The :c:func:`Py_InitializeFromConfig` API should be used with
2254-
:c:type:`PyConfig` instead.
2255-
2256-
* Global configuration variables:
2257-
2258-
* :c:var:`Py_DebugFlag`: use :c:member:`PyConfig.parser_debug`
2259-
* :c:var:`Py_VerboseFlag`: use :c:member:`PyConfig.verbose`
2260-
* :c:var:`Py_QuietFlag`: use :c:member:`PyConfig.quiet`
2261-
* :c:var:`Py_InteractiveFlag`: use :c:member:`PyConfig.interactive`
2262-
* :c:var:`Py_InspectFlag`: use :c:member:`PyConfig.inspect`
2263-
* :c:var:`Py_OptimizeFlag`: use :c:member:`PyConfig.optimization_level`
2264-
* :c:var:`Py_NoSiteFlag`: use :c:member:`PyConfig.site_import`
2265-
* :c:var:`Py_BytesWarningFlag`: use :c:member:`PyConfig.bytes_warning`
2266-
* :c:var:`Py_FrozenFlag`: use :c:member:`PyConfig.pathconfig_warnings`
2267-
* :c:var:`Py_IgnoreEnvironmentFlag`: use :c:member:`PyConfig.use_environment`
2268-
* :c:var:`Py_DontWriteBytecodeFlag`: use :c:member:`PyConfig.write_bytecode`
2269-
* :c:var:`Py_NoUserSiteDirectory`: use :c:member:`PyConfig.user_site_directory`
2270-
* :c:var:`Py_UnbufferedStdioFlag`: use :c:member:`PyConfig.buffered_stdio`
2271-
* :c:var:`Py_HashRandomizationFlag`: use :c:member:`PyConfig.use_hash_seed`
2272-
and :c:member:`PyConfig.hash_seed`
2273-
* :c:var:`Py_IsolatedFlag`: use :c:member:`PyConfig.isolated`
2274-
* :c:var:`Py_LegacyWindowsFSEncodingFlag`: use :c:member:`PyPreConfig.legacy_windows_fs_encoding`
2275-
* :c:var:`Py_LegacyWindowsStdioFlag`: use :c:member:`PyConfig.legacy_windows_stdio`
2276-
* :c:var:`!Py_FileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding`
2277-
* :c:var:`!Py_HasFileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding`
2278-
* :c:var:`!Py_FileSystemDefaultEncodeErrors`: use :c:member:`PyConfig.filesystem_errors`
2279-
* :c:var:`!Py_UTF8Mode`: use :c:member:`PyPreConfig.utf8_mode` (see :c:func:`Py_PreInitialize`)
2280-
2281-
The :c:func:`Py_InitializeFromConfig` API should be used with
2282-
:c:type:`PyConfig` instead.
2283-
2284-
Pending Removal in Python 3.15
2285-
------------------------------
2286-
2287-
* The bundled copy of ``libmpdecimal``.
2288-
* :c:func:`PyImport_ImportModuleNoBlock`: use :c:func:`PyImport_ImportModule`.
2289-
* :c:func:`PyWeakref_GET_OBJECT`: use :c:func:`PyWeakref_GetRef` instead.
2290-
* :c:func:`PyWeakref_GetObject`: use :c:func:`PyWeakref_GetRef` instead.
2291-
* :c:type:`!Py_UNICODE_WIDE` type: use :c:type:`wchar_t` instead.
2292-
* :c:type:`Py_UNICODE` type: use :c:type:`wchar_t` instead.
2293-
* Python initialization functions:
2294-
2295-
* :c:func:`PySys_ResetWarnOptions`: clear :data:`sys.warnoptions` and
2296-
:data:`!warnings.filters` instead.
2297-
* :c:func:`Py_GetExecPrefix`: get :data:`sys.exec_prefix` instead.
2298-
* :c:func:`Py_GetPath`: get :data:`sys.path` instead.
2299-
* :c:func:`Py_GetPrefix`: get :data:`sys.prefix` instead.
2300-
* :c:func:`Py_GetProgramFullPath`: get :data:`sys.executable` instead.
2301-
* :c:func:`Py_GetProgramName`: get :data:`sys.executable` instead.
2302-
* :c:func:`Py_GetPythonHome`: get :c:member:`PyConfig.home` or
2303-
:envvar:`PYTHONHOME` environment variable instead.
2243+
.. Add deprecations above alphabetically, not here at the end.
23042244
2305-
Pending Removal in Future Versions
2306-
----------------------------------
2307-
2308-
The following APIs were deprecated in earlier Python versions and will be
2309-
removed, although there is currently no date scheduled for their removal.
2310-
2311-
* :c:macro:`Py_TPFLAGS_HAVE_FINALIZE`: no needed since Python 3.8.
2312-
* :c:func:`PyErr_Fetch`: use :c:func:`PyErr_GetRaisedException`.
2313-
* :c:func:`PyErr_NormalizeException`: use :c:func:`PyErr_GetRaisedException`.
2314-
* :c:func:`PyErr_Restore`: use :c:func:`PyErr_SetRaisedException`.
2315-
* :c:func:`PyModule_GetFilename`: use :c:func:`PyModule_GetFilenameObject`.
2316-
* :c:func:`PyOS_AfterFork`: use :c:func:`PyOS_AfterFork_Child()`.
2317-
* :c:func:`PySlice_GetIndicesEx`.
2318-
* :c:func:`!PyUnicode_AsDecodedObject`.
2319-
* :c:func:`!PyUnicode_AsDecodedUnicode`.
2320-
* :c:func:`!PyUnicode_AsEncodedObject`.
2321-
* :c:func:`!PyUnicode_AsEncodedUnicode`.
2322-
* :c:func:`PyUnicode_READY`: not needed since Python 3.12.
2323-
* :c:func:`!_PyErr_ChainExceptions`.
2324-
* :c:member:`!PyBytesObject.ob_shash` member:
2325-
call :c:func:`PyObject_Hash` instead.
2326-
* :c:member:`!PyDictObject.ma_version_tag` member.
2327-
* TLS API:
2328-
2329-
* :c:func:`PyThread_create_key`: use :c:func:`PyThread_tss_alloc`.
2330-
* :c:func:`PyThread_delete_key`: use :c:func:`PyThread_tss_free`.
2331-
* :c:func:`PyThread_set_key_value`: use :c:func:`PyThread_tss_set`.
2332-
* :c:func:`PyThread_get_key_value`: use :c:func:`PyThread_tss_get`.
2333-
* :c:func:`PyThread_delete_key_value`: use :c:func:`PyThread_tss_delete`.
2334-
* :c:func:`PyThread_ReInitTLS`: no longer needed.
2245+
.. include:: ../deprecations/c-api-pending-removal-in-3.14.rst
23352246

2336-
* Remove undocumented ``PY_TIMEOUT_MAX`` constant from the limited C API.
2337-
(Contributed by Victor Stinner in :gh:`110014`.)
2247+
.. include:: ../deprecations/c-api-pending-removal-in-3.15.rst
23382248

2249+
.. include:: ../deprecations/c-api-pending-removal-in-future.rst
23392250

23402251
Regression Test Changes
23412252
=======================

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy