Skip to content

Commit d4fba90

Browse files
[3.13] GH-109975: Copyedit 3.13 What's New: Copyedit C API deprecations pending removal (GH-124336) (#124362)
GH-109975: Copyedit 3.13 What's New: Copyedit C API deprecations pending removal (GH-124336) (cherry picked from commit e7d465a) Co-authored-by: Adam Turner <[email protected]>
1 parent 161e155 commit d4fba90

File tree

4 files changed

+114
-60
lines changed

4 files changed

+114
-60
lines changed

Doc/deprecations/c-api-pending-removal-in-3.14.rst

+51-25
Original file line numberDiff line numberDiff line change
@@ -9,38 +9,64 @@ Pending Removal in Python 3.14
99

1010
* Functions to configure Python's initialization, deprecated in Python 3.11:
1111

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.
12+
* :c:func:`!PySys_SetArgvEx()`:
13+
Set :c:member:`PyConfig.argv` instead.
14+
* :c:func:`!PySys_SetArgv()`:
15+
Set :c:member:`PyConfig.argv` instead.
16+
* :c:func:`!Py_SetProgramName()`:
17+
Set :c:member:`PyConfig.program_name` instead.
18+
* :c:func:`!Py_SetPythonHome()`:
19+
Set :c:member:`PyConfig.home` instead.
1620

1721
The :c:func:`Py_InitializeFromConfig` API should be used with
1822
:c:type:`PyConfig` instead.
1923

2024
* Global configuration variables:
2125

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`
26+
* :c:var:`Py_DebugFlag`:
27+
Use :c:member:`PyConfig.parser_debug` instead.
28+
* :c:var:`Py_VerboseFlag`:
29+
Use :c:member:`PyConfig.verbose` instead.
30+
* :c:var:`Py_QuietFlag`:
31+
Use :c:member:`PyConfig.quiet` instead.
32+
* :c:var:`Py_InteractiveFlag`:
33+
Use :c:member:`PyConfig.interactive` instead.
34+
* :c:var:`Py_InspectFlag`:
35+
Use :c:member:`PyConfig.inspect` instead.
36+
* :c:var:`Py_OptimizeFlag`:
37+
Use :c:member:`PyConfig.optimization_level` instead.
38+
* :c:var:`Py_NoSiteFlag`:
39+
Use :c:member:`PyConfig.site_import` instead.
40+
* :c:var:`Py_BytesWarningFlag`:
41+
Use :c:member:`PyConfig.bytes_warning` instead.
42+
* :c:var:`Py_FrozenFlag`:
43+
Use :c:member:`PyConfig.pathconfig_warnings` instead.
44+
* :c:var:`Py_IgnoreEnvironmentFlag`:
45+
Use :c:member:`PyConfig.use_environment` instead.
46+
* :c:var:`Py_DontWriteBytecodeFlag`:
47+
Use :c:member:`PyConfig.write_bytecode` instead.
48+
* :c:var:`Py_NoUserSiteDirectory`:
49+
Use :c:member:`PyConfig.user_site_directory` instead.
50+
* :c:var:`Py_UnbufferedStdioFlag`:
51+
Use :c:member:`PyConfig.buffered_stdio` instead.
52+
* :c:var:`Py_HashRandomizationFlag`:
53+
Use :c:member:`PyConfig.use_hash_seed`
3654
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`)
55+
* :c:var:`Py_IsolatedFlag`:
56+
Use :c:member:`PyConfig.isolated` instead.
57+
* :c:var:`Py_LegacyWindowsFSEncodingFlag`:
58+
Use :c:member:`PyPreConfig.legacy_windows_fs_encoding` instead.
59+
* :c:var:`Py_LegacyWindowsStdioFlag`:
60+
Use :c:member:`PyConfig.legacy_windows_stdio` instead.
61+
* :c:var:`!Py_FileSystemDefaultEncoding`:
62+
Use :c:member:`PyConfig.filesystem_encoding` instead.
63+
* :c:var:`!Py_HasFileSystemDefaultEncoding`:
64+
Use :c:member:`PyConfig.filesystem_encoding` instead.
65+
* :c:var:`!Py_FileSystemDefaultEncodeErrors`:
66+
Use :c:member:`PyConfig.filesystem_errors` instead.
67+
* :c:var:`!Py_UTF8Mode`:
68+
Use :c:member:`PyPreConfig.utf8_mode` instead.
69+
(see :c:func:`Py_PreInitialize`)
4470

4571
The :c:func:`Py_InitializeFromConfig` API should be used with
4672
:c:type:`PyConfig` instead.

Doc/deprecations/c-api-pending-removal-in-3.15.rst

+21-14
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,26 @@ Pending Removal in Python 3.15
22
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
33

