U
    {h                  6   @   s@  d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ e	ddZe	ddZe	d	d
Ze	dd
Ze	dd
Ze	dd
Ze	ddZe	ddZe	dd
ZG dd dZG dd dZG dd deZG dd deZG dd dZdd Zedddd d!d!ed"edd#d#d$d!d!ed"edd%d%dd!d!ed"edd&d&d'd!d!ed"edd(d(d)e	d*d
ejej e!d+ej d(gd!d!d,d-ge"d.d/ ej#ej$ej%fD  e"d0d/ ej&ej'ej(fD  edd1d1d2e	d3d
d4ed5d1d6d7e	d8dd4ed9d%d1d:d;d<ed=d>d?d@e	dAdd4edBd1d1dCedDd>d1dEedFedGd1d1dHed4edGd>d1dIed4edGdJd1dKed4edLdJd1dMdNed4edNdJd1dMed4edNd>d1dOed4edPd>d6dQe	dRd
d4edSd1dTdUedVd1d1dWe	dXd
d4edYd>d6dZed[d>d6d\ed]d>d1d^ed]d1d1d_ed`d1dadbedcddd1deedfd1d1dged4edfd>d1dhed4g didj ej)ej*fD  dkdj ej+ej,ej-fD  edld(d(dme	.dnd
ejej/e!doej0d(gdpdqd-edrdJd1dsedrd>d1dte	dud
d4edvd1d1dwedxd1d1dyd;d<edzdJd?d{ed|d%d1d:d;d<ed}d>d1d}ed~ddd1d~ed4g	 Z1ddg fddg fddg fddedddeddej2deddej2dgfddedddded4gfddeddd1de	ddd4edddded4gfd;deddd6deddddedddded4gfddedddded4gfddeddd?deddd?deddd?de	ddd4eddd?de	ddd4edddded4gfddeddd6deddd6deddd1de	dd
d4eddd1de	dd
d4eddd1de	dd
d4eddd1de	dd
d4eddd1de	dd
d4eddd1de	dd
d4eddd1de	dd
d4eddd1de	dd
d4eddd1de	dd
d4eddd?de	ddd4eddddӃgfddedej0ded4edej0ded4edej0ded4gfddeddd?dރeddd?de	ddd4eddd?de	ddd4eddd?deddd1dgfddg fddg fddg fddedej3ddd!e
j.dd
e4ddddedej5ddd!e
j.dd
e4ddddedej6ddd!e
j.dd
e4ddddgfgZ7e8ddddddddd;ddddddhZ9e4dde4dddddd dde4dddd;d de4dddde4ddde4dddddd dddddd d d d d d d d d d d d dddddddddddddddddd ddddddd	/e4dddd;d dddd;dd d d d d d d d dddddddddddddddddd ddddddd
*e4 e4dd;dddde4dddd d d ddde4 e4dddddZ:e:d ;e:d  e:d ;e:d  dd Z<e= ddddhdhdhe= ddddhddddhe= dZ>e?e?dddZ@dddejAfd ej0fd`ej6fdej6fdej5fdej3fd!ejBfd"ejCfd#ejCfd$ejCfd%eDej6d&fd'ejAfgfdddej2fdej2fgfgZEe ZFd(d) ZGi aHd*d+ ZId,d- ZJd.d/ ZKeK  i ZLd0d1 ZMd2d3 ZNd4d5 ZOd(S (6     )EncodedString)BuiltinScopeCClassScopeStructOrUnionScopeModuleScopeEntry)UtilityCodeTempitaUtilityCode)	Signature)
PyrexTypesZIterNextzObjectHandling.cZGetAttrZGetAttr3
Builtins.cZPyExecZPyExecGlobalsZGlobalsZIncludeStdlibHzModuleSetupCode.cZPySequenceMultiplyZPySliceAccessorsc                   @   s    e Zd ZdddZd	ddZdS )
_BuiltinOverride*NFc                 C   sT   |||  | _ | _| _|| | _| _|| | _| _|
| _|	| _|| _	|| _
|| _d S N)py_namecnamepy_equivargsret_type	func_typesigbuiltin_return_typeis_strict_signatureutility_codenogilspecialiser)selfr   r   r   r   r   r   r   r   r   r   r   r    r   ;/tmp/pip-unpacked-wheel-fhl22ezh/Cython/Compiler/Builtin.py__init__   s    z_BuiltinOverride.__init__c                 C   sN   |d kr"t | j| j| jd}d|_||}| jr8d|_| jrJt| j |_	|S )N)r   FT)
r
   r   r   r   exception_checkfunction_typer   r   builtin_typesreturn_type)r   r   self_argr   r   r   r   build_func_type)   s    
