format_str='{dest} = !{args[0]}', emit=simple_emit('{dest} = !{args[0]};'), priority=1) method_op('__getitem__', arg_types=[object_rprimitive, object_rprimitive], result_type=object_rprimitive, error_kind=ERR_MAGIC, emit=call_emit('PyObject_GetItem'), priority=0) method_op('__setitem__', arg_types=[object_rprimitive, object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_negative_bool_emit('PyObject_SetItem'), priority=0) method_op('__delitem__', arg_types=[object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_negative_bool_emit('PyObject_DelItem'), priority=0) func_op(name='builtins.hash', arg_types=[object_rprimitive], result_type=int_rprimitive, error_kind=ERR_MAGIC, emit=call_emit('CPyObject_Hash'))
format_str='{dest} = {args[0]}[{args[1]}] :: unsafe list', emit=simple_emit('{dest} = CPyList_GetItemUnsafe({args[0]}, {args[1]});')) list_set_item_op = method_op( name='__setitem__', arg_types=[list_rprimitive, int_rprimitive, object_rprimitive], steals=[False, False, True], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_emit('CPyList_SetItem')) list_append_op = method_op(name='append', arg_types=[list_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_negative_bool_emit('PyList_Append')) list_extend_op = method_op( name='extend', arg_types=[list_rprimitive, object_rprimitive], result_type=object_rprimitive, error_kind=ERR_MAGIC, emit=simple_emit( '{dest} = _PyList_Extend((PyListObject *) {args[0]}, {args[1]});')) method_op(name='pop', arg_types=[list_rprimitive], result_type=object_rprimitive, error_kind=ERR_MAGIC, emit=call_emit('CPyList_PopLast'))
error_kind=ERR_NEVER, emit=simple_emit('{dest} = (PyObject *)&PyDict_Type;'), is_borrowed=True) dict_get_item_op = method_op(name='__getitem__', arg_types=[dict_rprimitive, object_rprimitive], result_type=object_rprimitive, error_kind=ERR_MAGIC, emit=call_emit('CPyDict_GetItem')) dict_set_item_op = method_op( name='__setitem__', arg_types=[dict_rprimitive, object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_negative_bool_emit('CPyDict_SetItem')) binary_op( op='in', arg_types=[object_rprimitive, dict_rprimitive], result_type=bool_rprimitive, error_kind=ERR_MAGIC, format_str='{dest} = {args[0]} in {args[1]} :: dict', emit=negative_int_emit('{dest} = PyDict_Contains({args[1]}, {args[0]});')) dict_update_op = method_op(name='update', arg_types=[dict_rprimitive, dict_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_negative_bool_emit('CPyDict_Update'), priority=2)
result_type=bool_rprimitive, error_kind=ERR_MAGIC, format_str='{dest} = {args[0]} in {args[1]} :: set', emit=negative_int_emit('{dest} = PySet_Contains({args[1]}, {args[0]});')) method_op(name='remove', arg_types=[set_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_emit('CPySet_Remove')) method_op(name='discard', arg_types=[set_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_negative_bool_emit('PySet_Discard')) set_add_op = method_op(name='add', arg_types=[set_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_negative_bool_emit('PySet_Add')) # This is not a public API but looks like it should be fine. method_op(name='update', arg_types=[set_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_FALSE, emit=call_negative_bool_emit('_PySet_Update')) method_op(name='clear',