picop.cytuple#

Fast tuple accessors.

picop.cytuple.tuple_check(p)#

Return True if p is a tuple or subtype (PyTuple_Check). :type p: object :param p:

Return type:

bool

Parameters:

p (object)

picop.cytuple.tuple_check_exact(p)#

Return True if type(p) is tuple (PyTuple_CheckExact). :type p: object :param p:

Return type:

bool

Parameters:

p (object)

picop.cytuple.tuple_eq(a, b)#

Return True if typed tuples are equal (identity/len + richcompare). :type a: tuple :param a: :type b: tuple :param b:

Return type:

bool

Parameters:
picop.cytuple.tuple_get(t, i)#

Return t[i] via PyTuple_GET_ITEM.

Notes

Unchecked: out-of-bounds is undefined behavior. Prefer tuple_get_checked when the index may be OOB, or bound the index yourself before calling.

Parameters:
Return type:

object

picop.cytuple.tuple_get_checked(t, i)#

Return t[i] via bounds-checked PyTuple_GetItem.

Notes

Raises IndexError on out-of-bounds (unlike unchecked tuple_get).

Parameters:
Return type:

object

picop.cytuple.tuple_len(t)#

Return len(t) via PyTuple_GET_SIZE. :type t: tuple[object, ...] :param t:

Return type:

int

Parameters:

t (tuple[object, ...])

picop.cytuple.tuple_pack2(a, b)#

Return (a, b) via PyTuple_Pack. :type a: object :param a: :type b: object :param b:

Return type:

tuple[object, object]

Parameters:
picop.cytuple.tuple_pack3(a, b, c)#

Return (a, b, c) via PyTuple_Pack. :type a: object :param a: :type b: object :param b: :type c: object :param c:

Return type:

tuple[object, object, object]

Parameters:
picop.cytuple.tuple_pack4(a, b, c, d)#

Return (a, b, c, d) via PyTuple_Pack. :type a: object :param a: :type b: object :param b: :type c: object :param c: :type d: object :param d:

Return type:

tuple[object, object, object, object]

Parameters:
picop.cytuple.tuple_size(t)#

Return len(t) via checked PyTuple_Size.

Notes

Prefer tuple_len on typed hot paths.

Parameters:

t (tuple[object, ...])

Return type:

int

picop.cytuple.tuple_slice(t, low, high)#

Return t[low:high] as a new tuple via PyTuple_GetSlice. :type t: tuple[object, ...] :param t: :type low: int :param low: :type high: int :param high:

Return type:

tuple[object, ...]