CoolFace
Apppublic

Aluode/PerceptionLabPortable

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
hashing.cpython-310.pyc123 linesDownload Raw Back to __pycache__
1o

2�Yi�l�3@s~dZddlZddlZddlZddlZddlZddlmZddl	m4Zddlm
Z
ddlmZddlmZmZmZmZddlmZddlmZdd	lmZmZdd5lmZmZmZmZej j!Z"e#ede"�Z$e#ede"�Z%ej j&Z'ej j(Z)e%ej j*�Z+ej,j-d
kr�dndZ.dZ/e/Z0ej1j2Z3ej j4Z5ej j6Z7dd�Z8ee8�dd��Z9ee:�dd��Z;edd��Z<ee%e%ej=ej>ej>e%ej>d�d�dd��Z?edd��Z@edd ��ZAee%e%e%e%e%e%ejBejBd!�d�d"d#��ZCeejDd$�eejEd$�d%d&���ZFeejGd$�d'd(��ZHeejId$�d)d*��ZJe%j-d+d,k�r(e%d-�ZKe%d.�ZLe%d/�ZMed0ejNid�d1d2��ZOne%d3�ZKe%d4�ZLe%d5�ZMed0ejNid�d6d2��ZOee%e%e%e%e%d7�d�d8d9��ZPeejQd$�d:d;��ZRdd<lmSZSmTZTmUZUmVZVmWZWmXZXGd=d>�d>eW�ZYGd?d@�d@eW�ZZGdAdB�dBeW�Z[GdCdD�dDeW�Z\GdEdF�dFeX�Z]edGdHdIg�Z^dJdK�Z_e_�Z`e7dLv�re7dMk�r�dNZae�bea�eejNejNdO�d�dPdQ��ZceejNejNejNejNejNejNdR�d�dSdT��ZdeejNejNejNejNdU�d�dVdW��ZeeejNejNejNejNdU�d�dXdY��ZfdZd[�Zgegd\�Zhegd]�Zie7d\k�rehneiZjnd^e7Zaekea��ed_d`��Zldadb�Zmeem�dcdd��Znedee%id�dfdg��Zoeejpd$�dhdi��ZqdS)jz&6Hash implementations for Numba types7�N)�8namedtuple)�ir)�literal_unroll)�overload�overload_method�	intrinsic�register_jitable)�errors)�types)�	grab_byte�
grab_uint64_t)�	const_int�get_next_int�get_next_int32�
get_state_ptrzint%szuint%s� ��=iCBcCsdS�N�)�	hash_funcrr�E:\DocsHouse\542 percep lab latest\PerceptionLab\PerceptionLab_Portable\python_embed\Lib\site-packages\numba/cpython/hashing.py�_defer_hash/srcsd|�d���fdd�}|S)Nzunhashable type: '�'cs|durt���|�Sr)�	TypeError)�objr��err_msgrr�impl7szol_defer_hash.<locals>.implr)rrrrrr�
ol_defer_hash3srcsd|�d���fdd�}|S)Nz+No __hash__ is defined for object of type 'zn' and a generic hash() cannot be performed as there is no suitable object represention in Numba compiled code!cs"t|d�r
t|t|d��St���)N�__hash__)�hasattrr�getattrr)r�Zattempt_generic_msgrrrGs9zhash_overload.<locals>.implr)rrrr#r�
hash_overload@s10�r$cCs t|�}|td�krtd�}|S)N����������)�11_Py_hash_t�int)�valZasintrrr�process_returnOsr*)�x�y�m�e�sign�_PyHASH_MODULUS�_PyHASH_BITS��localscCst�|�st�|�r|dkrtStSt�}t|�St�|�\}}d}|dkr,d}|}d}|rZ|d>t@|t	d?B}|d9}|d8}t12|�}||8}||7}|tkrX|t8}|s0|dkrc|t	}n13t	dd|t	}||>t@|t	|?B}||}t|�S)Nr�r%�g�A)�np�isfinite�isinf�_PyHASH_INF�_prng_random_hashr*�math�frexpr0r1r()�vr+r-r.r/r,rrr�_Py_HashDouble^s:1415�16 17r>cCsdd�}t�tj�}||fS)NcSs|d}|�|t���S)Nr)ZfpextrZ18DoubleType)�cgctx�builder�	signature�argsr)rrrr�sz_fpext.<locals>.impl)r19�float64Zfloat32)�tyctxr)r�sigrrr�_fpext�srFcCsdd�}t�}||fS)NcSs@t||d�}tt�}tdkrt|||�}|St||||d�}|S)NZinternalrF)rr
�_hash_widthrr)r?r@rArBZ	state_ptr�bits�valuerrrr�s	�z_prng_random_hash.<locals>.impl)r')rDrrErrrr:�sr:)r+�p1�p2�p3�p4r0r1�
_PyLong_SHIFTc20Cs�dt}t�d�|?}dtd}d}tt}t|ddd�D]'}|t>}|t@}||?}	||	B}|t�||t?|@�7}|tkrG|t8}q t|�S)Nrr�@r4r%)rNr21Zuint32r1�ranger0r')22r)Z23_tmp_shiftZ24mask_shift�ir+rL�idxrJrKrMrrr�25_long_impl�s�rSr csHtjdkrdnd�t�d��t|dd�rtjntj����fdd�}|S)	Nlr&�����l�����signedFcs��|�}t|�}|tkr*|dkrd}t|�S|�kr"t��}t|�St|�}t|�Sd}|dkr5|}d}t|�}|r>|}t|�S)NrFT)�absr0r'rSr*)r)�mag�retZneeds_negate�Z_BIGZ
_HASH_I64_MINZ_SIGNED_MINrrr�s&26
��	�zint_hash.<locals>.impl)�sys�maxsizer27Zint64r"�uint64�r)rrrYr�int_hash�s2829r^cCs"|jdkrdd�}|Sdd�}|S)NrOcSst|�}|Sr)r>)r)�hashedrrrrszfloat_hash.<locals>.implcSst�t|��}t|�}|Sr)r6rCrFr>)r)Z30fpextendedr_rrrrs)�bitwidthr]rrr�31float_hashs3233	�racC�dd�}|S)NcSs(t|j�}t|j�}|t|}t|�Sr)�hash�real�imag�_PyHASH_IMAGr*)r)ZhashrealZhashimag�combinedrrrr#s3435zcomplex_hash.<locals>.implrr]rrr�complex_hash!s36rh��l�J��f�q	lOk�O�8�l�g�,�,�>r+cC�|t�d�>|t�d�?BS)Nr�!�r37r\�r+rrr�_PyHASH_XXROTATE;�rol�yn<lwJ�i�gVcCrk)N�
�rmrnrrrroDrp)�acc�lane�_PyHASH_XXPRIME_5�_PyHASH_XXPRIME_1�tlcCs�t|�}t}t|�D]}t|�}|td�krdS||t7}t|�}|t9}q38||ttd�AA7}|td�kr<td�St|�S)Nr%is�5i�K*\)	�lenrurrc�_Py_uhash_t�_PyHASH_XXPRIME_2rorvr*)�tuprwrsr+rtrrr�_tuple_hashJs39r|cCrb)NcS�t|�Sr)r|)r)rrrrc�ztuple_hash.<locals>.implrr]rrr�40tuple_hasha�r)�c_size_t�c_ubyte�c_uint64�	pythonapi�	Structure�Unionc@�eZdZdefdefgZdS)�FNV�prefix�suffixN)�__name__�41__module__�__qualname__r��_fields_rrrrr����r�c@r�)�SIPHASH�k0�k1N)r�r�r�r�r�rrrrr��r�r�c@� eZdZdedfdefgZdS)�DJBX33A�padding�r�N�r�r�r�r�r�r�rrrrr���42�r�c@r�)�EXPATr�r�ZhashsaltNr�rrrrr��r�r�c@s2eZdZdedfdefdefdefdefgZdS)�_Py_HashSecret_tZuc��fnv�siphash�djbx33a�expatN)	r�r�r�r�r�r�r�r�r�rrrrr��s43�r��_hashsecret_entry�symbolrIcsJt�td�}i��fdd�}|d|jj�|d|jj�|d|jj��S)z�Read hash secret from the Python process44 45    Returns46    -------47    info : dict48        - keys are "djbx33a_suffix", "siphash_k0", siphash_k1".49        - values are the namedtuple[symbol:str, value:int]50    Z_Py_HashSecretcs>d�|�}t�|�}t�|�}t�||�t||d��|<dS)Nz_numba_hashsecret_{})r�rI)�format�ctypesr��	addressof�llZ51add_symbolr�)�namer)Zsymbol_name�addr��inforr�inject�s52535455z!_build_hashsecret.<locals>.inject�djbx33a_suffix�56siphash_k0�57siphash_k1)r��in_dllr�r�r�r�r�r�)Zpyhashsecretr�rr�r�_build_hashsecret�sr�)�	siphash13�	siphash24r�r�a�FNV hashing is not implemented in Numba. See PEP 456 https://www.python.org/dev/peps/pep-0456/ for rationale over not using FNV. Numba will continue to work, but hashes for built in types will be computed using siphash24. This will permit e.g. dictionaries to continue to behave as expected, however anything relying on the value of the hash opposed to hash as a derived property is likely to not work as expected.�r+�bcCs t�||>|t�d�|?B�S)NrOrmr�rrr�_ROTATEs r���ar��c�d�s�tcCsB||7}||7}t||�|A}t||�|A}t|d�}||||fS)Nr)r�r�rrr�_HALF_ROUNDs58r���v0�v1�v2�v3cCs@t||||dd�\}}}}t||||dd�\}}}}||||fS)Nrqr���)r�r�rrr�
_SINGLE_ROUNDsr�cCs8t||||�\}}}}t||||�\}}}}||||fSr)r�r�rrr�
_DOUBLE_ROUND(sr�csr|dkr	t�d�n
|dkrt�d�nJd��ttjtjtjtjtjtjtjtjtjtjd�59d���fd	d60��}|S)Nr�Tr�FrZunreachable)61r�r�r�r�r��mir��mask�jmp�ohexefefr2cst�|�d>}|t�d�A}|t�d�A}|t�d�A}|t�d�A}d}	|dkrMt||	�}62|	d7}	|d8}||63N}�||||�\}}}}||64N}|dks)t�d�}|	d}t�d	�}
|d65kryd}t�|
|>�}||@t�t||d��|>B}|dkr�d
}t�|
|>�}||@t�t||d��|>B}|dkr�d}t�|
|>�}||@t�t||d��|>B}|dkr�|t�d�M}td�D]}|d}t�|
|>�}||@t�t|||��|>B}q�|dk�rd}t�|
|>�}||@t�t||d��|>B}|dk�r!d}t�|
|>�}||@t�t||d��|>B}|dk�r7|
}||@t�t||d��B}||O}||N}�||||�\}}}}||N}||
N}�||||�\}}}}�||||�\}}}}��rv�||||�\}}}}||A||AA}|S)N�8lue�`�5{lmo�\�I{#lar�\��clse�r�+#rrir4����0��(�rrjl���r��)r66r\rrrP)r�r��srcZsrc_szr�r�r�r�r�rRr�r�Zboffsetr�r�r�rQ�Z_EXTRA_ROUNDZ_ROUNDERrr�_siphash;s�67�68 6970����71�72�73z_gen_siphash.<locals>._siphash)r�r�rr74r\)�algr�rr�r�_gen_siphash1s(�75Er�r�r�z'Unsupported hashing algorithm in use %scsDt|tj�st�d��t|jj�tj}||�}�fdd�}||fS)z&Emit code to load the hashsecret.76    zrequires literal stringcsL|j}z|���}Wntytj|t�d��d�}Ynw|�|�}|S)NrO�r�)�moduleZ77get_global�KeyErrorrZGlobalVariableZIntType�load)r?r@rErB�mod�gvr=�Zsymrrr�s�78z%_inject_hashsecret_read.<locals>.impl)	�79isinstancer80Z
StringLiteralr	ZTypingError�_hashsecretZ
literal_valuer�r\)rDr�ZrestyrErrr�r�_inject_hashsecret_read�s81r�cCs82t|jSr)r�rIr�rrr�_load_hashsecret�s83r�cCrb)NcSr}r)r�r�rrr�imp�r~z"_impl_load_hashsecret.<locals>.impr)r�r�rrr�_impl_load_hashsecret�r�r��_hashcCs�|dkrtd�S|tkr3td�}t|�D]}|d>|t�t||��}q||N}|td�N}t|�Stt	�84td��t	�85td��||�}t|�}t|�S)Nrir�r�r�r�)r*�_Py_HASH_CUTOFFryrPr6Zuint8rr��86_siphasherr87r\)r)�_lenr�rR�tmprrr�
_Py_HashBytes�s��r�csddlm��fdd�}|S)Nr��_kind_to_byte_widthcs4�|j�}t|�}|j}|dkr|St|j||�S)Nr%)�_kindrxr�r��_data)r)Z	kindwidthr�Zcurrent_hashr�rrr�s88zunicode_hash.<locals>.impl)Znumba.cpython.unicoder�r]rr�r�unicode_hash�sr�)r�__doc__r;�numpyr6rZr��warnings�collectionsrZllvmlite.bindingZbindingr�ZllvmliterZnumbarZnumba.core.extendingrrrrZ89numba.corer	r90Znumba.core.unsafe.bytesrrZnumba.cpython.randomimplr
rrr�	hash_info�widthrGr"r'ry�infr9�nanZ_PyHASH_NAN�modulusr0Zintpr`r1Z_PyHASH_MULTIPLIERrf�int_info�bits_per_digitrN�cutoffr��	algorithmZ_Py_hashfunc_namerrrcr$r*�doubleZintcr>rFr:Zint32rS�Integer�Booleanr^�Floatra�Complexrhrvrzrur\ror|Z	BaseTuplerr�r�r�r�r�r�r�r�r�r�r�r�r�r��msg�warnr�r�r�r�r�Z91_siphash13Z92_siphash24r��93ValueErrorr�r�r�r�ZUnicodeTyper�rrrr�<module>s949596�97.9899�100101102103,104105106107�108109110 111112113114/�115�116�117�118[119120121 122123
Aluode/PerceptionLabPortable · CoolFace