
    J/Ph,D                     $   d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
Z
mZ d dlZd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z G d dee
          Z G d dee
          Z e!dk    r ej"                     dS dS )    N)jitnjittypeof)types)TestCaseMemoryLeakMixinc                 D    d}t          |           D ]\  }}|||z  z  }|S Nr   	enumerate)arrtotalivs       `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_array_iterators.py
array_iterr      s4    E#  1QL    c                 :    t          t          |                     S N)listiterr   s    r   array_iter_itemsr      s    S		??r   c                 P    d}t          | |                   D ]\  }}|||z  z  }|S r
   r   )r   idxr   r   r   s        r   array_view_iterr      s:    E#c(##  1QLr   c                 D    t          | j                  D ]
\  }}|||<   d S r   r   flat)r   outr   r   s       r   
array_flatr!      s4    #(##  1A r   c                     | j         |         S r   r   )r   inds     r   array_flat_getitemr%      s    8C=r   c                     || j         |<   d S r   r#   )r   r$   vals      r   array_flat_setitemr(   !   s    CHSMMMr   c                 T    d}t          | j                  D ]\  }}||dz   |z  z   }|S Nr      r   )r   sr   r   s       r   array_flat_sumr-   $   s<    	A#(##  1Q!OHr   c                 *    t          | j                  S r   )lenr   r   s    r   array_flat_lenr0   *   s    sx==r   c                 f    d}t          j        |           D ]\  \  }}}||dz   |dz   z  |z  z   }|S r*   )npndenumerate)r   r,   r   jr   s        r   array_ndenumerate_sumr5   -   sK    	A^C(( & &	AQ1q5!A%%Hr   c                  h    d} t          j        d          D ]}| | t          |          z   dz   z  } | S )Nr    r+   )r2   ndindexr/   )r,   r$   s     r   np_ndindex_emptyr9   3   s>    	Az"~~  	QS\AHr   c                 `    d}d}t          j        | |          D ]\  }}||dz   |dz   z  z   }|S r*   )r2   r8   )xyr,   nr   r4   s         r   
np_ndindexr>   9   sI    	A	A
1a   " "1Q1q5!!Hr   c                     d}d}t          j        | j                  D ]%}t          |          D ]\  }}||dz   |dz   z  z   }&|S r*   )r2   r8   shaper   )r   r,   r=   indicesr   r4   s         r   np_ndindex_arrayrB   @   se    	A	A:ci(( & &g&& 	& 	&DAqQUq1u%%AA	&Hr   c                     g }t          j        |           D ])}|                    |                                           *|S r   r2   nditerappenditem)aresus      r   
np_nditer1rK   H   s@    
CYq\\  

16688Jr   c                     g }t          j        | |f          D ]@\  }}|                    |                                |                                f           A|S r   rD   )rH   brI   rJ   r   s        r   
np_nditer2rN   N   sW    
C	1a&!! ) )1

AFFHHaffhh'((((Jr   c                     g }t          j        | ||f          D ]T\  }}}|                    |                                |                                |                                f           U|S r   rD   )rH   rM   crI   rJ   r   ws          r   
np_nditer3rR   T   se    
C9aAY'' 3 31a

AFFHHaffhh12222Jr   c                     t          |           }t          |           }t          |          t          |          t          |          fS r   )r   next)r   itit2s      r   	iter_nextrW   Z   s7    	cB
s))C88T"XXtCyy((r   c                     t          j        |           }t          j        |t           j                  }t	          |j                  D ]
\  }}|||<   |S Ndtype)r2   arange
zeros_likeintpr   r   sizer;   rI   r   r   s        r   array_flat_premature_freera   i   sR    
	$A
-
)
)
)C!&!!  1AJr   c                     t          j        |           }t          j        |t           j                  }t          j        |          D ]
\  }}|||<   |S rY   )r2   r\   r]   r^   r3   r_   s        r    array_ndenumerate_premature_freerc   p   sR    
	$A
-
)
)
)Cq!!  1AJr   c                        e Zd ZdZ fdZd Zd Zd ZddZd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TestArrayIteratorsz1
    Test array.flat, np.ndenumerate(), etc.
    c                 V    t          t          |                                            d S r   )superre   setUp)self	__class__s    r   rh   zTestArrayIterators.setUp}   s&     $''--/////r   c                     t           } t          t          |          f          |          } ||          }|                      ||          |           d S r   )r   r   r   assertPreciseEqualri   r   pyfunccfuncexpecteds        r   check_array_iter_1dz&TestArrayIterators.check_array_iter_1d   sW    $fSkk^$$V,,6#;;c

H55555r   c                     t           } t          t          |          f          |          } ||          }|                      ||          |           d S r   )r   r   r   rl   rm   s        r   check_array_iter_itemsz)TestArrayIterators.check_array_iter_items   sW    !$fSkk^$$V,,6#;;c

H55555r   c                     t           } t          t          |          t          |          f          |          } |||          }|                      |||          |           d S r   )r   r   r   rl   )ri   r   indexrn   ro   rp   s         r   check_array_view_iterz(TestArrayIterators.check_array_view_iter   sh     3fSkk6%==233F;;6#u%%c5 1 18<<<<<r   Nc                 L   t          j        |j        |j                  }|                                }|t          |          } t          |t          |          f          t                    }t          ||            |||           |                     ||           d S rY   )	r2   zerosr`   r[   copyr   r   r!   rl   )ri   r   arrtyr    nb_outro   s         r   check_array_flatz#TestArrayIterators.check_array_flat   s    hsxsy111=3KKE+eVC[[*++J773c6V,,,,,r   c                      t          |f          |          }|                      ||           ||                     d S r   )r   rl   )ri   r   rz   funcro   s        r   check_array_unaryz$TestArrayIterators.check_array_unary   sE    eXt$$c

DDII66666r   c                 >    |                      ||t                     d S r   )r   r5   ri   r   rz   s      r   check_array_ndenumerate_sumz.TestArrayIterators.check_array_ndenumerate_sum   s!    sE+@AAAAAr   c                    t          j        d          }|                     |           |                     |           |d d d         }|                     |j        j                   |                     |j        j                   |                     |           |                     |           t          j        g d          }|                     |           |                     |           t          j	        g dg dg dg          }|                     |           |                     |j
                   d S )N      r+   r   r   r+   )r+   r      )      r   )      	   )r2   r\   rq   rs   assertFalseflagsc_contiguousf_contiguousbool_arrayTri   r   s     r   test_array_iterz"TestArrayIterators.test_array_iter   s-   ill  %%%##C(((##A#h/000/000  %%%##C(((h|||$$  %%%##C(((h			999iii899##C(((##CE*****r   c                 |   t          d          d             }t          j        d                              dd          }|                    |          } ||          }|                     ||           t          j        d                              d	d          d d d
d d d d f         }|                    |          } ||          }|                     ||           t          j        d                              d	d          d d d d d
d d f         }|                    |          } ||          }|                     ||           t          j        d                              d	d          d d d d d d d
f         }|                    |          } ||          }|                     ||           t          d          d             }t          j        d                              dd          }|                    |          } ||          }|                     t          |          t          |                     |d         \  }}}|d         \  }	}
}t          j        	                    ||	           |                     ||
           |                     ||           d S )NTnopythonc                 l    g }| D ].}|D ])}|                     |                                           */|S r   )rF   ravel)r   ty1y2s       r   fooz=TestArrayIterators.test_array_iter_yielded_order.<locals>.foo   sL    A ) ) ) )BHHRXXZZ(((()Hr      )r   r   r   Forder@   )r   r   r   r   c                 l    g }| D ].}|                     ||j        j        |j        j        f           /|S r   )rF   r   r   r   )r   r    subs      r   
flag_checkzDTestArrayIterators.test_array_iter_yielded_order.<locals>.flag_check   sL    C 5 5

C!7I24 5 5 5 5Jr   
   )r   r   r   )
r   r2   r\   reshapepy_funcrl   assertEqualr/   testingassert_allclose)ri   r   r   rp   gotr   ex_arre_flag_ce_flag_fgo_arrg_flag_cg_flag_fs               r   test_array_iter_yielded_orderz0TestArrayIterators.test_array_iter_yielded_order   s   	d				 	 
		 imm##IS#99;;s##c#hh#... imm##IS#99##A#qqq!!!)D;;s##c#hh#... imm##IS#99!!!SSqS!!!)D;;s##c#hh#... imm##IS#99!!!QQQ!)D;;s##c#hh#...	d				 	 
		 imm##F##66%%c**jooXC111%-a["(%(V"(

""662228,,,8,,,,,r   c                 v   t          j        d                              d          }|                     |d           |                     |j        d           |d d d         }|                     |d           t          j        g d                              d          }|                     |d           d S )N   r   r   r+   r   r   r   r   )r2   r\   r   rv   r   r   r   s     r   test_array_view_iterz'TestArrayIterators.test_array_view_iter   s    imm##F++""3***""35!,,,##A#h""3***h|||$$,,V44""3*****r   c                    t          j        d                              ddd          }t          |          }|                     |j        d           |                     |j        d           |                     |j        j	                   | 
                    |           |                                }|                     |j        j	                   |                     |j        j                   |                     t          |          j        d           | 
                    |           |d d d         }|                     |j        j	                   |                     |j        j                   |                     t          |          j        d           | 
                    |           t          j        g ddz                                d	          }| 
                    |           d S )
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_3dz%TestArrayIterators.test_array_flat_3d   s   imm##Aq!,,sQ'''s+++	.///c"""mmoo/000	.///+S111c"""##A#h/000/000+S111c"""h|||a'((00;;c"""""r   c                      fd}t          j        dt           j                  }|                    dd          }t	          j        t          j        dd          } |||           t	          j        t          j        dd          } |||           t	          j        t          j        dd          } |||           |                    dd          }t	          j        t          j        dd          } |||           t	          j        t          j        dd          } |||           t	          j        t          j        dd          } |||           d S )	Nc                      t          |f          t                    }|j        |f         }|                    |           }|                    |           }                    ||           d S r   )r   r-   	overloadsentry_pointr   rl   )r   rz   ro   cresr   rp   ri   s         r   checkz7TestArrayIterators.test_array_flat_empty.<locals>.check  sh    "D%NN>22E?E8,D""3''C}}S))H##Hc22222r   r   rZ   r   r   r   r   r   r2   rx   int32r   r   Arrayri   r   r   rz   s   `   r   test_array_flat_emptyz(TestArrayIterators.test_array_flat_empty  s\   	3 	3 	3 	3 	3 hq)))kk!QEK3777c5EK3777c5EK3777c5kk!QEK3777c5EK3777c5EK3777c5r   c                     t           t                     fd}t          j        d                              ddd          }t          |j                  D ]} |||           |j        }t          |j                  D ]} |||           |d d d         }t          |j                  D ]} |||           t          j        dg                              d          }t          |j                  D ]} |||           t          j	        g d          }t          |j                  D ]} |||           |d d d         }t          |j                  D ]} |||           d S )	Nc                 `     | |          }                      | |          |           d S r   )r   )r   r$   rp   ro   rn   ri   s      r   r   z9TestArrayIterators.test_array_flat_getitem.<locals>.check1  s:    vc3''HUU3__h77777r   r   r   r   r   *   r7   r   )
r%   r   r2   r\   r   ranger`   r   r   r   ri   r   r   r   ro   rn   s   `   @@r   test_array_flat_getitemz*TestArrayIterators.test_array_flat_getitem-  s   #V	8 	8 	8 	8 	8 	8 	8 imm##Aq!,,sx 	 	AE#qMMMMesx 	 	AE#qMMMM##A#hsx 	 	AE#qMMMMhtnn$$R((sx 	 	AE#qMMMMh|||$$sx 	 	AE#qMMMM##A#hsx 	 	AE#qMMMM	 	r   c                     t           t                     fd}t          j        d                              ddd          }t          |j                  D ]} |||           |j        }t          |j                  D ]} |||           |d d d         }t          |j                  D ]} |||           t          j        dg                              d          }t          |j                  D ]} |||           t          j	        g d          }t          |j                  D ]} |||           |d d d         }t          |j                  D ]} |||           d S )	Nc                     t          j        |           }t          j        |           } ||d            ||d                               ||           d S )N{   )r2   ry   rl   )r   r$   rp   r   ro   rn   ri   s       r   r   z9TestArrayIterators.test_array_flat_setitem.<locals>.checkM  sa    ws||H'#,,CF8S#&&&E#sC   ##C22222r   r   r   r   r   r   r7   r   )
r(   r   r2   r\   r   r   r`   r   r   r   r   s   `   @@r   test_array_flat_setitemz*TestArrayIterators.test_array_flat_setitemI  s   #V	3 	3 	3 	3 	3 	3 	3 imm##Aq!,,sx 	 	AE#qMMMMesx 	 	AE#qMMMM##A#hsx 	 	AE#qMMMMhtnn$$R((sx 	 	AE#qMMMMh|||$$sx 	 	AE#qMMMM##A#hsx 	 	AE#qMMMM	 	r   c                 n    t           t          t                      fd}t          j        d                              ddd          } ||           |j        } ||           |d d d         } ||           t          j        dg                              d          } ||           d S )Nc                 \     |           }                      |           |           d S r   )rl   )r   rp   ro   rn   ri   s     r   r   z5TestArrayIterators.test_array_flat_len.<locals>.checkm  s4    vc{{H##EE#JJ99999r   r   r   r   r   r   r7   )r0   r   r2   r\   r   r   r   )ri   r   r   ro   rn   s   `  @@r   test_array_flat_lenz&TestArrayIterators.test_array_flat_leni  s    ^$$	: 	: 	: 	: 	: 	: 	: imm##Aq!,,c


ec


##A#hc


htnn$$R((c




r   c                     t          t          j        f          t                    }t          d          } |d          }|                     |                                           |                     ||           d S Nr   )r   r   r^   ra   r   sumrl   ri   ro   expectr   s       r   test_array_flat_premature_freez1TestArrayIterators.test_array_flat_premature_freez  sn    #ej]##$=>>*1--eAhh		""",,,,,r   c                    t          j        d                              dd          }t          |          }|                     |j        d           |                     |j        d           |                     |j        j	                   | 
                    ||           |                                }|                     |j        j	                   |                     |j        j                   t          |          }|                     |j        d           | 
                    ||           |d d d         }|                     |j        j	                   |                     |j        j                   t          |          }|                     |j        d           | 
                    ||           t          j        g d                              d	          }| 
                    |t          |                     d S )
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_2dz,TestArrayIterators.test_array_ndenumerate_2d  s   imm##Aq))sQ'''s+++	.///((e444mmoo/000	.///ss+++((e444##A#h/000/000ss+++((e444h|||$$,,V44((fSkk:::::r   c                    d }t          j        dt           j                  }|                    dd          }t	          j        t          j        dd          } |||           t	          j        t          j        dd          } |||           t	          j        t          j        dd          } |||           |                    dd          }t	          j        t          j        dd          } |||           t	          j        t          j        dd          } |||           t	          j        t          j        dd          } |||           d S )	Nc                      t          |f          t                    }|j        |f         }|                    |           }|                    |           }t
          j                            ||           d S r   )r   r5   r   r   r   r2   r   r   )r   rz   ro   r   r   rp   s         r   r   z>TestArrayIterators.test_array_ndenumerate_empty.<locals>.check  sj    "D%NN#899E?E8,D""3''C}}S))HJ&&x55555r   r   rZ   r   r   r   r   r   r   r   s       r   test_array_ndenumerate_emptyz/TestArrayIterators.test_array_ndenumerate_empty  sQ   	6 	6 	6 hq)))kk!QEK3777c5EK3777c5EK3777c5kk!QEK3777c5EK3777c5EK3777c5r   c                     t          t          j        f          t                    }t          d          } |d          }|                     |                                           |                     ||           d S r   )r   r   r^   rc   r   r   rl   r   s       r   %test_array_ndenumerate_premature_freez8TestArrayIterators.test_array_ndenumerate_premature_free  sn    #ej]##$DEE1!44eAhh		""",,,,,r   c                    t           } t          t          j        t          j        f          |          }|                      |dd           |dd                     |                      |dd           |dd                     |                      |dd           |dd                     |                      |dd           |dd                     d S )Nr   r   r   )r>   r   r   r   rl   ri   r~   ro   s      r   test_np_ndindexz"TestArrayIterators.test_np_ndindex  s    1ek5;011$77aTT!QZZ888aTT!QZZ888aTT!QZZ888aTT!QZZ88888r   c                    t           }t          j        dt          j                  dz   }|                     |t          |          |           |                    d          }|                     |t          |          |           |                    d          }|                     |t          |          |           d S )Nr   rZ   r   )r   r   )r   r   r   )rB   r2   r\   r   r   r   r   ri   r~   r   s      r   test_np_ndindex_arrayz(TestArrayIterators.test_np_ndindex_array  s    i"(+++b0sF3KK666kk&!!sF3KK666kk)$$sF3KK66666r   c                     t           } t          d          |          }|                      |             |                       d S )Nr7   )r9   r   rl   r   s      r   test_np_ndindex_emptyz(TestArrayIterators.test_np_ndindex_empty  sB    R		$00000r   c                     t           }t          j        dt          j                  dz   }|                     |t          |          |           d S )Nr   rZ   r   )rW   r2   r\   r   r   r   r   s      r   test_iter_nextz!TestArrayIterators.test_iter_next  sF    i"(+++b0sF3KK66666r   r   )__name__
