# 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'