Sequence Protocol¶
- intPySequence_Check(PyObject*o)¶
- Part of theStable ABI.
Return
1
if the object provides the sequence protocol, and0
otherwise.Note that it returns1
for Python classes with a__getitem__()
method, unless they aredict
subclasses, since in general itis impossible to determine what type of keys the class supports. Thisfunction always succeeds.
- Py_ssize_tPySequence_Size(PyObject*o)¶
- Py_ssize_tPySequence_Length(PyObject*o)¶
- Part of theStable ABI.
Returns the number of objects in sequenceo on success, and
-1
onfailure. This is equivalent to the Python expressionlen(o)
.
- PyObject*PySequence_Concat(PyObject*o1,PyObject*o2)¶
- Return value: New reference. Part of theStable ABI.
Return the concatenation ofo1 ando2 on success, and
NULL
on failure.This is the equivalent of the Python expressiono1+o2
.
- PyObject*PySequence_Repeat(PyObject*o,Py_ssize_tcount)¶
- Return value: New reference. Part of theStable ABI.
Return the result of repeating sequence objectocount times, or
NULL
onfailure. This is the equivalent of the Python expressiono*count
.
- PyObject*PySequence_InPlaceConcat(PyObject*o1,PyObject*o2)¶
- Return value: New reference. Part of theStable ABI.
Return the concatenation ofo1 ando2 on success, and
NULL
on failure.The operation is donein-place wheno1 supports it. This is the equivalentof the Python expressiono1+=o2
.
- PyObject*PySequence_InPlaceRepeat(PyObject*o,Py_ssize_tcount)¶
- Return value: New reference. Part of theStable ABI.
Return the result of repeating sequence objectocount times, or
NULL
onfailure. The operation is donein-place wheno supports it. This is theequivalent of the Python expressiono*=count
.
- PyObject*PySequence_GetItem(PyObject*o,Py_ssize_ti)¶
- Return value: New reference. Part of theStable ABI.
Return theith element ofo, or
NULL
on failure. This is the equivalent ofthe Python expressiono[i]
.
- PyObject*PySequence_GetSlice(PyObject*o,Py_ssize_ti1,Py_ssize_ti2)¶
- Return value: New reference. Part of theStable ABI.
Return the slice of sequence objecto betweeni1 andi2, or
NULL
onfailure. This is the equivalent of the Python expressiono[i1:i2]
.
- intPySequence_SetItem(PyObject*o,Py_ssize_ti,PyObject*v)¶
- Part of theStable ABI.
Assign objectv to theith element ofo. Raise an exceptionand return
-1
on failure; return0
on success. Thisis the equivalent of the Python statemento[i]=v
. This functiondoesnot steal a reference tov.Ifv is
NULL
, the element is deleted, but this feature isdeprecated in favour of usingPySequence_DelItem()
.
- intPySequence_DelItem(PyObject*o,Py_ssize_ti)¶
- Part of theStable ABI.
Delete theith element of objecto. Returns
-1
on failure. This is theequivalent of the Python statementdelo[i]
.
- intPySequence_SetSlice(PyObject*o,Py_ssize_ti1,Py_ssize_ti2,PyObject*v)¶
- Part of theStable ABI.
Assign the sequence objectv to the slice in sequence objecto fromi1 toi2. This is the equivalent of the Python statement
o[i1:i2]=v
.
- intPySequence_DelSlice(PyObject*o,Py_ssize_ti1,Py_ssize_ti2)¶
- Part of theStable ABI.
Delete the slice in sequence objecto fromi1 toi2. Returns
-1
onfailure. This is the equivalent of the Python statementdelo[i1:i2]
.
- Py_ssize_tPySequence_Count(PyObject*o,PyObject*value)¶
- Part of theStable ABI.
Return the number of occurrences ofvalue ino, that is, return the numberof keys for which
o[key]==value
. On failure, return-1
. This isequivalent to the Python expressiono.count(value)
.
- intPySequence_Contains(PyObject*o,PyObject*value)¶
- Part of theStable ABI.
Determine ifo containsvalue. If an item ino is equal tovalue,return
1
, otherwise return0
. On error, return-1
. This isequivalent to the Python expressionvalueino
.
- Py_ssize_tPySequence_Index(PyObject*o,PyObject*value)¶
- Part of theStable ABI.
Return the first indexi for which
o[i]==value
. On error, return-1
. This is equivalent to the Python expressiono.index(value)
.
- PyObject*PySequence_List(PyObject*o)¶
- Return value: New reference. Part of theStable ABI.
Return a list object with the same contents as the sequence or iterableo,or
NULL
on failure. The returned list is guaranteed to be new. This isequivalent to the Python expressionlist(o)
.
- PyObject*PySequence_Tuple(PyObject*o)¶
- Return value: New reference. Part of theStable ABI.
Return a tuple object with the same contents as the sequence or iterableo,or
NULL
on failure. Ifo is a tuple, a new reference will be returned,otherwise a tuple will be constructed with the appropriate contents. This isequivalent to the Python expressiontuple(o)
.
- PyObject*PySequence_Fast(PyObject*o,constchar*m)¶
- Return value: New reference. Part of theStable ABI.
Return the sequence or iterableo as an object usable by the other
PySequence_Fast*
family of functions. If the object is not a sequence oriterable, raisesTypeError
withm as the message text. ReturnsNULL
on failure.The
PySequence_Fast*
functions are thus named because they assumeo is aPyTupleObject
or aPyListObject
and accessthe data fields ofo directly.As a CPython implementation detail, ifo is already a sequence or list, itwill be returned.
- Py_ssize_tPySequence_Fast_GET_SIZE(PyObject*o)¶
Returns the length ofo, assuming thato was returned by
PySequence_Fast()
and thato is notNULL
. The size can also beretrieved by callingPySequence_Size()
ono, butPySequence_Fast_GET_SIZE()
is faster because it can assumeo is alist or tuple.
- PyObject*PySequence_Fast_GET_ITEM(PyObject*o,Py_ssize_ti)¶
- Return value: Borrowed reference.
Return theith element ofo, assuming thato was returned by
PySequence_Fast()
,o is notNULL
, and thati is within bounds.
- PyObject**PySequence_Fast_ITEMS(PyObject*o)¶
Return the underlying array of PyObject pointers. Assumes thato was returnedby
PySequence_Fast()
ando is notNULL
.Note, if a list gets resized, the reallocation may relocate the items array.So, only use the underlying array pointer in contexts where the sequencecannot change.
- PyObject*PySequence_ITEM(PyObject*o,Py_ssize_ti)¶
- Return value: New reference.
Return theith element ofo or
NULL
on failure. Faster form ofPySequence_GetItem()
but without checking thatPySequence_Check()
ono is true and without adjustment for negativeindices.