__module____qualname____doc__rh   rq   rs   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)rj   s   @r   re   re   x   s        0 0 0 0 06 6 66 6 6= = =- - - -7 7 7B B B+ + +"3- 3- 3-j+ + +# # #2  <  8  @  "- - -; ; ;4  6- - -9 9 97 7 71 1 1
7 7 7 7 7 7 7r   re   c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )

TestNdIterz
    Test np.nditer()
    c              #     K   t          j        d          V  t          j        dt           j                  V  t          j        d                              t           j                  V  t          j        d          d d d         V  t          j        d                              d          }|V  |                    d	
          V  t          j        d                              d          d d d         }|V  d S )Nd   f   rZ   r   r   r   r   r   r   r   r   )r   r   )	r2   float32r   int16r\   astype	complex64r   ry   ri   rH   s     r   inputszTestNdIter.inputs  s       joo hs"(++++++ ill!!",/////ill33Q3 IbMM!!&))ff3fIbMM!!&))##A#.r   c              #   4  K   t          j        d                              t           j                  V  t          j        d          d d d         V  t          j        d                              d          }|V  |                    d          V  d S )Nr   r   r   r   r   r   r   )r2   r\   r   r   r   ry   r   s     r   basic_inputszTestNdIter.basic_inputs  s      ill!!",/////ill33Q3IbMM!!&))ff3fr   c                 l    |                      t          |          t          |          ||f           d S r   )r   set)ri   r   rp   s      r   check_resultzTestNdIter.check_result  s0    S3x==3/BBBBBr   c                     t           } t          d          |          }|                                 D ].} ||          } ||          }|                     ||           /d S NTr   )rK   r   r  r  )ri   rn   ro   rH   rp   r   s         r   test_nditer1zTestNdIter.test_nditer1  su    "T"""6** 	- 	-AvayyH%((Cc8,,,,	- 	-r   c                     t           } t          d          |          }t          j        |                                 |                                           D ]3\  }} |||          } |||          }|                     ||           4d S r  )rN   r   	itertoolsproductr  r  )ri   rn   ro   rH   rM   rp   r   s          r   test_nditer2zTestNdIter.test_nditer2  s    "T"""6**%dkkmmT[[]]CC 	- 	-DAqva||H%1++Cc8,,,,	- 	-r   c                    t           } t          d          |          }| j        }t          j         |             |             |                      D ]6\  }}} ||||          } ||||          }|                     ||           7d S r  )rR   r   r  r  r  r  )	ri   rn   ro   r  rH   rM   rP   rp   r   s	            r   test_nditer3zTestNdIter.test_nditer3  s    "T"""6**" (6688VVXXFF 	- 	-GAq!vaAH%1a..Cc8,,,,	- 	-r   c                 l    t           } t          d          |                                             fd} |t          j        d          t          j        d                     t          j        d                              d          }t          j        d          } |||           d S )NTr   c                                          t                    5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S )Nz(operands could not be broadcast together)assertRaises
ValueErrorassertInstr	exception)rH   rM   raisesro   ri   s      r   check_incompatiblez2TestNdIter.test_errors.<locals>.check_incompatible  s    "":.. &a              MMDf.//1 1 1 1 1s   599r   r   r   r   )rN   r   disable_leak_checkr2   r\   r   )ri   rn   r  rH   rM   ro   s   `    @r   test_errorszTestNdIter.test_errors  s    "T"""6**!!!	1 	1 	1 	1 	1 	1 	29Q<<1666IbMM!!&))IaLL1a     r   N)r   r   r   r   r  r  r  r	  r  r  r  r7   r   r   r   r     s           (     C C C- - -- - -- - -! ! ! ! !r   r   __main__)#r  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>r"     s           # # # # # # # # # #       9 9 9 9 9 9 9 9                               ) ) )    _7 _7 _7 _7 _7( _7 _7 _7DM! M! M! M! M!( M! M! M!` zHMOOOOO r   