Files
cpython/Python/slots.toml
T
2026-05-05 09:18:04 +02:00

837 lines
14 KiB
TOML

# This file lists all PySlot values
# This should only be used as input to Tools/build/generate_slots.py,
# its format can change at any time (e.g. we can switch to slots.csv)
# Entries:
# name: name of the slot
# kind:
# - 'type', 'mod': slots to create a particular kind of object
# - 'slot': special slots applicable to any kind of object
# - 'compat': old IDs that need to be resolved
# dtype: data type (tag for the union of sl_ptr, sl_size, etc.)
# equivalents: for 'compat' slots; the slots to resolve to
# is_type_field: slot that corresponds to a field in the type object (or in
# an array like PyNumberMethods).
# functype: C function type, where needed
# duplicates, nulls: How to handle common "problems" -- duplicate slots with
# the same ID, and NULL pointers, respectively
# - 'allow': not a problem for this slot
# - 'deprecated': issue a deprecation warning. Don't use for new slots.
# (typically, the problem was disallowed in docs, but allowed in practice)
# - 'reject': raise error
# The default for duplicate slots is 'reject'
# The default for NULLs is 'reject' for pointer slots; 'allow' for
# non-pointer ones
# must_be_static: true if slot needs the PySlot_STATIC flag (in PySlot struct)
[0]
name = 'Py_slot_end'
kind = 'slot'
dtype = 'void'
[1]
kind = 'compat'
equivalents = {type='Py_bf_getbuffer', mod='Py_mod_create'}
[2]
kind = 'compat'
equivalents = {type='Py_bf_releasebuffer', mod='Py_mod_exec'}
[3]
kind = 'compat'
equivalents = {type='Py_mp_ass_subscript', mod='Py_mod_multiple_interpreters'}
[4]
kind = 'compat'
equivalents = {type='Py_mp_length', mod='Py_mod_gil'}
[5]
name = 'Py_mp_subscript'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[6]
name = 'Py_nb_absolute'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[7]
name = 'Py_nb_add'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[8]
name = 'Py_nb_and'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[9]
name = 'Py_nb_bool'
kind = 'type'
is_type_field = true
functype = 'inquiry'
duplicates = 'deprecated'
nulls = 'deprecated'
[10]
name = 'Py_nb_divmod'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[11]
name = 'Py_nb_float'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[12]
name = 'Py_nb_floor_divide'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[13]
name = 'Py_nb_index'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[14]
name = 'Py_nb_inplace_add'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[15]
name = 'Py_nb_inplace_and'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[16]
name = 'Py_nb_inplace_floor_divide'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[17]
name = 'Py_nb_inplace_lshift'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[18]
name = 'Py_nb_inplace_multiply'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[19]
name = 'Py_nb_inplace_or'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[20]
name = 'Py_nb_inplace_power'
kind = 'type'
is_type_field = true
functype = 'ternaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[21]
name = 'Py_nb_inplace_remainder'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[22]
name = 'Py_nb_inplace_rshift'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[23]
name = 'Py_nb_inplace_subtract'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[24]
name = 'Py_nb_inplace_true_divide'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[25]
name = 'Py_nb_inplace_xor'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[26]
name = 'Py_nb_int'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[27]
name = 'Py_nb_invert'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[28]
name = 'Py_nb_lshift'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[29]
name = 'Py_nb_multiply'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[30]
name = 'Py_nb_negative'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[31]
name = 'Py_nb_or'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[32]
name = 'Py_nb_positive'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[33]
name = 'Py_nb_power'
kind = 'type'
is_type_field = true
functype = 'ternaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[34]
name = 'Py_nb_remainder'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[35]
name = 'Py_nb_rshift'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[36]
name = 'Py_nb_subtract'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[37]
name = 'Py_nb_true_divide'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[38]
name = 'Py_nb_xor'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[39]
name = 'Py_sq_ass_item'
kind = 'type'
is_type_field = true
functype = 'ssizeobjargproc'
duplicates = 'deprecated'
nulls = 'deprecated'
[40]
name = 'Py_sq_concat'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[41]
name = 'Py_sq_contains'
kind = 'type'
is_type_field = true
functype = 'objobjproc'
duplicates = 'deprecated'
nulls = 'deprecated'
[42]
name = 'Py_sq_inplace_concat'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[43]
name = 'Py_sq_inplace_repeat'
kind = 'type'
is_type_field = true
functype = 'ssizeargfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[44]
name = 'Py_sq_item'
kind = 'type'
is_type_field = true
functype = 'ssizeargfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[45]
name = 'Py_sq_length'
kind = 'type'
is_type_field = true
functype = 'lenfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[46]
name = 'Py_sq_repeat'
kind = 'type'
is_type_field = true
functype = 'ssizeargfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[47]
name = 'Py_tp_alloc'
kind = 'type'
is_type_field = true
functype = 'allocfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[48]
name = 'Py_tp_base'
kind = 'type'
is_type_field = true
dtype = 'ptr'
duplicates = 'deprecated'
nulls = 'deprecated'
[49]
name = 'Py_tp_bases'
kind = 'type'
is_type_field = true
dtype = 'ptr'
duplicates = 'deprecated'
nulls = 'deprecated'
[50]
name = 'Py_tp_call'
kind = 'type'
is_type_field = true
functype = 'ternaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[51]
name = 'Py_tp_clear'
kind = 'type'
is_type_field = true
functype = 'inquiry'
duplicates = 'deprecated'
nulls = 'deprecated'
[52]
name = 'Py_tp_dealloc'
kind = 'type'
is_type_field = true
functype = 'destructor'
duplicates = 'deprecated'
nulls = 'deprecated'
[53]
name = 'Py_tp_del'
kind = 'type'
is_type_field = true
functype = 'destructor'
duplicates = 'deprecated'
nulls = 'deprecated'
[54]
name = 'Py_tp_descr_get'
kind = 'type'
is_type_field = true
functype = 'descrgetfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[55]
name = 'Py_tp_descr_set'
kind = 'type'
is_type_field = true
functype = 'descrsetfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[56]
name = 'Py_tp_doc'
kind = 'type'
is_type_field = true
dtype = 'ptr'
nulls = 'allow'
[57]
name = 'Py_tp_getattr'
kind = 'type'
is_type_field = true
functype = 'getattrfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[58]
name = 'Py_tp_getattro'
kind = 'type'
is_type_field = true
functype = 'getattrofunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[59]
name = 'Py_tp_hash'
kind = 'type'
is_type_field = true
functype = 'hashfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[60]
name = 'Py_tp_init'
kind = 'type'
is_type_field = true
functype = 'initproc'
duplicates = 'deprecated'
nulls = 'deprecated'
[61]
name = 'Py_tp_is_gc'
kind = 'type'
is_type_field = true
functype = 'inquiry'
duplicates = 'deprecated'
nulls = 'deprecated'
[62]
name = 'Py_tp_iter'
kind = 'type'
is_type_field = true
functype = 'getiterfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[63]
name = 'Py_tp_iternext'
kind = 'type'
is_type_field = true
functype = 'iternextfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[64]
name = 'Py_tp_methods'
kind = 'type'
is_type_field = true
dtype = 'ptr'
duplicates = 'deprecated'
nulls = 'deprecated'
must_be_static = true
[65]
name = 'Py_tp_new'
kind = 'type'
is_type_field = true
functype = 'newfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[66]
name = 'Py_tp_repr'
kind = 'type'
is_type_field = true
functype = 'reprfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[67]
name = 'Py_tp_richcompare'
kind = 'type'
is_type_field = true
functype = 'richcmpfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[68]
name = 'Py_tp_setattr'
kind = 'type'
is_type_field = true
functype = 'setattrfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[69]
name = 'Py_tp_setattro'
kind = 'type'
is_type_field = true
functype = 'setattrofunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[70]
name = 'Py_tp_str'
kind = 'type'
is_type_field = true
functype = 'reprfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[71]
name = 'Py_tp_traverse'
kind = 'type'
is_type_field = true
functype = 'traverseproc'
duplicates = 'deprecated'
nulls = 'deprecated'
[72]
name = 'Py_tp_members'
kind = 'type'
is_type_field = true
dtype = 'ptr'
nulls = 'reject'
must_be_static = true
[73]
name = 'Py_tp_getset'
kind = 'type'
is_type_field = true
dtype = 'ptr'
duplicates = 'deprecated'
nulls = 'deprecated'
must_be_static = true
[74]
name = 'Py_tp_free'
kind = 'type'
is_type_field = true
functype = 'freefunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[75]
name = 'Py_nb_matrix_multiply'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[76]
name = 'Py_nb_inplace_matrix_multiply'
kind = 'type'
is_type_field = true
functype = 'binaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[77]
name = 'Py_am_await'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[78]
name = 'Py_am_aiter'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[79]
name = 'Py_am_anext'
kind = 'type'
is_type_field = true
functype = 'unaryfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[80]
name = 'Py_tp_finalize'
kind = 'type'
is_type_field = true
functype = 'destructor'
duplicates = 'deprecated'
nulls = 'deprecated'
[81]
name = 'Py_am_send'
kind = 'type'
is_type_field = true
functype = 'sendfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[82]
name = 'Py_tp_vectorcall'
kind = 'type'
is_type_field = true
functype = 'vectorcallfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[83]
name = 'Py_tp_token'
kind = 'type'
is_type_field = true
dtype = 'ptr'
field = 'ht_token'
duplicates = 'deprecated'
nulls = 'allow'
[84]
name = 'Py_mod_create'
kind = 'mod'
dtype = 'func'
nulls = 'deprecated'
[85]
name = 'Py_mod_exec'
kind = 'mod'
dtype = 'func'
duplicates = 'allow' # only alowed in PyModuleDef.m_slots
nulls = 'reject'
[86]
name = 'Py_mod_multiple_interpreters'
kind = 'mod'
dtype = 'uint64'
[87]
name = 'Py_mod_gil'
kind = 'mod'
dtype = 'uint64'
[88]
name = 'Py_bf_getbuffer'
kind = 'type'
is_type_field = true
functype = 'getbufferproc'
duplicates = 'deprecated'
nulls = 'deprecated'
[89]
name = 'Py_bf_releasebuffer'
kind = 'type'
is_type_field = true
functype = 'releasebufferproc'
duplicates = 'deprecated'
nulls = 'deprecated'
[90]
name = 'Py_mp_ass_subscript'
kind = 'type'
is_type_field = true
functype = 'objobjargproc'
duplicates = 'deprecated'
nulls = 'deprecated'
[91]
name = 'Py_mp_length'
kind = 'type'
is_type_field = true
functype = 'lenfunc'
duplicates = 'deprecated'
nulls = 'deprecated'
[92]
name = 'Py_slot_subslots'
kind = 'slot'
dtype = 'ptr'
nulls = 'allow'
[93]
name = 'Py_tp_slots'
kind = 'type'
dtype = 'ptr'
nulls = 'allow'
[94]
name = 'Py_mod_slots'
kind = 'mod'
dtype = 'ptr'
nulls = 'allow'
[95]
name = 'Py_tp_name'
kind = 'type'
dtype = 'ptr'
[96]
name = 'Py_tp_basicsize'
kind = 'type'
dtype = 'size'
[97]
name = 'Py_tp_extra_basicsize'
kind = 'type'
dtype = 'size'
[98]
name = 'Py_tp_itemsize'
kind = 'type'
dtype = 'size'
[99]
name = 'Py_tp_flags'
kind = 'type'
dtype = 'uint64'
[100]
name = 'Py_mod_name'
kind = 'mod'
dtype = 'ptr'
[101]
name = 'Py_mod_doc'
kind = 'mod'
dtype = 'ptr'
[102]
name = 'Py_mod_state_size'
kind = 'mod'
dtype = 'size'
[103]
name = 'Py_mod_methods'
kind = 'mod'
dtype = 'ptr'
must_be_static = true
[104]
name = 'Py_mod_state_traverse'
kind = 'mod'
dtype = 'func'
[105]
name = 'Py_mod_state_clear'
kind = 'mod'
dtype = 'func'
[106]
name = 'Py_mod_state_free'
kind = 'mod'
dtype = 'func'
[107]
name = 'Py_tp_metaclass'
kind = 'type'
dtype = 'ptr'
[108]
name = 'Py_tp_module'
kind = 'type'
dtype = 'ptr'
[109]
name = 'Py_mod_abi'
kind = 'mod'
dtype = 'ptr'
duplicates = 'allow'
[110]
name = 'Py_mod_token'
kind = 'mod'
dtype = 'ptr'