mirror of
https://github.com/python/cpython.git
synced 2025-10-03 13:45:29 +00:00
gh-91417: Remove PySequence_Fast() from the limited C API (#129398)
The function never worked with the limited C API. It was added by mistake.
This commit is contained in:
parent
ae4788809d
commit
2ad069d906
6 changed files with 35 additions and 26 deletions
1
Doc/data/stable_abi.dat
generated
1
Doc/data/stable_abi.dat
generated
|
@ -582,7 +582,6 @@ func,PySequence_Contains,3.2,,
|
||||||
func,PySequence_Count,3.2,,
|
func,PySequence_Count,3.2,,
|
||||||
func,PySequence_DelItem,3.2,,
|
func,PySequence_DelItem,3.2,,
|
||||||
func,PySequence_DelSlice,3.2,,
|
func,PySequence_DelSlice,3.2,,
|
||||||
func,PySequence_Fast,3.2,,
|
|
||||||
func,PySequence_GetItem,3.2,,
|
func,PySequence_GetItem,3.2,,
|
||||||
func,PySequence_GetSlice,3.2,,
|
func,PySequence_GetSlice,3.2,,
|
||||||
func,PySequence_In,3.2,,
|
func,PySequence_In,3.2,,
|
||||||
|
|
|
@ -1343,6 +1343,11 @@ Limited C API changes
|
||||||
implementation details.
|
implementation details.
|
||||||
(Contributed by Victor Stinner in :gh:`120600` and :gh:`124127`.)
|
(Contributed by Victor Stinner in :gh:`120600` and :gh:`124127`.)
|
||||||
|
|
||||||
|
* Remove :c:func:`PySequence_Fast` from the limited C API, since this function
|
||||||
|
has to be used with :c:macro:`PySequence_Fast_GET_ITEM` which never worked
|
||||||
|
in the limited C API.
|
||||||
|
(Contributed by Victor Stinner in :gh:`91417`.)
|
||||||
|
|
||||||
|
|
||||||
Porting to Python 3.14
|
Porting to Python 3.14
|
||||||
----------------------
|
----------------------
|
||||||
|
|
|
@ -726,31 +726,6 @@ PyAPI_FUNC(PyObject *) PySequence_Tuple(PyObject *o);
|
||||||
This is equivalent to the Python expression: list(o) */
|
This is equivalent to the Python expression: list(o) */
|
||||||
PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o);
|
PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o);
|
||||||
|
|
||||||
/* Return the sequence 'o' as a list, unless it's already a tuple or list.
|
|
||||||
|
|
||||||
Use PySequence_Fast_GET_ITEM to access the members of this list, and
|
|
||||||
PySequence_Fast_GET_SIZE to get its length.
|
|
||||||
|
|
||||||
Returns NULL on failure. If the object does not support iteration, raises a
|
|
||||||
TypeError exception with 'm' as the message text. */
|
|
||||||
PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m);
|
|
||||||
|
|
||||||
/* Return the size of the sequence 'o', assuming that 'o' was returned by
|
|
||||||
PySequence_Fast and is not NULL. */
|
|
||||||
#define PySequence_Fast_GET_SIZE(o) \
|
|
||||||
(PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
|
|
||||||
|
|
||||||
/* Return the 'i'-th element of the sequence 'o', assuming that o was returned
|
|
||||||
by PySequence_Fast, and that i is within bounds. */
|
|
||||||
#define PySequence_Fast_GET_ITEM(o, i)\
|
|
||||||
(PyList_Check(o) ? PyList_GET_ITEM((o), (i)) : PyTuple_GET_ITEM((o), (i)))
|
|
||||||
|
|
||||||
/* Return a pointer to the underlying item array for
|
|
||||||
an object returned by PySequence_Fast */
|
|
||||||
#define PySequence_Fast_ITEMS(sf) \
|
|
||||||
(PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
|
|
||||||
: ((PyTupleObject *)(sf))->ob_item)
|
|
||||||
|
|
||||||
/* Return the number of occurrences on value on 'o', that is, return
|
/* Return the number of occurrences on value on 'o', that is, return
|
||||||
the number of keys for which o[key] == value.
|
the number of keys for which o[key] == value.
|
||||||
|
|
||||||
|
|
|
@ -85,3 +85,29 @@ PyAPI_FUNC(Py_ssize_t) PyObject_LengthHint(PyObject *o, Py_ssize_t);
|
||||||
need to be corrected for a negative index. */
|
need to be corrected for a negative index. */
|
||||||
#define PySequence_ITEM(o, i)\
|
#define PySequence_ITEM(o, i)\
|
||||||
( Py_TYPE(o)->tp_as_sequence->sq_item((o), (i)) )
|
( Py_TYPE(o)->tp_as_sequence->sq_item((o), (i)) )
|
||||||
|
|
||||||
|
/* Return the sequence 'o' as a list, unless it's already a tuple or list.
|
||||||
|
|
||||||
|
Use PySequence_Fast_GET_ITEM to access the members of this list, and
|
||||||
|
PySequence_Fast_GET_SIZE to get its length.
|
||||||
|
|
||||||
|
Returns NULL on failure. If the object does not support iteration, raises a
|
||||||
|
TypeError exception with 'm' as the message text. */
|
||||||
|
PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m);
|
||||||
|
|
||||||
|
/* Return the size of the sequence 'o', assuming that 'o' was returned by
|
||||||
|
PySequence_Fast and is not NULL. */
|
||||||
|
#define PySequence_Fast_GET_SIZE(o) \
|
||||||
|
(PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
|
||||||
|
|
||||||
|
/* Return the 'i'-th element of the sequence 'o', assuming that o was returned
|
||||||
|
by PySequence_Fast, and that i is within bounds. */
|
||||||
|
#define PySequence_Fast_GET_ITEM(o, i)\
|
||||||
|
(PyList_Check(o) ? PyList_GET_ITEM((o), (i)) : PyTuple_GET_ITEM((o), (i)))
|
||||||
|
|
||||||
|
/* Return a pointer to the underlying item array for
|
||||||
|
an object returned by PySequence_Fast */
|
||||||
|
#define PySequence_Fast_ITEMS(sf) \
|
||||||
|
(PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
|
||||||
|
: ((PyTupleObject *)(sf))->ob_item)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Remove :c:func:`PySequence_Fast` from the limited C API, since this function
|
||||||
|
has to be used with :c:macro:`PySequence_Fast_GET_ITEM` which never worked
|
||||||
|
in the limited C API. Patch by Victor Stinner.
|
|
@ -1253,6 +1253,7 @@
|
||||||
added = '3.2'
|
added = '3.2'
|
||||||
[function.PySequence_Fast]
|
[function.PySequence_Fast]
|
||||||
added = '3.2'
|
added = '3.2'
|
||||||
|
abi_only = true
|
||||||
[function.PySequence_GetItem]
|
[function.PySequence_GetItem]
|
||||||
added = '3.2'
|
added = '3.2'
|
||||||
[function.PySequence_GetSlice]
|
[function.PySequence_GetSlice]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue