
    "
3jE                        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 r " S S\\
5      r  " S S\\
5      r!\"S:X  a  \RF                  " 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       Z/home/wildlama/miniconda3/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                 H    [         R                  " U 5       H  u  pX4s  $    g r   npndenumerate)r   r   r   s      r   array_ndenumerate_zero_dimr5   -   s!    s#v $r   c                 n    Sn[         R                  " U 5       H  u  u  p#nXS-   US-   -  U-  -   nM     U$ r*   r2   )r   r,   r   jr   s        r   array_ndenumerate_sumr8   2   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+   )r3   ndindexr/   )r,   r$   s     r   np_ndindex_emptyr<   8   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*   )r3   r;   )xyr,   nr   r7   s         r   
np_ndindexrA   >   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*   )r3   r;   shaper   )r   r,   r@   indicesr   r7   s         r   np_ndindex_arrayrE   E   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   r3   nditerappenditem)aresus      r   
np_nditer1rN   M   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   rG   )rK   brL   rM   r   s        r   
np_nditer2rQ   S   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   rG   )rK   rP   crL   rM   r   ws          r   
np_nditer3rU   Y   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_nextrZ   _   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)r3   arange
zeros_likeintpr   r   sizer>   rL   r   r   s        r   array_flat_premature_freerd   n   sD    
		$A
--
)C!&&!A "Jr   c                     [         R                  " U 5      n[         R                  " U[         R                  S9n[         R                  " U5       H	  u  p4XBU'   M     U$ r\   )r3   r_   r`   ra   r4   rb   s        r    array_ndenumerate_premature_freerf   u   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SrU =r$ )TestArrayIterators}   z)
Test array.flat, np.ndenumerate(), etc.
c                 *   > [         [        U ]  5         g r   )superrh   setUp)self	__class__s    r   rl   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rm   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   rq   rr   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   rq   )rm   r   indexrs   rt   ru   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 r\   )	r3   zerosrc   r^   copyr   r   r!   rq   )rm   r   arrtyr    nb_outrt   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   rq   )rm   r   r   funcrt   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   r8   rm   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   )      	   )r3   r_   rv   ry   assertFalseflagsc_contiguousf_contiguousbool_arrayTrm   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   )rI   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   )rI   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   r3   r_   reshapepy_funcrq   assertEqualr/   testingassert_allclose)rm   r   r   ru   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   )r3   r_   r   r}   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   )r3   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   rq   )r   r   rt   cresr   ru   rm   s         r   check7TestArrayIterators.test_array_flat_empty.<locals>.check  sO    %N>2E??E8,D""3'C}}S)H##H2r   r   r]   r   r   r   r   r   r3   r   int32r   r   Arrayrm   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$   ru   rt   rs   rm   s      r   r   9TestArrayIterators.test_array_flat_getitem.<locals>.check6  s!    c'HU3_h7r   r   r   r   r   *   r:   r   )
r%   r   r3   r_   r   rangerc   r   r   r   rm   r   r   r   rt   rs   s   `   @@r   test_array_flat_getitem*TestArrayIterators.test_array_flat_getitem2  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{   )r3   r   rq   )r   r$   ru   r   rt   rs   rm   s       r   r   9TestArrayIterators.test_array_flat_setitem.<locals>.checkR  s?    wws|H''#,C8#&#C ##C2r   r   r   r   r   r   r:   r   )
r(   r   r3   r_   r   r   rc   r   r   r   r   s   `   @@r   test_array_flat_setitem*TestArrayIterators.test_array_flat_setitemN  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   )rq   )r   ru   rt   rs   rm   s     r   r   5TestArrayIterators.test_array_flat_len.<locals>.checkr  s     c{H##E#J9r   r   r   r   r   r   r:   )r0   r   r3   r_   r   r   r   )rm   r   r   rt   rs   s   `  @@r   test_array_flat_len&TestArrayIterators.test_array_flat_lenn  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   ra   rd   r   sumrq   rm   rt   expectr   s       r   test_array_flat_premature_free1TestArrayIterators.test_array_flat_premature_free  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   )r3   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   r8   r   r   r   r3   r   r   )r   r   rt   r   r   ru   s         r   r   >TestArrayIterators.test_array_ndenumerate_empty.<locals>.check  sS    %N#89E??E8,D""3'C}}S)HJJ&&x5r   r   r]   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   ra   rf   r   r   rq   r   s       r   %test_array_ndenumerate_premature_free8TestArrayIterators.test_array_ndenumerate_premature_free  sK    ejj]#$DE1!4Ah	",r   c                     [         n[        U5      n[        R                  " S5      nU" U5      nU" U5      nU R	                  XT5        U R                  US   S5        U R                  US   S5        g )Na   r   r:   r+   )r5   r   r3   r   rq   r   )rm   r   rt   r   ru   r   s         r   test_array_ndenumerate_zero_dim2TestArrayIterators.test_array_ndenumerate_zero_dim  se    )T
hhrl9Cj.!b)!b)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   )rA   r   r   r   rq   rm   r   rt   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   r]   r   )r   r   )r   r   r   )rE   r3   r_   r   r   r   r   rm   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 )Nr:   )r<   r   rq   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   r]   r   )rZ   r3   r_   r   r   r   r  s      r   test_iter_next!TestArrayIterators.test_iter_next  s6    ii"((+b0sF3K6r   r:   r   )__name__
__module____qualname____firstlineno____doc__rl   rv   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  __static_attributes____classcell__)rn   s   @r   rh   rh   }   s    066=-7B+"3-j+#2<8@"-;46-*971
7 7r   rh   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   r]   r   r   r   r   r   r   r   r   )r   r   )	r3   float32r   int16r_   astype	complex64r   r   rm   rK   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   )r3   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)rm   r   ru   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   )rN   r   r)  r0  )rm   rs   rt   rK   ru   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 r3  )rQ   r   	itertoolsproductr)  r0  )rm   rs   rt   rK   rP   ru   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 r3  )rU   r   r,  r7  r8  r0  )	rm   rs   rt   r)  rK   rP   rS   ru   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)rK   rP   raisesrt   rm   s      r   check_incompatible2TestNdIter.test_errors.<locals>.check_incompatible-  sE    "":.&a /MMDf../1 /.s   	A
Ar   r   r   r   )rQ   r   disable_leak_checkr3   r_   r   )rm   rs   rF  rK   rP   rt   s   `    @r   test_errorsTestNdIter.test_errors&  sq    T"6*!	1 	299Q<16IIbM!!&)IIaL1 r   r:   N)r  r  r  r  r  r)  r,  r0  r4  r9  r<  rI  r  r:   r   r   r   r     s+    ( C---!r   r   __main__)$r7  numpyr3   numbar   r   r   
numba.corer   numba.tests.supportr   r   unittestr   r   r   r!   r%   r(   r-   r0   r5   r8   r<   rA   rE   rN   rQ   rU   rZ   rd   rf   rh   r   r  mainr:   r   r   <module>rR     s      # #  9 
)i7( i7XM!( M!` zMMO r   