44
* 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.
5+
* The :c:func:`PyImport_ImportModuleNoBlock`:
6+
Use :c:func:`PyImport_ImportModule` instead.
7+
* :c:func:`PyWeakref_GetObject` and :c:func:`PyWeakref_GET_OBJECT`:
8+
Use :c:func:`PyWeakref_GetRef` instead.
9+
* :c:type:`Py_UNICODE` type and the :c:macro:`!Py_UNICODE_WIDE` macro:
10+
Use :c:type:`wchar_t` instead.
1011
* Python initialization functions:
1112

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.
13+
* :c:func:`PySys_ResetWarnOptions`:
14+
Clear :data:`sys.warnoptions` and :data:`!warnings.filters` instead.
15+
* :c:func:`Py_GetExecPrefix`:
16+
Get :data:`sys.exec_prefix` instead.
17+
* :c:func:`Py_GetPath`:
18+
Get :data:`sys.path` instead.
19+
* :c:func:`Py_GetPrefix`:
20+
Get :data:`sys.prefix` instead.
21+
* :c:func:`Py_GetProgramFullPath`:
22+
Get :data:`sys.executable` instead.
23+
* :c:func:`Py_GetProgramName`:
24+
Get :data:`sys.executable` instead.
25+
* :c:func:`Py_GetPythonHome`:
26+
Get :c:member:`PyConfig.home`
27+
or the :envvar:`PYTHONHOME` environment variable instead.

Doc/deprecations/c-api-pending-removal-in-future.rst

+40-20
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,48 @@ Pending Removal in Future Versions
44
The following APIs are deprecated and will be removed,
55
although there is currently no date scheduled for their removal.
66

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.
7+
* :c:macro:`Py_TPFLAGS_HAVE_FINALIZE`:
8+
Unneeded since Python 3.8.
9+
* :c:func:`PyErr_Fetch`:
10+
Use :c:func:`PyErr_GetRaisedException` instead.
11+
* :c:func:`PyErr_NormalizeException`:
12+
Use :c:func:`PyErr_GetRaisedException` instead.
13+
* :c:func:`PyErr_Restore`:
14+
Use :c:func:`PyErr_SetRaisedException` instead.
15+
* :c:func:`PyModule_GetFilename`:
16+
Use :c:func:`PyModule_GetFilenameObject` instead.
17+
* :c:func:`PyOS_AfterFork`:
18+
Use :c:func:`PyOS_AfterFork_Child` instead.
19+
* :c:func:`PySlice_GetIndicesEx`:
20+
Use :c:func:`PySlice_Unpack` and :c:func:`PySlice_AdjustIndices` instead.
21+
* :c:func:`!PyUnicode_AsDecodedObject`:
22+
Use :c:func:`PyCodec_Decode` instead.
23+
* :c:func:`!PyUnicode_AsDecodedUnicode`:
24+
Use :c:func:`PyCodec_Decode` instead.
25+
* :c:func:`!PyUnicode_AsEncodedObject`:
26+
Use :c:func:`PyCodec_Encode` instead.
27+
* :c:func:`!PyUnicode_AsEncodedUnicode`:
28+
Use :c:func:`PyCodec_Encode` instead.
29+
* :c:func:`PyUnicode_READY`:
30+
Unneeded since Python 3.12
31+
* :c:func:`!PyErr_Display`:
32+
Use :c:func:`PyErr_DisplayException` instead.
33+
* :c:func:`!_PyErr_ChainExceptions`:
34+
Use :c:func:`!_PyErr_ChainExceptions1` instead.
2135
* :c:member:`!PyBytesObject.ob_shash` member:
2236
call :c:func:`PyObject_Hash` instead.
2337
* :c:member:`!PyDictObject.ma_version_tag` member.
2438
* Thread Local Storage (TLS) API:
2539

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.
40+
* :c:func:`PyThread_create_key`:
41+
Use :c:func:`PyThread_tss_alloc` instead.
42+
* :c:func:`PyThread_delete_key`:
43+
Use :c:func:`PyThread_tss_free` instead.
44+
* :c:func:`PyThread_set_key_value`:
45+
Use :c:func:`PyThread_tss_set` instead.
46+
* :c:func:`PyThread_get_key_value`:
47+
Use :c:func:`PyThread_tss_get` instead.
48+
* :c:func:`PyThread_delete_key_value`:
49+
Use :c:func:`PyThread_tss_delete` instead.
50+
* :c:func:`PyThread_ReInitTLS`:
51+
Unneeded since Python 3.7.

Doc/whatsnew/3.13.rst

+2-1
Original file line numberDiff line numberDiff line change
@@ -2481,7 +2481,8 @@ Deprecated C APIs
24812481
or :c:func:`PyModule_AddObjectRef`.
24822482
(Contributed by Serhiy Storchaka in :gh:`86493`.)
24832483

2484-
* Deprecate the old ``Py_UNICODE`` and ``PY_UNICODE_TYPE`` types.
2484+
* Deprecate the old ``Py_UNICODE`` and ``PY_UNICODE_TYPE`` types
2485+
and the :c:macro:`!Py_UNICODE_WIDE` define.
24852486
Use the :c:type:`wchar_t` type directly instead.
24862487
Since Python 3.3, ``Py_UNICODE`` and ``PY_UNICODE_TYPE``
24872488
are just aliases to :c:type:`!wchar_t`.

0 commit comments

Comments
 (0)