z _BuiltinOverride.build_func_type)r   NNNFNNN)NN)__name__
__module____qualname__r   r%   r   r   r   r   r      s               
r   c                   @   s   e Zd ZdddZdd ZdS )BuiltinAttributeNc                 C   s    || _ |p|| _|| _|| _d S r   )r   r   field_type_name
field_type)r   r   r   r+   r*   r   r   r   r   6   s    
zBuiltinAttribute.__init__c                 C   sH   | j d k	rt| j j}n| jp$tj}|j| j	| j
|d d}d|_d S )NprivateT)r*   builtin_scopelookuptyper+   r   py_object_typescopeZdeclarer   r   is_variable)r   	self_typer+   entryr   r   r   declare_in_type<   s
    
z BuiltinAttribute.declare_in_type)NNNr&   r'   r(   r   r5   r   r   r   r   r)   5   s   
r)   c                   @   s   e Zd Zdd ZdS )BuiltinFunctionc                 C   sD   | j | j }}|d kr | |}|j| j|| j| j| j| jd d S )Nr   )	r   r   r%   declare_builtin_cfunctionr   r   r   r   r   )r   r1   r   r   r   r   r   declare_in_scopeG   s    
    z BuiltinFunction.declare_in_scopeN)r&   r'   r(   r:   r   r   r   r   r7   F   s   r7   c                   @   s   e Zd Zdd ZdS )BuiltinMethodc                 C   sZ   | j | j }}|d kr<td|d }d|_d|_| ||}|jj| j	|| j
