Sequence Protocol

intPySequence_Check(PyObject*o)
Part of theStable ABI.

Return1 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, andNULL 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, orNULL 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, andNULL 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, orNULL 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, orNULL 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, orNULL 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 isNULL, 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 statemento[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 whicho[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,return1, 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 whicho[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,orNULL 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,orNULL 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 otherPySequence_Fast* family of functions. If the object is not a sequence oriterable, raisesTypeError withm as the message text. ReturnsNULL on failure.

ThePySequence_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 byPySequence_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 byPySequence_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 returnedbyPySequence_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 orNULL on failure. Faster form ofPySequence_GetItem() but without checking thatPySequence_Check() ono is true and without adjustment for negativeindices.