
    sh,D                        S SK r S SKrS SKJrJrJr  S SKJr  S SK	J
r
Jr  S SKrS rS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS r " S S\\
5      r " S S\\
5      r \!S:X  a  \RD                  " 5         gg)    N)jitnjittypeof)types)TestCaseMemoryLeakMixinc                 @    Sn[        U 5       H  u  p#XU-  -  nM     U$ Nr   	enumerate)arrtotalivs       t/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_array_iterators.py
array_iterr      s'    E#Q L    c                 *    [        [        U 5      5      $ N)listiterr   s    r   array_iter_itemsr      s    S	?r   c                 D    Sn[        X   5       H  u  p4X#U-  -  nM     U$ r
   r   )r   idxr   r   r   s        r   array_view_iterr      s*    E#(#Q $Lr   c                 H    [        U R                  5       H	  u  p#X1U'   M     g r   r   flat)r   outr   r   s       r   
array_flatr!      s    #((#A $r   c                      U R                   U   $ r   r   )r   inds     r   array_flat_getitemr%      s    88C=r   c                      X R                   U'   g r   r#   )r   r$   vals      r   array_flat_setitemr(   !   s    HHSMr   c                 Z    Sn[        U R                  5       H  u  p#XS-   U-  -   nM     U$ Nr      r   )r   sr   r   s       r   array_flat_sumr-   $   s0    	A#((#Q!O $Hr   c                 ,    [        U R                  5      $ r   )lenr   r   s    r   array_flat_lenr0   *   s    sxx=r   c                 n    Sn[         R                  " U 5       H  u  u  p#nXS-   US-   -  U-  -   nM     U$ r*   )npndenumerate)r   r,   r   jr   s        r   array_ndenumerate_sumr5   -   s?    	A^^C(	Q1q5!A%% )Hr   c                  j    Sn [         R                  " S5       H  nX [        U5      -   S-   -  n M     U $ )Nr    r+   )r2   ndindexr/   )r,   r$   s     r   np_ndindex_emptyr9   3   s3    	Azz"~	S\A Hr   c                 f    SnSn[         R                  " X5       H  u  pEX$S-   US-   -  -   nM     U$ r*   )r2   r8   )xyr,   nr   r4   s         r   
np_ndindexr>   9   s;    	A	A