| jd d S )N Tr   )r   r   r   CFuncTypeArgZnot_noneZaccept_builtin_subtypesr%   r1   r9   r   r   r   )r   r3   Zmethod_typer   r$   r   r   r   r5   R   s       zBuiltinMethod.declare_in_typeN)r&   r'   r(   r5   r   r   r   r   r;   Q   s   r;   c                   @   s   e Zd ZdddZdd ZdS )BuiltinPropertyNc                 C   s(   || _ || _|| _|| _|| _|| _d S r   )r   property_type
call_cnamer   exception_valuer    )r   r   r@   rA   rB   r    r   r   r   r   r   `   s    zBuiltinProperty.__init__c                 C   s(   |j j| j| j| j| j| j| jd d S )NrB   r    r   )r1   Zdeclare_cpropertyr   r@   rA   rB   r    r   )r   r3   r   r   r   r5   i   s    zBuiltinProperty.declare_in_type)NNNr6   r   r   r   r   r?   ^   s
        
	r?   c              	   C   s  t |dkrd S |\}}|jr&| }|jr4| }|jsV|tksV|jrb|jsV|tkrbd}tj}n*|jr|jrd}|j	|j	kr|n|}nd S | j
}|rdnd | d|jrdnd |  }d| }|  }	|	d	}
|
d k	r|
 D ]}|j|kr|  S q| d |gd }d
|_|j}tj|td|d td|d gd| d
d
|d}tjd| d||jrt|jnd| | |dd}|	jd	|||d}|S )N   floatintZnogil_r<   _Ztd_Z__Pyx_divmod_divmodTabZ__Pyx_divmod_ERROR_VALUE_)rB   r    r   r   Zdivmod_r   )ZCFUNC_SUFFIXZMATH_SUFFIXZTYPEZRETURN_TYPEZNOGILcontextr=   )lenZ
is_typedefZresolve_known_typeZis_float
float_typeZis_intint_typer   c_double_typeZrankr   specialization_namer-   lookup_hereZall_alternativesr   Zdeclare_tuple_typeusedr/   	CFuncTyper>   r	   loadZmath_h_modifierZempty_declaration_coder9   )r1   Zargument_typesZtype_op1Ztype_op2implnumber_typer   Zcfunc_suffixZfunction_cnamer-   Zexisting_entryr4   Zctuple_entryr#   r!   r   r   r   r   _generate_divmod_functionv   sj    ",




 	   rX   absdfabsT)r   r   r   fZfabsfilZlabsNZ__Pyx_abs_longlongZabs_longlongargr   r   )r   r   c                 c   sD   | ]<}t d ddd| tj|td|dgddddV  qdS )rY   Nz
/*abs_{}*/r_   Tr`   r   )r7   formatrQ   r   rT   r>   .0tr   r   r   	<genexpr>   s    rf   c                 c   sD   | ]<}t d ddd|jtj|jtd|dgddddV  qdS )rY   Nz__Pyx_c_abs{}r_   Tr`   ra   )r7   rb   Z
funcsuffixr   rT   Z	real_typer>   rc   r   r   r   rf      s    OZ__Pyx_PyNumber_AbsoluteZpy_absr=   callablerJ   Z__Pyx_PyCallable_CheckZCallableCheckchrZPyUnicode_FromOrdinalstr)r   delattrZOOrZ__Pyx_PyObject_DelAttrZPyObjectDelAttrdirZPyObject_DirrH   ZPyNumber_Divmodr8   execZ__Pyx_PyExecGlobalsZ__Pyx_PyExec2ZOOOZ__Pyx_PyExec3Zgetattr3Z__Pyx_GetAttr3getattrZ__Pyx_GetAttrhasattrZ__Pyx_HasAttrZHasAttrhashhZPyObject_HashinternZ__Pyx_InternZIntern
isinstanceZPyObject_IsInstance
issubclassZPyObject_IsSubclassiterZPyCallIter_NewZPyObject_GetIterrM   zZPyObject_Lengthlocalsr<   Z__pyx_localsnextZ__Pyx_PyIter_NextZ__Pyx_PyIter_Next2c                 C   s8   g | ]0}t d dddtjtjtd|dgdddqS )ordNZ__Pyx_long_castcTr   ra   )r7   r   rT   c_long_typer>   rd   Zc_typer   r   r   
<listcomp>  s   
 r   c                 C   s8   g | ]0}t d dddtjtjtd|dgdddqS )rz   NZ__Pyx_uchar_castr{   Tr|   ra   )r7   r   rT   c_uchar_typer>   r~   r   r   r   r     s   
 rz   Z__Pyx_PyObject_OrdZ
object_ordr{   z(long)(Py_UCS4)-1)rB   powZPyNumber_PowerZ__Pyx_PyNumber_Power2Zpow2reloadZPyImport_ReloadModulereprZPyObject_ReprsetattrZPyObject_SetAttrunichrZ__Pyx_PyObject_AppendZ__Pyx_Globalsr/   z&PyType_TyperF   z&PyLong_TyperE   z&PyFloat_Typecomplexz&PyComplex_TypecvalZ
Py_complex)r*   realz	cval.real)r+   imagz	cval.imag	bytearrayz&PyByteArray_Type__mul__ZTzTZ__Pyx_PySequence_Multiplybytesz&PyBytes_TypejoinZTOZ__Pyx_PyBytes_JoinZ
StringJoinzStringTools.cz&PyUnicode_Type__contains__ZPyUnicode_ContainsZPyUnicode_Jointuplez&PyTuple_Typelistz&PyList_TypeinsertZTzOZPyList_InsertreverseZPyList_ReverseappendZ__Pyx_PyList_AppendZ
ListAppendz
Optimize.cextendZ__Pyx_PyList_ExtendZ
ListExtenddictz&PyDict_TypeZPyDict_ContainsZhas_keyitemsZ__Pyx_PyDict_ItemsZpy_dict_itemskeysZ__Pyx_PyDict_KeysZpy_dict_keysvaluesZ__Pyx_PyDict_ValuesZpy_dict_values	iteritemsZ__Pyx_PyDict_IterItemsZpy_dict_iteritemsiterkeysZ__Pyx_PyDict_IterKeysZpy_dict_iterkeys
itervaluesZ__Pyx_PyDict_IterValuesZpy_dict_itervalues	viewitemsZ__Pyx_PyDict_ViewItemsZpy_dict_viewitemsviewkeysZ__Pyx_PyDict_ViewKeysZpy_dict_viewkeys
viewvaluesZ__Pyx_PyDict_ViewValuesZpy_dict_viewvaluesclearZ__Pyx_PyDict_ClearZpy_dict_clearcopyZPyDict_Copyslicez&PySlice_TypestartZ__Pyx_PySlice_StartstopZ__Pyx_PySlice_StopstepZ__Pyx_PySlice_Stepsetz&PySet_TypeZPySet_CleardiscardZ__Pyx_PySet_DiscardZpy_set_discardremoveZ__Pyx_PySet_RemoveZpy_set_removeaddZ	PySet_AddpopZ	PySet_Pop	frozensetz&PyFrozenSet_TypeBaseExceptionz$((PyTypeObject*)PyExc_BaseException)	Exceptionz ((PyTypeObject*)PyExc_Exception)
memoryviewz&PyMemoryView_TypendimZ__Pyx_PyMemoryView_Get_ndimZmemoryview_get_from_buffer)namerK   rC   readonlyZ__Pyx_PyMemoryView_Get_readonlyitemsizeZ__Pyx_PyMemoryView_Get_itemsizeboolunicode)	conjugateztuple[int,int]bint)as_integer_ratio	bit_count
bit_lengthr   
from_bytes
is_integerto_bytes)r   r   fromhexhexr   
Py_ssize_t)r   countindex)r   r   zdict[int,object]ztuple[T,T,T]zlist[T])/
capitalizecasefoldcenterr   encodeendswith
expandtabsfindrb   
format_mapr   isalnumisalphaisascii	isdecimalisdigitisidentifierislower	isnumericisprintableisspaceistitleisupperr   ljustlowerlstrip	maketrans	partitionremoveprefixremovesuffixreplacerfindrindexrjust
rpartitionrsplitrstripsplit
splitlines
startswithstripswapcasetitle	translateupperzfill)*r   r   r   decoder   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )castr   tobytestolist
toreadonly)r   
differenceintersection
isdisjointissubset
issupersetsymmetric_differenceunion)r   fromkeyspopitem)r   rF   rE   r   r   rj   r   r   r   r   r   r   c                 C   s   | j }|tkrt| }||kr|| }d|kr<|dd }|dkrH| S d|kr^|d| j }|dkrltjS |dkrztjS t|j	S tj
S )N[    r   r   r   )r   inferred_method_return_typesr   r   r   c_bint_typec_py_ssize_t_typer-   r.   r/   r0   )Zbuiltin_typemethod_name	type_namemethodsZreturn_type_namer   r   r   "find_return_type_of_builtin_method|  s"    r  r   r   r   r   r   r   r   r   r   )r   rF   rE   r   r   rj   r   r   )builtin_type_namer  c                 C   sD   t | }|d krdS ||kr"dS t| }|d ks<||kr@dS dS )NFT)unsafe_compile_time_methodsgetr   )r  r  Zunsafe_methodsZknown_methodsr   r   r   is_safe_compile_time_method  s    

r  	Py_bufferbufobjrb   shapestrides
suboffsetsZ
smalltablerD   Zinternalc                  C   s   t D ]} | t qd S r   )builtin_function_tabler:   r-   )Zbfr   r   r   init_builtin_funcs  s    r  c                  C   s   t D ]\} }}| dkrd}n`| dkr*d}nR| dkr8d}nD| dkrFd}n6| d	krTd}n(| d
krbd}n| dkrpd}nd|   }tj}| dkrtj}n| dkrtj}tj| |||d}|t| < |D ]}|	| qqd S )Nr   ZPySetObjectr   ZPyByteArrayObjectrF   PyLongObjectrj   ZPyUnicodeObjectr   r   ZPyBaseExceptionObjectr   z
Py%sObject)r   r   r   r   r   )objstruct_cname
type_class)
builtin_types_tabler   r   BuiltinObjectTypeZ BuiltinTypeConstructorObjectTypeZPythonTupleTypeConstructorr-   Zdeclare_builtin_typer"   r5   )r   r   r  r  r  Zthe_typemethodr   r   r   init_builtin_types  s<       r  c               	   C   sT   t D ]J\} }}t| }|D ]\}}|j||d |dd qtj| d|dd |d qd S )NT)Zallow_pyobjectstructr   )r   )builtin_structs_tabler   declare_varr-   Zdeclare_struct_or_union)r   r   Zattribute_typesr1   Zattribute_nameZattribute_typer   r   r   init_builtin_structs  s    
      r  c                  C   s  t   t  t  tjdttjd ddd} t	dd| _
