gh-141226: Deprecate PEP-456 support for embedders (#141287)

Deprecate PEP-456 [1] support for providing an external definition
of the string hashing scheme. Removal is scheduled for Python 3.19.

Previously, embedders could define the ``Py_HASH_ALGORITHM`` macro to be
``Py_HASH_EXTERNAL`` [2] to indicate that the hashing scheme was provided
externally but this feature was undocumented, untested and most likely
unused.

[1]: https://peps.python.org/pep-0456/
[2]: https://peps.python.org/pep-0456/#hash-function-selection
This commit is contained in:
Bénédikt Tran
2026-02-21 12:42:13 +01:00
committed by GitHub
parent 3a2a686cc4
commit 34f4fa8425
5 changed files with 22 additions and 1 deletions
@@ -0,0 +1,4 @@
Pending removal in Python 3.19
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* :pep:`456` embedders support for the string hashing scheme definition.
+4
View File
@@ -20,8 +20,12 @@ C API deprecations
.. include:: c-api-pending-removal-in-3.15.rst
.. include:: c-api-pending-removal-in-3.16.rst
.. include:: c-api-pending-removal-in-3.18.rst
.. include:: c-api-pending-removal-in-3.19.rst
.. include:: c-api-pending-removal-in-3.20.rst
.. include:: c-api-pending-removal-in-future.rst
+10
View File
@@ -1723,6 +1723,16 @@ on Python 3.13 and older.
Deprecated C APIs
-----------------
* Deprecate :pep:`456` support for providing an external definition
of the string hashing scheme. Removal is scheduled for Python 3.19.
Previously, embedders could define :c:macro:`Py_HASH_ALGORITHM` to be
``Py_HASH_EXTERNAL`` to indicate that the hashing scheme was provided
externally but this feature was undocumented, untested and most likely
unused.
(Contributed by Bénédikt Tran in :gh:`141226`.)
* For unsigned integer formats in :c:func:`PyArg_ParseTuple`,
accepting Python integers with value that is larger than the maximal value
for the C type or less than the minimal value for the corresponding
@@ -0,0 +1,3 @@
Deprecate :pep:`456` support for providing an external definition
of the string hashing scheme. Removal is scheduled for Python 3.19.
Patch by Bénédikt Tran.
+1 -1
View File
@@ -17,7 +17,7 @@
_Py_HashSecret_t _Py_HashSecret = {{0}};
#if Py_HASH_ALGORITHM == Py_HASH_EXTERNAL
extern PyHash_FuncDef PyHash_Func;
Py_DEPRECATED(3.15) extern PyHash_FuncDef PyHash_Func;
#else
static PyHash_FuncDef PyHash_Func;
#endif