
    sh                        S SK r S SKrS SKJrJr  S SKJrJr  S SK	J
r
  S SKJrJr  S SK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   " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)    N)TestCasecaptured_stdout)njit	literally)types)tuple_setitembuild_full_slice_tuple)to_fixed_tupleempty_inferred)memcpy_region)dump_refcount)trailing_zerosleading_zeros)TypingErrorc                   $    \ rS rSrSrS rS rSrg)TestTupleIntrinsic   z!Tests for numba.unsafe.tuple
    c           
         [         S 5       n[        R                  " S5        [        S5       GH=  n[        R                  " SS5      n[        [        U5       Vs/ s H  n[        R                  " SU5      PM     sn5      n[        [        U5       Vs/ s H  n[        R                  " SS5      PM     sn5      n[        [        [        U5      5      5      n[        R                  " U5        [        U5      n[        U5      n[        R                  " U5      n	Xi[        R                  " U5      '   U" XWU5      u  pU R                  X5        U R                  U[        U	5      5        GM@     g s  snf s  snf )Nc                 L    U n[        X5       H  u  pE[        X4U5      nM     X4$ N)zipr   )tupidxsvalsout_tupivs         v/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_unsafe_intrinsics.pyfoo2TestTupleIntrinsic.test_tuple_setitem.<locals>.foo   s+    GD'A6 (<    {         
   r   )r   randomseedrangerandinttuplelistlenshufflenpasarrayassertEqual)selfr   _nr   r   r   r   
expect_tup
expect_outgot_tupgot_outs               r   test_tuple_setitem%TestTupleIntrinsic.test_tuple_setitem   s   		  
	  	CrAq"%AuQx@x!1-x@AC%(C(Q&..R0(CDDc$i()DNN4 ;DsJJ/J+/rzz$'("3d3GW1WeJ&78!  ACs   !E1
!E6
c           	         [         S 5       n[        SS5       H  n[        R                  R                  [        R                  " U5      S-   5      n[        SUS-   5       H(  n[        R
                  R                  X1" X45      5        M*     U R                  [        5         U" X2S-   5        S S S 5        M     g ! , (       d  f       M  = f)Nc                 0    U [        [        U5      5         $ r   )r	   r   )ar3   s     r   full_slice_array=TestTupleIntrinsic.test_slice_tuple.<locals>.full_slice_array.   s     +IaL9::r!   r$      )	r   r(   r.   r&   arangetestingassert_array_equalassertRaisesr   )r1   r=   r3   r<   r   s        r   test_slice_tuple#TestTupleIntrinsic.test_slice_tuple-   s    		; 
	; q!A		  1!12A1a!e_

--a1A!1GH %"";/ E* 0/	  0/s   "B;;
C
	 N)__name__
__module____qualname____firstlineno____doc__r8   rD   __static_attributes__rF   r!   r   r   r      s    96+r!   r   c                   *    \ rS rSrSrS rS rS rSrg)TestNdarrayIntrinsic<   z#Tests for numba.unsafe.ndarray
    c           	        ^ Sm[         U4S j5       n[        R                  R                  S5        [	        S5       H  n[        R                  R                  S5      nU" U5      u  pEpgU R                  U[        US S 5      5        U R                  U[        US S 5      5        U R                  U[        US S 5      5        U R                  US5        M     U R                  [        5       nU" [        R                  R                  S5      5        S S S 5        U R                  S	[        WR                  5      5        [         S
 5       n	U R                  [        5       nU	" [        R                  R                  S5      S5        S S S 5        Sn
U R                  U
[        UR                  5      5        g ! , (       d  f       N= f! , (       d  f       NG= f)Nr?   c                 h   > [        U SS9n[        U S5      n[        U T5      n[        U S5      nXX44$ )Nr$   )length   r   r
   )arrayr<   bcdconsts        r   r   5TestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.fooB   s=    uQ/Aua(Aue,Aua(A:r!   r"   r%   r$   rS   rF   r$   rS   zNot supported on array.ndim=2c                     [        X5      $ r   rT   )rU   rR   s     r   tuple_with_lengthCTestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.tuple_with_length]   s    !%00r!   z$*length* argument must be a constant)r   r.   r&   r'   r(   r0   r*   rC   r   assertInstr	exception)r1   r   r2   arrr<   rV   rW   rX   raisesr]   	expectmsgrY   s              @r   test_to_fixed_tuple(TestNdarrayIntrinsic.test_to_fixed_tuple?   sx   		 
	 			srA))""1%CSJA!Qc"1g/Qc"1g/Qc"1g/Q#  {+v		  () ,5&**+	- 
	1 
	1 {+vbii..q115 ,:	iV%5%5!67 ,+ ,+s   /&F:#'G:
G
Gc                     [         S 5       nU" 5       n[        R                  " S/S-  5      n[        R                  R	                  X#5        g )Nc                  d    [        S5      n Sn[        [        U 5      5       H
  nUS-   X'   M     U $ N)r%   g?rS   )r   r(   r,   Sr<   r   s      r   func;TestNdarrayIntrinsic.test_issue_3586_variant1.<locals>.funcg   s3    u%AA3q6]1u #Hr!   @r%   r   r.   r/   rA   rB   r1   rl   gotexpects       r   test_issue_3586_variant1-TestNdarrayIntrinsic.test_issue_3586_variant1f   C    		 
	 fSEBJ'


%%c2r!   c                     [         S 5       nU" 5       n[        R                  " S/S-  5      n[        R                  R	                  X#5        g )Nc                  f    [        S5      n Sn[        U R                  5       H
  nUS-   X'   M     U $ ri   )r   r(   sizerj   s      r   rl   ;TestNdarrayIntrinsic.test_issue_3586_variant2.<locals>.funct   s3    u%AA166]1u #Hr!   rn   r%   ro   rp   s       r   test_issue_3586_variant2-TestNdarrayIntrinsic.test_issue_3586_variant2s   ru   r!   rF   N)	rG   rH   rI   rJ   rK   re   rs   rz   rL   rF   r!   r   rN   rN   <   s    %8N33r!   rN   c                       \ rS rSrSrS rSrg)TestBytesIntrinsic   z!Tests for numba.unsafe.bytes
    c                    [         S 5       n[        R                  " S[        R                  S9n[        R                  " S[        R                  S9nU" USUSS5        / SQn[        R
                  R                  X$5        g )Nc                 r    [        U R                  R                  UUR                  R                  X4S5        g )Nr$   )r   ctypesdata)dst	dst_indexsrc	src_indexnbytess        r   r   2TestBytesIntrinsic.test_memcpy_region.<locals>.foo   s(     #**//9**//9aAr!   r%   )dtype   r$      )
r   r   r   r   r$   rS   r?   r   r   r   )r   r.   zerosint8r@   rA   rB   )r1   r   rX   sexpecteds        r   test_memcpy_region%TestBytesIntrinsic.test_memcpy_region   si    		A 
	A
 HHRrww'IIb( 	Aq!Q1


%%a2r!   rF   N)rG   rH   rI   rJ   rK   r   rL   rF   r!   r   r}   r}      s    3r!   r}   c                       \ rS rSrS rSrg)TestRefCount   c                    [         S 5       n[        5        nU" 5         S S S 5        WR                  5       nSn[        R                  S S S2   n[        R
                  R                  U/S-  5      nU R                  UR                  U5      U5        U R                  UR                  U5      U5        g ! , (       d  f       N= f)Nc                  b    [         R                  " S5      n X 4n[        U 5        [        U5        g )Nr%   )r.   onesr   )r<   rV   s     r   use_dump_refcount:TestRefCount.test_dump_refcount.<locals>.use_dump_refcount   s&    AA!!r!   zdump refct of {}r$   rS   )	r   r   getvaluer   float64Tuple
from_typesr_   format)r1   r   streamoutputpatarytytuptys          r   test_dump_refcountTestRefCount.test_dump_refcount   s    		 
	 &  " cc"&&w{3cjj'0cjj'0 s   B55
CrF   N)rG   rH   rI   rJ   r   rL   rF   r!   r   r   r      s    1r!   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestZeroCounts   c           
         [        S 5      n[        S 5      n/ SQn[        R                   H  nU R                  U" U" S5      5      U" U" S5      5      s=:H  =(       a    UR                  :H  Os  5        [        UR                  5       H<  nU" SU-  5      nU R                  U" U5      U" U5      -   S-   UR                  5        M>     U HB  nU R                  U" U" U5      5      S5        U R                  U" U" US-   5      5      S5        MD     M     [        R                   GHG  nU R                  U" U" S5      5      U" U" S5      5      s=:H  =(       a    UR                  :H  Os  5        [        UR                  S-
  5       Ht  nU" SU-  5      nU R                  U" U5      U" U5      -   S-   UR                  5        U R                  U" U* 5      S5        U R                  U" U5      U" U* 5      5        Mv     U Hg  nUR                  Us=::  a  UR                  ::  d  O  M(  U R                  U" U" U5      5      S5        U R                  U" U" US-   5      5      S5        Mi     GMJ     g )Nc                     [        U 5      $ r   )r   xs    r   <lambda>0TestZeroCounts.test_zero_count.<locals>.<lambda>   s	    M!,r!   c                     [        U 5      $ r   )r   r   s    r   r   r      s	    N1-r!   )rS   *   ~      r   rS   r$   )r   r   unsigned_domain
assertTruebitwidthr(   r0   assertGreatersigned_domainminvalmaxval)r1   lztzevensTr   valr3   s           r   test_zero_countTestZeroCounts.test_zero_count   s   ,--.!&&AOOBqtH1Q4>>AJJ>?1::&Qi  C2c7!2Q!6

C ' ""2ad8Q/  Aa!eHq1  ' $$AOOBqtH1Q4>>AJJ>?1::>*Qi  C2c7!2Q!6

C  SD1-  C"cT(3	 +
 xx100""2ad8Q/  Aa!eHq1	  %r!   c                   ^ ^^^ [        U4S j5      mTR                  m[        S [        R                  5      n[        U[        S9 Hd  nT R                  [        5       nT" U" S5      5        S S S 5        T R                  SR                  TU5      [        WR                  5      5        Mf     UUU 4S jnU" SS5        U" S	S
5        g ! , (       d  f       Nb= f)Nc                     > T" U 6 $ r   rF   )r   rl   s    r   r   0TestZeroCounts.check_error_msg.<locals>.<lambda>   s	    ar!   c                 @    [        U [        R                  5      (       + $ r   )
isinstancer   Integerr   s    r   r   r      s    *Q66r!   )keyrS   z;{} is only defined for integers, but value passed was '{}'.c                    > TR                  [        [        45       nT" U 6   S S S 5        TR                  SR	                  T5      [        WR                  5      5        g ! , (       d  f       NC= f)Nz{}() )rC   r   	TypeErrorr_   r   r`   ra   )argsstringecfunc	func_namer1   s      r   check-TestZeroCounts.check_error_msg.<locals>.check   sQ    ""K#;<t =MMy)AKK  =<s   A  
A.r[   z-takes 2 positional arguments but 3 were givenrF   z&missing 1 required positional argument)r   _namefilterr   number_domainsortedr`   rC   r   r_   r   ra   )r1   rl   unsupported_typestypr   r   r   r   s   ``    @@r   check_error_msgTestZeroCounts.check_error_msg   s    ()JJ	"68K8K
 +5C"";/1c!f 0MMM	3'AKK  6	 	fEFb:;% 0/s   !C
C	c                 .    U R                  [        5        g r   )r   r   r1   s    r   test_trailing_zeros_error(TestZeroCounts.test_trailing_zeros_error   s    ^,r!   c                 .    U R                  [        5        g r   )r   r   r   s    r   test_leading_zeros_error'TestZeroCounts.test_leading_zeros_error   s    ]+r!   rF   N)	rG   rH   rI   rJ   r   r   r   r   rL   rF   r!   r   r   r      s    28<8-,r!   r   )r&   numpyr.   numba.tests.supportr   r   numbar   r   
numba.corer   numba.cpython.unsafe.tupler   r	   numba.np.unsafe.ndarrayr
   r   numba.core.unsafe.bytesr   numba.core.unsafe.refcountr   numba.cpython.unsafe.numbersr   r   numba.core.errorsr   r   rN   r}   r   r   rF   r!   r   <module>r      sf      9 !  L B 1 4 F )*+ *+ZB38 B3J3 3(18 1,=,X =,r!   