
    shj                     0	   S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r  SSKJr  SSKJr  SSKJrJrJrJr  SSKJr  SSKJr  SS	KJrJr  SS
KJrJrJrJr  \R@                  RB                  r"\#" \S5      r$\#" \S5      r%\R@                  RL                  r'\R@                  RP                  r)\%" \R@                  RT                  5      r+\RX                  RZ                  S:X  a  SOSr.Sr/\/r0\Rb                  Rd                  r3\R@                  Rh                  r5\R@                  Rl                  r7S r8\" \85      S 5       r9\" \:5      S 5       r;\S 5       r<\" \%\%\Rz                  \R|                  \R|                  \%\R|                  S.S9S 5       r?\S 5       r@\S 5       rA\" \%\%\%\%\%\%\R                  \R                  S.S9S 5       rC\" \R                  S5      \" \R                  S5      S 5       5       rF\" \R                  S5      S 5       rH\" \R                  S5      S 5       rJ\%RZ                  S-  S :  a1  \%" S!5      rK\%" S"5      rL\%" S#5      rM\" S$\R                  0S9S% 5       rOO0\%" S&5      rK\%" S'5      rL\%" S(5      rM\" S$\R                  0S9S) 5       rO\" \%\%\%\%\%S*.S9S+ 5       rP\" \R                  S5      S, 5       rRSS-KJSrSJTrTJUrUJVrVJWrWJXrX   " S. S/\W5      rY " S0 S1\W5      rZ " S2 S3\W5      r[ " S4 S5\W5      r\ " S6 S7\X5      r]\" S8S9S:/5      r^S; r_\_" 5       r`\7S<;   Ga  \7S=:X  a  S>ra\R                  " \a5        \" \R                  \R                  S?.S9S@ 5       rc\" \R                  \R                  \R                  \R                  \R                  \R                  SA.S9SB 5       rd\" \R                  \R                  \R                  \R                  SC.S9SD 5       re\" \R                  \R                  \R                  \R                  SC.S9SE 5       rfSF rg\g" SG5      rh\g" SH5      ri\7SG:X  a  \hO\irjOSI\7-  ra\k" \a5      e\SJ 5       rlSK rm\" \m5      SL 5       rn\" SM\%0S9SN 5       ro\" \R                  S5      SO 5       rqg)Pz&
Hash implementations for Numba types
    N)