tdjatdjatd	jatd
jatdjatdjatdjatdjatdjatdjatdjatdjatdjatdjattdddatdd dtd}t| dt_ tjtdtd ddt_!tt"d< ttttttfa#tj$dks\t%tj$tjt_&ttj_&tj$dkst%tj$tj't_&ttj'_&tj$dkst%tj$tj(t_&ttj(_&tdja)d S )N	__debug__z__pyx_assertions_enabled()T)posr   Zis_cdefZAssertionsEnabledzExceptions.cr/   r   r   r   r   r   r   r   rj   r   r   rE   rF   r   r   z((PyObject*)&PyBool_Type)r  extern)Zouter_scopeZ
visibilityZparent_type)r  r   r	  )*r  r  r  r-   r  r   Zc_const_typer   r   load_cachedr   r.   r/   Z	type_type	list_type
tuple_type	dict_typeset_typefrozenset_typeZ
slice_typeZ
bytes_typeZunicode_typeZbytearray_typeZmemoryview_typerN   rO   Zcomplex_typer  r   Z	bool_typer   Z	set_scopeZis_final_typer4   r"   Zsequence_typesr   AssertionErrorZequivalent_typerP   c_double_complex_typeZpy_buffer_type)r4   r1   r   r   r   init_builtins  s`     
  