1 Q1q5!! !Hr   c                     SnSn[         R                  " U R                  5       H$  n[        U5       H  u  pEXS-   US-   -  -   nM     M&     U$ r*   )r2   r8   shaper   )r   r,   r=   indicesr   r4   s         r   np_ndindex_arrayrB   @   sP    	A	A::cii(g&DAUq1u%%A ' ) Hr   c                     / n[         R                  " U 5       H"  nUR                  UR                  5       5        M$     U$ r   r2   nditerappenditem)aresus      r   
np_nditer1rK   H   s0    
CYYq\

1668 Jr   c                     / n[         R                  " X45       H4  u  p4UR                  UR                  5       UR                  5       45        M6     U$ r   rD   )rH   brI   rJ   r   s        r   
np_nditer2rN   N   s@    
C		1&!

AFFHaffh'( "Jr   c                     / n[         R                  " XU45       HD  u  pEnUR                  UR                  5       UR                  5       UR                  5       45        MF     U$ r   rD   )rH   rM   crI   rJ   r   ws          r   
np_nditer3rR   T   sL    
C99aAY'a

AFFHaffh12 (Jr   c                 n    [        U 5      n[        U 5      n[        U5      [        U5      [        U5      4$ r   )r   next)r   itit2s      r   	iter_nextrW   Z   s-    	cB
s)C8T"XtCy((r   c                     [         R                  " U 5      n[         R                  " U[         R                  S9n[	        UR
                  5       H	  u  p4XBU'   M     U$ Ndtype)r2   arange
zeros_likeintpr   r   sizer;   rI   r   r   s        r   array_flat_premature_freera   i   sD    
		$A
--
)C!&&!A "Jr   c                     [         R                  " U 5      n[         R                  " U[         R                  S9n[         R                  " U5       H	  u  p4XBU'   M     U$ rY   )r2   r\   r]   r^   r3   r_   s        r    array_ndenumerate_premature_freerc   p   sD    
		$A
--
)Cq!A "Jr   c                      ^  \ rS rSrSrU 4S jrS rS rS rSS jr	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrU =r$ )TestArrayIteratorsx   z)
Test array.flat, np.ndenumerate(), etc.
c                 *   > [         [        U ]  5         g r   )superre   setUp)self	__class__s    r   ri   TestArrayIterators.setUp}   s     $-/r   c                     [         n[        [        U5      45      " U5      nU" U5      nU R                  U" U5      U5        g r   )r   r   r   assertPreciseEqualrj   r   pyfunccfuncexpecteds        r   check_array_iter_1d&TestArrayIterators.check_array_iter_1d   s9    fSk^$V,#;c
H5r   c                     [         n[        [        U5      45      " U5      nU" U5      nU R                  U" U5      U5        g r   )r   r   r   rn   ro   s        r   check_array_iter_items)TestArrayIterators.check_array_iter_items   s9    !fSk^$V,#;c
H5r   c                     [         n[        [        U5      [        U5      45      " U5      nU" X5      nU R                  U" X5      U5        g r   )r   r   r   rn   )rj   r   indexrp   rq   rr   s         r   check_array_view_iter(TestArrayIterators.check_array_view_iter   sB     fSk6%=23F;#%c 18<r   c                    [         R                  " UR                  UR                  S9nUR	                  5       nUc  [        U5      n[        U[        U5      45      " [        5      n[        X5        U" X5        U R                  X45        g rY   )	r2   zerosr`   r[   copyr   r   r!   rn   )rj   r   arrtyr    nb_outrq   s         r   check_array_flat#TestArrayIterators.check_array_flat   si    hhsxxsyy1=3KEeVC[*+J73c,r   c                 d    [        U45      " U5      nU R                  U" U5      U" U5      5        g r   )r   rn   )rj   r   r   funcrq   s        r   check_array_unary$TestArrayIterators.check_array_unary   s*    eXt$c
DI6r   c                 0    U R                  X[        5        g r   )r   r5   rj   r   r   s      r   check_array_ndenumerate_sum.TestArrayIterators.check_array_ndenumerate_sum   s    s+@Ar   c                 f   [         R                  " S5      nU R                  U5        U R                  U5        US S S2   nU R	                  UR
                  R                  5        U R	                  UR
                  R                  5        U R                  U5        U R                  U5        [         R                  " / SQ5      nU R                  U5        U R                  U5        [         R                  " / SQ/ SQ/ SQ/5      nU R                  U5        U R                  UR                  5        g )N      r+   r   r   r+   )r+   r      )      r   )      	   )r2   r\   rs   rv   assertFalseflagsc_contiguousf_contiguousbool_arrayTrj   r   s     r   test_array_iter"TestArrayIterators.test_array_iter   s    iil  %##C(#A#h//0//0  %##C(hh|$  %##C(hh	9i89##C(##CEE*r   c                 b   [        SS9S 5       n[        R                  " S5      R                  SSS9nUR	                  U5      nU" U5      nU R                  X45        [        R                  " S5      R                  S	SS9S S S
2S S 2S S 24   nUR	                  U5      nU" U5      nU R                  X45        [        R                  " S5      R                  S	SS9S S 2S S S
2S S 24   nUR	                  U5      nU" U5      nU R                  X45        [        R                  " S5      R                  S	SS9S S 2S S 2S S S
24   nUR	                  U5      nU" U5      nU R                  X45        [        SS9S 5       n[        R                  " S5      R                  SSS9nUR	                  U5      nU" U5      nU R                  [        U5      [        U5      5        US   u  pgnUS   u  pn[        R                  R                  Xi5        U R                  Xz5        U R                  X5        g )NTnopythonc                 l    / nU  H+  nU H"  nUR                  UR                  5       5        M$     M-     U$ r   )rF   ravel)r   ty1y2s       r   foo=TestArrayIterators.test_array_iter_yielded_order.<locals>.foo   s4    ABHHRXXZ(   Hr      )r   r   r   Forder@   )r   r   r   r   c                     / nU  H>  nUR                  X"R                  R                  UR                  R                  45        M@     U$ r   )rF   r   r   r   )r   r    subs      r   
flag_checkDTestArrayIterators.test_array_iter_yielded_order.<locals>.flag_check   sB    C

C!7!7II224 5  Jr   
   )r   r   r   )
r   r2   r\   reshapepy_funcrn   assertEqualr/   testingassert_allclose)rj   r   r   rr   gotr   ex_arre_flag_ce_flag_fgo_arrg_flag_cg_flag_fs               r   test_array_iter_yielded_order0TestArrayIterators.test_array_iter_yielded_order   s   	d		 
	 iim##IS#9;;s##h. iim##IS#9#A#q!)D;;s##h. iim##IS#9!SqS!)D;;s##h. iim##IS#9!Q!)D;;s##h.	d		 
	 iim##F##6%%c*oXC1%-a["(%(V"(


""62,,r   c                 P   [         R                  " S5      R                  S5      nU R                  US5        U R                  UR                  S5        US S S2   nU R                  US5        [         R
                  " / SQ5      R                  S5      nU R                  US5        g )N   r   r   r+   r   r   r   r   )r2   r\   r   rz   r   r   r   s     r   test_array_view_iter'TestArrayIterators.test_array_view_iter   s    iim##F+""3*""355!,#A#h""3*hh|$,,V4""3*r   c                    [         R                  " S5      R                  SSS5      n[        U5      nU R	                  UR
                  S5        U R	                  UR                  S5        U R                  UR                  R                  5        U R                  U5        UR                  5       nU R                  UR                  R                  5        U R                  UR                  R                  5        U R	                  [        U5      R                  S5        U R                  U5        US S S2   nU R                  UR                  R                  5        U R                  UR                  R                  5        U R	                  [        U5      R                  S5        U R                  U5        [         R                  " / SQS-  5      R                  S	5      nU R                  U5        g )
Nr   r   r   r   Cr   Ar   )r   r   r   )r2   r\   r   r   r   ndimlayout
assertTruer   r   r   	transposer   r   r   r   s      r   test_array_flat_3d%TestArrayIterators.test_array_flat_3d   se   iim##Aq!,sQ's+		../c"mmo//0		../++S1c"#A#h//0//0++S1c"hh|a'(00;c"r   c                   ^  U 4S jn[         R                  " S[         R                  S9nUR                  SS5      n[        R
                  " [        R                  SSS9nU" X#5        [        R
                  " [        R                  SSS9nU" X#5        [        R
                  " [        R                  SSS9nU" X#5        UR                  SS5      n[        R
                  " [        R                  SSS9nU" X#5        [        R
                  " [        R                  SSS9nU" X#5        [        R
                  " [        R                  SSS9nU" X#5        g )	Nc                    > [        U45      " [        5      nUR                  U4   nUR                  U 5      nUR	                  U 5      nTR                  XT5        g r   )r   r-   	overloadsentry_pointr   rn   )r   r   rq   cresr   rr   rj   s         r   check7TestArrayIterators.test_array_flat_empty.<locals>.check  sO    %N>2E??E8,D""3'C}}S)H##H2r   r   rZ   r   r   r   r   r   r2   r}   int32r   r   Arrayrj   r   r   r   s   `   r   test_array_flat_empty(TestArrayIterators.test_array_flat_empty  s    	3 hhq)kk!QEKK37cEKK37cEKK37ckk!QEKK37cEKK37cEKK37cr   c                   ^ ^^ [         m[        T5      mUUU 4S jn[        R                  " S5      R	                  SSS5      n[        UR                  5       H  nU" X#5        M     UR                  n[        UR                  5       H  nU" X#5        M     US S S2   n[        UR                  5       H  nU" X#5        M     [        R                  " S/5      R	                  S5      n[        UR                  5       H  nU" X#5        M     [        R                  " / SQ5      n[        UR                  5       H  nU" X#5        M     US S S2   n[        UR                  5       H  nU" X#5        M     g )	Nc                 F   > T" X5      nTR                  T" X5      U5        g r   )r   )r   r$   rr   rq   rp   rj   s      r   r   9TestArrayIterators.test_array_flat_getitem.<locals>.check1  s!    c'HU3_h7r   r   r   r   r   *   r7   r   )
r%   r   r2   r\   r   ranger`   r   r   r   rj   r   r   r   rq   rp   s   `   @@r   test_array_flat_getitem*TestArrayIterators.test_array_flat_getitem-  s   #V	8 iim##Aq!,sxxA#M !eesxxA#M !#A#hsxxA#M !hhtn$$R(sxxA#M ! hh|$sxxA#M !#A#hsxxA#M !r   c                   ^ ^^ [         m[        T5      mUUU 4S jn[        R                  " S5      R	                  SSS5      n[        UR                  5       H  nU" X#5        M     UR                  n[        UR                  5       H  nU" X#5        M     US S S2   n[        UR                  5       H  nU" X#5        M     [        R                  " S/5      R	                  S5      n[        UR                  5       H  nU" X#5        M     [        R                  " / SQ5      n[        UR                  5       H  nU" X#5        M     US S S2   n[        UR                  5       H  nU" X#5        M     g )	Nc                    > [         R                  " U 5      n[         R                  " U 5      nT" X!S5        T" X1S5        TR                  X25        g )N{   )r2   r~   rn   )r   r$   rr   r   rq   rp   rj   s       r   r   9TestArrayIterators.test_array_flat_setitem.<locals>.checkM  s?    wws|H''#,C8#&#C ##C2r   r   r   r   r   r   r7   r   )
r(   r   r2   r\   r   r   r`   r   r   r   r   s   `   @@r   test_array_flat_setitem*TestArrayIterators.test_array_flat_setitemI  s   #V	3 iim##Aq!,sxxA#M !eesxxA#M !#A#hsxxA#M !hhtn$$R(sxxA#M ! hh|$sxxA#M !#A#hsxxA#M !r   c                 F  ^ ^^ [         m[        [         5      mUUU 4S jn[        R                  " S5      R	                  SSS5      nU" U5        UR
                  nU" U5        US S S2   nU" U5        [        R                  " S/5      R	                  S5      nU" U5        g )Nc                 F   > T" U 5      nTR                  T" U 5      U5        g r   )rn   )r   rr   rq   rp   rj   s     r   r   5TestArrayIterators.test_array_flat_len.<locals>.checkm  s     c{H##E#J9r   r   r   r   r   r   r7   )r0   r   r2   r\   r   r   r   )rj   r   r   rq   rp   s   `  @@r   test_array_flat_len&TestArrayIterators.test_array_flat_leni  s    ^$	: iim##Aq!,c
eec
#A#hc
hhtn$$R(c
r   c                     [        [        R                  45      " [        5      n[        S5      nU" S5      nU R	                  UR                  5       5        U R                  X#5        g Nr   )r   r   r^   ra   r   sumrn   rj   rq   expectr   s       r   test_array_flat_premature_free1TestArrayIterators.test_array_flat_premature_freez  sK    ejj]#$=>*1-Ah	",r   c                    [         R                  " S5      R                  SS5      n[        U5      nU R	                  UR
                  S5        U R	                  UR                  S5        U R                  UR                  R                  5        U R                  X5        UR                  5       nU R                  UR                  R                  5        U R                  UR                  R                  5        [        U5      nU R	                  UR                  S5        U R                  X5        US S S2   nU R                  UR                  R                  5        U R                  UR                  R                  5        [        U5      nU R	                  UR                  S5        U R                  X5        [         R                  " / SQ5      R                  S	5      nU R                  U[        U5      5        g )
Nr   r   r   r   r   r   r   r   r   )r2   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s      r   test_array_ndenumerate_2d,TestArrayIterators.test_array_ndenumerate_2d  sj   iim##Aq)sQ's+		../((4mmo//0		../ss+((4#A#h//0//0ss+((4hh|$,,V4((fSk:r   c                    S n[         R                  " S[         R                  S9nUR                  SS5      n[        R
                  " [        R                  SSS9nU" X#5        [        R
                  " [        R                  SSS9nU" X#5        [        R
                  " [        R                  SSS9nU" X#5        UR                  SS5      n[        R
                  " [        R                  SSS9nU" X#5        [        R
                  " [        R                  SSS9nU" X#5        [        R
                  " [        R                  SSS9nU" X#5        g )	Nc                     [        U45      " [        5      nUR                  U4   nUR                  U 5      nUR	                  U 5      n[
        R                  R                  XT5        g r   )r   r5   r   r   r   r2   r   r   )r   r   rq   r   r   rr   s         r   r   >TestArrayIterators.test_array_ndenumerate_empty.<locals>.check  sS    %N#89E??E8,D""3'C}}S)HJJ&&x5r   r   rZ   r   r   r   r   r   r   r   s       r   test_array_ndenumerate_empty/TestArrayIterators.test_array_ndenumerate_empty  s    	6 hhq)kk!QEKK37cEKK37cEKK37ckk!QEKK37cEKK37cEKK37cr   c                     [        [        R                  45      " [        5      n[        S5      nU" S5      nU R	                  UR                  5       5        U R                  X#5        g r   )r   r   r^   rc   r   r   rn   r   s       r   %test_array_ndenumerate_premature_free8TestArrayIterators.test_array_ndenumerate_premature_free  sK    ejj]#$DE1!4Ah	",r   c                 n   [         n[        [        R                  [        R                  45      " U5      nU R	                  U" SS5      U" SS5      5        U R	                  U" SS5      U" SS5      5        U R	                  U" SS5      U" SS5      5        U R	                  U" SS5      U" SS5      5        g )Nr   r   r   )r>   r   r   r   rn   rj   r   rq   s      r   test_np_ndindex"TestArrayIterators.test_np_ndindex  s    ekk5;;01$7aT!QZ8aT!QZ8aT!QZ8aT!QZ8r   c                 H   [         n[        R                  " S[        R                  S9S-   nU R	                  U[        U5      U5        UR                  S5      nU R	                  U[        U5      U5        UR                  S5      nU R	                  U[        U5      U5        g )Nr   rZ   r   )r   r   )r   r   r   )rB   r2   r\   r   r   r   r   rj   r   r   s      r   test_np_ndindex_array(TestArrayIterators.test_np_ndindex_array  s~    ii"((+b0sF3K6kk&!sF3K6kk)$sF3K6r   c                 j    [         n[        S5      " U5      nU R                  U" 5       U" 5       5        g )Nr7   )r9   r   rn   r  s      r   test_np_ndindex_empty(TestArrayIterators.test_np_ndindex_empty  s(    R	$0r   c                     [         n[        R                  " S[        R                  S9S-   nU R	                  U[        U5      U5        g )Nr   rZ   r   )rW   r2   r\   r   r   r   r  s      r   test_iter_next!TestArrayIterators.test_iter_next  s6    ii"((+b0sF3K6r   r7   r   )__name__
__module____qualname____firstlineno____doc__ri   rs   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  __static_attributes____classcell__)rk   s   @r   re   re   x   s    066=-7B+"3-j+#2<8@"-;46-971
7 7r   re   c                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)
TestNdIteri  z
Test np.nditer()
c              #     #    [         R                  " S5      v   [         R                  " S[         R                  S9v   [         R                  " S5      R                  [         R                  5      v   [         R                  " S5      S S S2   v   [         R                  " S5      R                  S5      nUv   UR                  S	S
9v   [         R                  " S5      R                  S5      S S S2   nUv   g 7f)Nd   f   rZ   r   r   r   r   r   r   r   r   )r   r   )	r2   float32r   int16r\   astype	complex64r   r~   rj   rH   s     r   inputsTestNdIter.inputs  s      jjo hhs"((++ iil!!",,//iil3Q3 IIbM!!&)ff3fIIbM!!&)#A#.s   C;C=c              #   &  #    [         R                  " S5      R                  [         R                  5      v   [         R                  " S5      S S S2   v   [         R                  " S5      R	                  S5      nUv   UR                  SS9v   g 7f)Nr   r   r   r   r   r   r   )r2   r\   r  r   r   r~   r!  s     r   basic_inputsTestNdIter.basic_inputs  sg     iil!!",,//iil3Q3IIbM!!&)ff3fs   BBc                 P    U R                  [        U5      [        U5      X45        g r   )r   set)rj   r   rr   s      r   check_resultTestNdIter.check_result  s    S3x=3/Br   c                     [         n[        SS9" U5      nU R                  5        H$  nU" U5      nU" U5      nU R                  XT5        M&     g NTr   )rK   r   r"  r)  )rj   rp   rq   rH   rr   r   s         r   test_nditer1TestNdIter.test_nditer1  sF    T"6*AayH(Cc, r   c                     [         n[        SS9" U5      n[        R                  " U R	                  5       U R	                  5       5       H&  u  p4U" X45      nU" X45      nU R                  Xe5        M(     g r,  )rN   r   	itertoolsproductr"  r)  )rj   rp   rq   rH   rM   rr   r   s          r   test_nditer2TestNdIter.test_nditer2  s\    T"6*%%dkkmT[[]CDAa|H+Cc, Dr   c                     [         n[        SS9" U5      nU R                  n[        R                  " U" 5       U" 5       U" 5       5       H)  u  pEnU" XEU5      nU" XEU5      nU R                  X5        M+     g r,  )rR   r   r%  r0  r1  r)  )	rj   rp   rq   r"  rH   rM   rP   rr   r   s	            r   test_nditer3TestNdIter.test_nditer3  si    T"6*"" ((68VXFGA!aAHa.Cc, Gr   c                 H  ^ ^ [         n[        SS9" U5      mT R                  5         UU 4S jnU" [        R                  " S5      [        R                  " S5      5        [        R                  " S5      R                  S5      n[        R                  " S5      nU" X45        g )NTr   c                    > TR                  [        5       nT" X5        S S S 5        TR                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nz(operands could not be broadcast together)assertRaises
ValueErrorassertInstr	exception)rH   rM   raisesrq   rj   s      r   check_incompatible2TestNdIter.test_errors.<locals>.check_incompatible  sE    "":.&a /MMDf../1 /.s   	A
Ar   r   r   r   )rN   r   disable_leak_checkr2   r\   r   )rj   rp   r?  rH   rM   rq   s   `    @r   test_errorsTestNdIter.test_errors  sq    T"6*!	1 	299Q<16IIbM!!&)IIaL1 r   r7   N)r  r  r  r  r  r"  r%  r)  r-  r2  r5  rB  r  r7   r   r   r  r    s+    ( C---!r   r  __main__)#r0  numpyr2   numbar   r   r   
numba.corer   numba.tests.supportr   r   unittestr   r   r   r!   r%   r(   r-   r0   r5   r9   r>   rB   rK   rN   rR   rW   ra   rc   re   r  r  mainr7   r   r   <module>rK     s      # #  9 )_7( _7DM!( M!` zMMO r   