namedtuple)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_ptrpy_int       =   iCB c                     g N )	hash_funcs    m/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cpython/new_hashing.py_defer_hashr   /   s        c                     ^ SU  S3mU4S jnU$ )Nzunhashable type: ''c                 .   > Uc  [        T5      eU" 5       $ r   )	TypeError)objr   err_msgs     r   implol_defer_hash.<locals>.impl7   s    G$$;r   r   )r!   r   r#   r"   s      @r   ol_defer_hashr%   3   s    "3%q)G
 Kr   c                     ^ SU  S3mU4S jnU$ )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!c                 h   > [        U S5      (       a  [        U [        U S5      5      $ [        T5      e)N__hash__)hasattrr   getattrr    )r!   attempt_generic_msgs    r   r#   hash_overload.<locals>.implG   s0    3
##sGC$<==/00r   r   )r!   r#   r+   s     @r   hash_overloadr-   @   s(    "e $BB
1
 Kr   c                 P    [        U 5      nU[        S5      :X  a  [        S5      nU$ )N)
_Py_hash_tint)valasints     r   process_returnr5   O   s%    sOERBLr   )xymesign_PyHASH_MODULUS_PyHASH_BITSlocalsc                 X   [         R                  " U 5      (       dC  [         R                  " U 5      (       a  U S:  a  [        $ [        * $ [	        5       n[        U5      $ [        R                  " U 5      u  p#SnUS:  a  SnU* nSnU(       aR  US-  [        -  U[        S-
  -	  -  nUS-  nUS-  n[        U5      nX%-  nX-  nU[        :  a	  U[        -  nU(       a  MR  US:  a
  U[        -  nO[        S-
  SU-
  [        -  -
  nX-  [        -  U[        U-
  -	  -  nX-  n[        U5      $ )Nr      r/      g      A)npisfiniteisinf_PyHASH_INF_prng_random_hashr5   mathfrexpr;   r<   r2   )vr6   r8   r9   r:   r7   s         r   _Py_HashDoublerJ   _   s1    ;;q>>HHQKKA""#|# "#A!!$$::a=DAD	AB 	
A2g(A,2C,DD	[	RF		 A 1 	Av1a< 78
&O	#q\A-='>>A	A!r   c                 V    S n[         R                  " [         R                  5      nX24$ )Nc                 V    US   nUR                  U[        R                  " 5       5      $ )Nr   )fpextr   
DoubleType)cgctxbuilder	signatureargsr3   s        r   r#   _fpext.<locals>.impl   s"    1g}}S"--/22r   )r   	c_float64	c_float32)tyctxr3   r#   sigs       r   _fpextrX      s#    3 //%//
*C9r   c                 "    S n[        5       nX!4$ )Nc                     [        XS5      n[        [        5      n[        S:X  a  [        XU5      nU$ [	        XXES5      nU$ )Ninternalr   F)r   r   _hash_widthr   r   )rO   rP   rQ   rR   	state_ptrbitsvalues          r   r#   _prng_random_hash.<locals>.impl   sJ    !%*=	% ""59=E  !%HEr   )r1   )rV   r#   rW   s      r   rF   rF      s    $ ,C9r   )r6   p1p2p3p4r;   r<   _PyLong_SHIFTc                 j   S[         -
  n[        R                  " S5      ) U-	  nS[         -  S-   nSn[        [         -
  n[	        US-
  SS5       HW  nU[         -  nU[
        -  nXE-	  n	X-  nU[        R                  " X[         -  -	  U-  5      -  nU[
        :  d  MN  U[
        -  nMY     [        U5      $ )Nr   r   @   r@   r/   )re   r   c_uint32r<   ranger;   r1   )
r3   
_tmp_shift
mask_shiftir6   rc   idxra   rb   rd   s
             r   
_long_implrn      s     m#J>>#&&:5J 
}	!A 	
A

&BQUB#-/!WG	U^^S-$77:EFF A $ a=r   r(   c                    ^^^ [         R                  S::  a  SOSm[        R                  " S5      m[	        U SS5      (       a  [        R                  O[        R
                  mUUU4S jnU$ )Nl        r0   l         signedFc                    > T" U 5      n [        U 5      nU[        :  a'  U S:X  a  SnO@U T:X  a  [        T5      nO.[        U 5      nO"SnU S:  a  U * n Sn[        U 5      nU(       a  U* n[	        U5      $ )Nr   FT)absr;   r1   rn   r5   )r3   magretneeds_negate_BIG_HASH_I64_MIN_SIGNED_MINs       r   r#   int_hash.<locals>.impl   s|     3i#h ax# / o LQwd#S/Cdc""r   )sysmaxsizer   c_int64r*   c_uint64)r3   r#   rw   rx   ry   s     @@@r   int_hashr      sQ     ++0BbM-- 34K $C5995==u~~D#8 Kr   c                 6    U R                   S:X  a  S nU$ S nU$ )Nrg   c                     [        U 5      nU$ r   )rJ   )r3   hasheds     r   r#   float_hash.<locals>.impl  s    #C(FMr   c                 Z    [         R                  " [        U 5      5      n[        U5      nU$ r   )rB   float64rX   rJ   )r3   
fpextendedr   s      r   r#   r     s#    F3K0J#J/FMr   )bitwidthr3   r#   s     r   
float_hashr     s&    
||r	 K	
 Kr   c                     S nU$ )Nc                     [        U R                  5      n[        U R                  5      nU[        U-  -   n[	        U5      $ r   )hashrealimag_PyHASH_IMAGr5   )r3   hashrealhashimagcombineds       r   r#   complex_hash.<locals>.impl%  s8    >> lX55h''r   r   r   s     r   complex_hashr   #  s    	( Kr         l   Jfq	 l   OkO8 l   g,,> r6   c                 h    U [         R                  " S5      -  U [         R                  " S5      -	  -  $ )Nr   !   r   	np_uint64r6   s    r   _PyHASH_XXROTATEr   >  +     eoob))a5??23F.FGHr   l   yn< l   wJ igVc                 h    U [         R                  " S5      -  U [         R                  " S5      -	  -  $ )N      r   r   s    r   r   r   G  r   r   )acclane_PyHASH_XXPRIME_5_PyHASH_XXPRIME_1tlc                 6   [        U 5      n[        n[        U 5       H>  n[        U5      nU[	        S5      :X  a    gX$[
        -  -  n[        U5      nU[        -  nM@     X![        [	        S5      -  -  -  nU[	        S5      :X  a  [        S5      $ [        U5      $ )Nr/   is5 iK*\)	lenr   r   r   _Py_uhash_t_PyHASH_XXPRIME_2r   r   r5   )tupr   r   r6   r   s        r   _tuple_hashr   M  s    
 
SB
CC Aw;r?"'''s#   ! "[%99::C
k"oj))#r   c                     S nU$ )Nc                     [        U 5      $ r   )r   )r3   s    r   r#   tuple_hash.<locals>.implf  s    3r   r   r   s     r   
tuple_hashr   d  s     Kr   )c_size_tc_ubyter~   	pythonapi	StructureUnionc                   $    \ rS rSrS\4S\4/rSrg)FNVi  prefixsuffixr   N)__name__
__module____qualname____firstlineno__r   _fields___static_attributes__r   r   r   r   r     s    	8	8Hr   r   c                   $    \ rS rSrS\4S\4/rSrg)SIPHASHi  k0k1r   N)r   r   r   r   r~   r   r   r   r   r   r   r     s    	x	xHr   r   c                   *    \ rS rSrS\S-  4S\4/rSrg)DJBX33Ai  padding   r   r   Nr   r   r   r   r   r   r   r   r   r   r   r   r     s    	GbL!	8Hr   r   c                   *    \ rS rSrS\S-  4S\4/rSrg)EXPATi  r   r   hashsaltr   Nr   r   r   r   r   r     s    	GbL!	XHr   r   c                   <    \ rS rSrS\S-  4S\4S\4S\4S\4/r	Sr
g	)
_Py_HashSecret_ti  uc   fnvsiphashdjbx33aexpatr   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s6     
w|		G	G	%
Hr   r   _hashsecret_entrysymbolr_   c                     ^ [         R                  [        S5      n 0 mU4S jnU" SU R                  R                  5        U" SU R
                  R                  5        U" SU R
                  R                  5        T$ )zRead hash secret from the Python process

Returns
-------
info : dict
    - keys are "djbx33a_suffix", "siphash_k0", siphash_k1".
    - values are the namedtuple[symbol:str, value:int]
_Py_HashSecretc                    > SR                  U 5      n[        R                  " U5      n[        R                  " U5      n[        R
                  " X#5        [        X!S9TU '   g )Nz_numba_hashsecret_{})r   r_   )formatctypesr~   	addressofll
add_symbolr   )namer3   symbol_nameaddrinfos       r   inject!_build_hashsecret.<locals>.inject  sK    ,33D9ooc"$
k(&kET
r   djbx33a_suffix
siphash_k0
siphash_k1)r   in_dllr   r   r   r   r   r   )pyhashsecretr   r   s     @r   _build_hashsecretr     sm     $**96FGLDF \11889
<--001
<--001Kr   )	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.r6   bc                 l    [         R                  " X-  U [         R                  " S5      U-
  -	  -  5      $ )Nrg   r   r   s     r   _ROTATEr     s7     
!"(;q(A B D E 	Er   ar   cdstc                 j    X-  n X#-  n[        X5      U -  n[        X55      U-  n[        U S5      n XX#4$ )Nr   )r   r   s         r   _HALF_ROUNDr     sC     	
	AMAAMAArNQzr   v0v1v2v3c                 N    [        XX#SS5      u  pp#[        X!XSS5      u  p!pXX#4$ )Nr   r         )r   r   s       r   _SINGLE_ROUNDr   #  s6    
 %RRR<$RRR<r~r   c                 F    [        XX#5      u  pp#[        XX#5      u  pp#XX#4$ r   )r   r   s       r   _DOUBLE_ROUNDr  ,  s.    
 'rr6&rr6r~r   c                   ^^ U S:X  a	  [         mSmOU S:X  a	  [        mSmO S5       e[        [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  S.
S9UU4S j5       nU$ )	Nr   Tr   Funreachable)
r   r   r   r   r   mir   maskjmpohexefefr=   c           	        > [         R                  " U5      S-  nU [         R                  " S5      -  nU[         R                  " S5      -  nU [         R                  " S5      -  nU[         R                  " S5      -  nSn	US:  a1  [        X)5      n
U	S-  n	US-  nX-  nT" XVXx5      u  pVpxXZ-  nUS:  a  M1  [         R                  " S5      nU	S-  n[         R                  " S	5      nUS
:  aE  Sn[         R                  " X-  5      ) nX-  [         R                  " [        X,S-   5      5      U-  -  nUS:  aE  Sn[         R                  " X-  5      ) nX-  [         R                  " [        X,S-   5      5      U-  -  nUS:  aE  Sn[         R                  " X-  5      ) nX-  [         R                  " [        X,S-   5      5      U-  -  nUS:  as  U[         R                  " S5      -  n[	        S5       HK  nUS-  n[         R                  " X-  5      ) nX-  [         R                  " [        X,U-   5      5      U-  -  nMM     US:  aE  Sn[         R                  " X-  5      ) nX-  [         R                  " [        X,S-   5      5      U-  -  nUS:  aE  Sn[         R                  " X-  5      ) nX-  [         R                  " [        X,S-   5      5      U-  -  nUS:  a*  U) nX-  [         R                  " [        X,S-   5      5      -  nXK-  nX-  nT" XVXx5      u  pVpxXT-  nX}-  nT" XVXx5      u  pVpxT" XVXx5      u  pVpxT(       a  T" XVXx5      u  pVpxXV-  Xx-  -  nU$ )N8   l   ue`5{ l   mo\I{# l   ar\c l   ser+# r   r   r@         0      (      r   r   l           r      )r   r   r   r   ri   )r   r   srcsrc_szr   r   r   r   r   rm   r  r   boffsetr  r  r  rl   _EXTRA_ROUND_ROUNDERs                    r   _siphash_gen_siphash.<locals>._siphash?  sM    '2-Aeoo&899Beoo&899Beoo&899Beoo&899BCQ;"3,q!!)""!9 Q; $AAgGt,H{88X%//)C12M"N%(#) *{88X%//)C12M"N%(#) *{88X%//)C12M"N%(#) *{U__%788qAa%C!OOHO<<D3!)DELNA "
 {88X%//)C12M"N%(#) *{88X%//)C12M"N%(#) *{!{X%//)C12M"NOFAGB%bb5NBBGBNB%bb5NBB%bb5NBB!)""!9RW%AHr   )r   r  r	   r   r   )algr  r  r  s     @@r   _gen_siphashr  5  s    +$HLK$H L#m#1	(-(-(-',(-',*///)..3oo	"? 	
@C		
@C	J r   r   r   z'Unsupported hashing algorithm in use %sc                    ^ [        U[        R                  5      (       d  [        R                  " S5      e[
        UR                     R                  m[        R                  nU" U5      nU4S jnX44$ )z&Emit code to load the hashsecret.
    zrequires literal stringc                    > UR                   n UR                  T5      nUR                  U5      nU$ ! [         a-    [        R                  " U[        R
                  " S5      TS9n NIf = f)Nrg   r   )module
get_globalKeyErrorr   GlobalVariableIntTypeload)rO   rP   rW   rR   modgvrI   syms          r   r#   %_inject_hashsecret_read.<locals>.impl  sd    nn	B$B LL	  	B""3

2SAB	Bs   3 4A*)A*)	
isinstancer   StringLiteralr
   TypingError_hashsecretliteral_valuer   r   )rV   r   restyrW   r#   r&  s        @r   _inject_hashsecret_readr.    sa     dE//00  !:;;
d((
)
0
0COOE
+C	 9r   c                 (    [         U    R                  $ r   )r+  r_   r  s    r   _load_hashsecretr0    s    t"""r   c                     S nU$ )Nc                     [        U 5      $ r   )r.  r  s    r   imp"_impl_load_hashsecret.<locals>.imp  s    &t,,r   r   )r   r3  s     r   _impl_load_hashsecretr5    s    -Jr   _hashc                    US:X  a  [        S5      $ U[        :  aX  [        S5      n[        U5       H+  nUS-  U-   [        R
                  " [        X5      5      -   nM-     X!-  nU[        S5      -  nOR[        [        R                  " [        S5      5      [        R                  " [        S5      5      X5      n[        U5      n[        U5      $ )Nr   i  r  r   r   r   )r5   _Py_HASH_CUTOFFr   ri   rB   uint8r   r0  
_siphasherr   r   )r3   _lenr6  rm   tmps        r   _Py_HashBytesr=    s    	a   D!;CqjE)RXXi6I-JJE  	!"233)9,)GH)9,)GH$ s#%  r   c                     ^ SSK Jm  U4S jnU$ )Nr   )_kind_to_byte_widthc                    > T" U R                   5      n[        U 5      nU R                  nUS:w  a  U$ [        U R                  X-  5      $ )Nr/   )_kindr   r6  r=  _data)r3   	kindwidthr;  current_hashr?  s       r   r#   unicode_hash.<locals>.impl  sG    '		2	3xyy2 !I,<==r   )numba.cpython.unicoder?  )r3   r#   r?  s     @r   unicode_hashrG    s    9
> Kr   )r__doc__rG   numpyrB   r{   r   warningscollectionsr   llvmlite.bindingbindingr   llvmliter   numbar   numba.core.extendingr   r   r   r	   
numba.corer
   r   numba.core.unsafe.bytesr   r   numba.cpython.randomimplr   r   r   r   	hash_infowidthr\   r*   r1   r   infrE   nan_PyHASH_NANmodulusr;   r   r   r<   _PyHASH_MULTIPLIERr   int_infobits_per_digitre   cutoffr8  	algorithm_Py_hashfunc_namer   r%   r   r-   r5   	np_doublenp_intcrJ   rX   rF   c_int32rn   IntegerBooleanr   Floatr   Complexr   r   r   r   r   r   r   	BaseTupler   r   r   r~   r   r   r   r   r   r   r   r   r   r   r+  msgwarnr   r   r   r  r  
_siphash13
_siphash24r:  
ValueErrorr.  r0  r5  r=  UnicodeTyperG  r   r   r   <module>rn     sn     
   "    < <   <5 5
 mm!!UH%
eX& mmmmcmm334\\**b0rb !++--&&MM++ 	 
+  
$    {*$$}}"'---8*/-- ++\    > { + + + +-8*/--+0==; <<: 
+
+& , ,&X j) *" 
+ ,* 1q #$89#$89#$78c5??34I 5I $J/#J/#I.c5??34I 5I
 k/:/: +- .	.& *- .( ) i i I u  2Xw4GH 6  ! 99
 E!' 	c^ 5??#(??6 7E7E 5??#(??#(??#(??#(??#(??6 77 EOO$)OO$)OO$)OO7 8	8
 EOO$)OO$)OO$)OO7 8	8
Yv k*Jk*J0K?ZJ 46G
GC
S/  0# 

  ';/0! 1!0 ""J/ 0r   