gh-141726: Add PyDict_SetDefaultRef() to the Stable ABI (#141727)

Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
This commit is contained in:
da-woods 2025-11-19 11:38:10 +00:00 committed by GitHub
parent 52f70a6f60
commit afa0badcc5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 18 additions and 10 deletions

View file

@ -160,6 +160,7 @@ func,PyDict_Merge,3.2,,
func,PyDict_MergeFromSeq2,3.2,,
func,PyDict_New,3.2,,
func,PyDict_Next,3.2,,
func,PyDict_SetDefaultRef,3.15,,
func,PyDict_SetItem,3.2,,
func,PyDict_SetItemString,3.2,,
func,PyDict_Size,3.2,,

View file

@ -39,16 +39,6 @@ Py_DEPRECATED(3.14) PyAPI_FUNC(PyObject *) _PyDict_GetItemStringWithError(PyObje
PyAPI_FUNC(PyObject *) PyDict_SetDefault(
PyObject *mp, PyObject *key, PyObject *defaultobj);
// Inserts `key` with a value `default_value`, if `key` is not already present
// in the dictionary. If `result` is not NULL, then the value associated
// with `key` is returned in `*result` (either the existing value, or the now
// inserted `default_value`).
// Returns:
// -1 on error
// 0 if `key` was not present and `default_value` was inserted
// 1 if `key` was present and `default_value` was not inserted
PyAPI_FUNC(int) PyDict_SetDefaultRef(PyObject *mp, PyObject *key, PyObject *default_value, PyObject **result);
/* Get the number of items of a dictionary. */
static inline Py_ssize_t PyDict_GET_SIZE(PyObject *op) {
PyDictObject *mp;

View file

@ -68,6 +68,18 @@ PyAPI_FUNC(int) PyDict_GetItemRef(PyObject *mp, PyObject *key, PyObject **result
PyAPI_FUNC(int) PyDict_GetItemStringRef(PyObject *mp, const char *key, PyObject **result);
#endif
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030F0000
// Inserts `key` with a value `default_value`, if `key` is not already present
// in the dictionary. If `result` is not NULL, then the value associated
// with `key` is returned in `*result` (either the existing value, or the now
// inserted `default_value`).
// Returns:
// -1 on error
// 0 if `key` was not present and `default_value` was inserted
// 1 if `key` was present and `default_value` was not inserted
PyAPI_FUNC(int) PyDict_SetDefaultRef(PyObject *mp, PyObject *key, PyObject *default_value, PyObject **result);
#endif
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030A0000
PyAPI_FUNC(PyObject *) PyObject_GenericGetDict(PyObject *, void *);
#endif

View file

@ -165,6 +165,7 @@ SYMBOL_NAMES = (
"PyDict_MergeFromSeq2",
"PyDict_New",
"PyDict_Next",
"PyDict_SetDefaultRef",
"PyDict_SetItem",
"PyDict_SetItemString",
"PyDict_Size",

View file

@ -0,0 +1 @@
Add :c:func:`PyDict_SetDefaultRef` to the Stable ABI.

View file

@ -2639,3 +2639,5 @@
added = '3.15'
[const.Py_mod_token]
added = '3.15'
[function.PyDict_SetDefaultRef]
added = '3.15'

1
PC/python3dll.c generated
View file

@ -191,6 +191,7 @@ EXPORT_FUNC(PyDict_Merge)
EXPORT_FUNC(PyDict_MergeFromSeq2)
EXPORT_FUNC(PyDict_New)
EXPORT_FUNC(PyDict_Next)
EXPORT_FUNC(PyDict_SetDefaultRef)
EXPORT_FUNC(PyDict_SetItem)
EXPORT_FUNC(PyDict_SetItemString)
EXPORT_FUNC(PyDict_Size)