o
    tBh%                  
   @  s   d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZ ddlmZmZmZmZmZmZ dD ]\ZZeeeegedeeefgdd q6d	D ]\ZZeeeegeeedd
 qMdD ]\ZZeeeegeeedd
 q`edeegeeddd edeegedeeddgdd dD ]\ZZeeeeeedd qedeedeedd edeegededd
 edeeegededd
 edeegededd
 edegeded  ed!eeged"ed Zed!eeeged#ed  ed$eeeged%ed Zed&eeged'ed Zed(eeged)ed Zeg ed*eedefgd+Zeeee
eged,ed-Zeeee
eged.ed-Zeeeeged/ed-Z eg ed0eedefgd+Z!eeged1ed-Z"eege	d2ed-Z#ed3eged4ed Z$eeged5ed-Z%eeged6ed-Z&eeged7ed-Z'eeged8ed-Z(d9S ):a  Fallback primitive operations that operate on 'object' operands.

These just call the relevant Python C API function or a thin wrapper
around an API function. Most of these also have faster, specialized
ops that operate on some more specific types.

Many of these ops are given a low priority (0) so that specialized ops
will take precedence. If your specialized op doesn't seem to be used,
check that the priorities are configured properly.
    )annotations)	ERR_MAGIC	ERR_NEVER)bool_rprimitivec_int_rprimitivec_pyssize_t_rprimitivec_size_t_rprimitiveint_rprimitiveobject_pointer_rprimitiveobject_rprimitivepointer_rprimitive)ERR_NEG_INT	binary_op	custom_opfunction_op	method_opunary_op))z==   )z!=   )<r   )z<=   )>   )z>=   PyObject_RichCompare)name	arg_typesreturn_typec_function_name
error_kindextra_int_constantspriority))+PyNumber_Add)-PyNumber_Subtract)*PyNumber_Multiply)z//PyNumber_FloorDivide)/PyNumber_TrueDivide)%PyNumber_Remainder)z<<PyNumber_Lshift)z>>PyNumber_Rshift)&PyNumber_And)^PyNumber_Xor)|PyNumber_Or)@PyNumber_MatrixMultiply)r   r   r   r   r   r!   ))z+=PyNumber_InPlaceAdd)z-=PyNumber_InPlaceSubtract)z*=PyNumber_InPlaceMultiply)z@=PyNumber_InPlaceMatrixMultiply)z//=PyNumber_InPlaceFloorDivide)z/=PyNumber_InPlaceTrueDivide)z%=PyNumber_InPlaceRemainder)z<<=PyNumber_InPlaceLshift)z>>=PyNumber_InPlaceRshift)z&=PyNumber_InPlaceAnd)z^=PyNumber_InPlaceXor)z|=PyNumber_InPlaceOrz**CPyNumber_Power)r   r   r   r   r   r!   inPySequence_Containsr   )r   r   r   r   r   truncated_typeorderingr!   ))r$   PyNumber_Negative)r"   PyNumber_Positive)~PyNumber_Invert)r   arg_typer   r   r   r!   notPyObject_Not)r   rL   r   r   r   rF   r!   __getitem__PyObject_GetItem__setitem__PyObject_SetItem__delitem__PyObject_DelItemzbuiltins.hashCPyObject_Hash)r   r   r   r   r   zbuiltins.getattrCPyObject_GetAttrCPyObject_GetAttr3zbuiltins.setattrPyObject_SetAttrzbuiltins.hasattrPyObject_HasAttrzbuiltins.delattrPyObject_DelAttrPyObject_CallFunctionObjArgs)r   r   r   r   var_arg_typer    _PyObject_Vectorcall)r   r   r   r   PyObject_VectorcallMethodPyObject_CallCPyObject_CallMethodObjArgsCPyObject_SizePyObject_Sizezbuiltins.iterPyObject_GetIterPyIter_NextCPyIter_NextCPy_GetAIterCPy_GetANextN))__doc__
__future__r   mypyc.ir.opsr   r   mypyc.ir.rtypesr   r   r   r   r	   r
   r   r   mypyc.primitives.registryr   r   r   r   r   r   opopidfuncnamepy_getattr_oppy_setattr_oppy_hasattr_oppy_delattr_op
py_call_oppy_vectorcall_oppy_vectorcall_method_oppy_call_with_kwargs_oppy_method_call_opgeneric_len_opgeneric_ssize_t_len_opiter_opnext_opnext_raw_opaiter_opanext_op r   r   s/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypyc/primitives/generic_ops.py<module>   s   ( 
	
				


					

	
	