r'  c                 C   s  t | }|r|S | dkrt| d d }dtfdtfdtfdtfdtffD ]T\}}t|}|j	||d d}t
|d tj}d|_d|_||_||_d	| |f |_qJd
D ]b}t|}ttd| }|j	||d d}t
|d tj}d|_d|_||_||_d	| |f |_q|t | < n| dkrt| d d }ttd}td}|j	||d d}t
|d tj}d|_||_||_d|  |_dD ]}|jt|tjd d q||t | < n@| dkrt| d d }dD ]}|jt|tjd d q|t | < |S )NtypingDictListTupleSet	FrozenSet)r  Tz%s.%s)ClassVarOptionalUnionztyping.Zdataclasseszdataclasses.InitVarZInitVarz
%s.InitVar)Z	dataclassfield	functools)total_ordering)_known_module_scopesr  r   r"  r   r!  r#  r$  r   Zdeclare_typer   r   r0   Zis_pyglobalr2   r1   Zas_variableknown_standard_library_importZSpecialPythonTypeConstructorr  )module_namemodr   tpr4   Z	var_entryZindexed_typeZinitvar_stringr   r   r   'get_known_standard_library_module_scopeZ  sb    






r9  c                 C   sT   |  d}t|d }|dd  }t|dkr2d S t|}|rP|rP||d S d S )N.r   r   )r   r   rM   r9  rR   )Zqualified_nameZ
name_partsr6  restr7  r   r   r    get_known_standard_library_entry  s    
r<  c                 C   s|   g }d }| j r"|| j | j} q| jrx|| j}|rx|jrxt|jrP|j}n(t	|j}|rx||j d
t|}|S )Nr:  )Zis_attributer   	attributer  Zis_namer.   r   r5  r<  r9  r   reversed)nodeenvZqualified_name_partsZ
known_namer4   Zstandard_envr   r   r   'exprnode_to_known_standard_library_name  s&    
rA  )PZStringEncodingr   ZSymtabr   r   r   r   r   ZCoder   r	   Z	TypeSlotsr
   r<   r   rU   Ziter_next_utility_codeZgetattr_utility_codeZgetattr3_utility_codeZpyexec_utility_codeZpyexec_globals_utility_codeZglobals_utility_codeZinclude_std_lib_h_utility_codeZ pysequence_multiply_utility_codeZslice_accessor_utility_coder   r)   r7   r;   r?   rX   rT   Zc_longlong_typer>   r   Zc_uint_typeZc_ulong_typeZc_ulonglong_typeZc_float_complex_typer&  Zc_longdouble_complex_typeZc_py_ucs4_typeZc_py_unicode_typeZc_char_typeZc_schar_typer   r  r}   r0   r  rP   Z
c_int_typer   r   r   r  r   Z#types_that_construct_their_instancer   updater  r   r  rj   r  Zc_void_ptr_typeZc_char_ptr_typeZc_py_ssize_t_ptr_typeZ
CArrayTyper  r-   r  r"   r  r  r'  r4  r9  r<  rA  r   r   r   r   <module>   s  D
 
 
 
 

 '

















]
cj




 &




































  
  
  y           	1,
  &







E8