
    piE                        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d Z G d dee
      Z  G d dee
      Z!e"dk(  r ejF                          yy)    N)jitnjittypeof)types)TestCaseMemoryLeakMixinc                 @    d}t        |       D ]  \  }}|||z  z  } |S Nr   	enumerate)arrtotalivs       b/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/numba/tests/test_array_iterators.py
array_iterr      s0    E# 1QL    c                 *    t        t        |             S N)listiterr   s    r   array_iter_itemsr      s    S	?r   c                 F    d}t        | |         D ]  \  }}|||z  z  } |S r
   r   )r   idxr   r   r   s        r   array_view_iterr      s5    E#c(# 1QLr   c                 H    t        | j                        D ]
  \  }}|||<    y r   r   flat)r   outr   r   s       r   
array_flatr!      s'    #((# 1Ar   c                      | j                   |   S r   r   )r   inds     r   array_flat_getitemr%      s    88C=r   c                 "    || j                   |<   y r   r#   )r   r$   vals      r   array_flat_setitemr(   !   s    CHHSMr   c                 Z    d}t        | j                        D ]  \  }}||dz   |z  z   } |S Nr      r   )r   sr   r   s       r   array_flat_sumr-   $   s9    	A#((# 1Q!OHr   c                 ,    t        | j                        S r   )lenr   r   s    r   array_flat_lenr0   *   s    sxx=r   c                 H    t        j                  |       D ]
  \  }}||fc S  y r   npndenumerate)r   r   r   s      r   array_ndenumerate_zero_dimr5   -   s*    s# 11vr   c                 l    d}t        j                  |       D ]  \  \  }}}||dz   |dz   z  |z  z   } |S r*   r2   )r   r,   r   jr   s        r   array_ndenumerate_sumr8   2   sH    	A^^C( &	AQ1q5!A%%&Hr   c                  f    d} t        j                  d      D ]  }| | t        |      z   dz   z  }  | S )Nr    r+   )r3   ndindexr/   )r,   r$   s     r   np_ndindex_emptyr<   8   s:    	Azz"~ 	QS\AHr   c                 f    d}d}t        j                  | |      D ]  \  }}||dz   |dz   z  z   } |S r*   )r3   r;   )xyr,   nr   r7   s         r   
np_ndindexrA   >   sF    	A	A

1a  "1Q1q5!!"Hr   c                     d}d}t        j                  | j                        D ]#  }t        |      D ]  \  }}||dz   |dz   z  z   } % |S r*   )r3   r;   shaper   )r   r,   r@   indicesr   r7   s         r   np_ndindex_arrayrE   E   s^    	A	A::cii( &g& 	&DAqQUq1u%%A	&& Hr   c                 |    g }t        j                  |       D ]!  }|j                  |j                                # |S r   r3   nditerappenditem)aresus      r   
np_nditer1rN   M   s5    
CYYq\ 

1668Jr   c                     g }t        j                  | |f      D ]4  \  }}|j                  |j                         |j                         f       6 |S r   rG   )rK   brL   rM   r   s        r   
np_nditer2rQ   S   sI    
C		1a&! )1

AFFHaffh'()Jr   c                     g }t        j                  | ||f      D ]D  \  }}}|j                  |j                         |j                         |j                         f       F |S r   rG   )rK   rP   crL   rM   r   ws          r   
np_nditer3rU   Y   sU    
C99aAY' 31a

AFFHaffh123Jr   c                 n    t        |       }t        |       }t        |      t        |      t        |      fS r   )r   next)r   itit2s      r   	iter_nextrZ   _   s-    	cB
s)C8T"XtCy((r   c                     t        j                  |       }t        j                  |t         j                        }t	        |j
                        D ]
  \  }}|||<    |S Ndtype)r3   arange
zeros_likeintpr   r   sizer>   rL   r   r   s        r   array_flat_premature_freerd   n   sM    
		$A
--
)C!&&! 1AJr   c                     t        j                  |       }t        j                  |t         j                        }t        j                  |      D ]
  \  }}|||<    |S r\   )r3   r_   r`   ra   r4   rb   s        r    array_ndenumerate_premature_freerf   u   sM    
		$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d Z xZS )TestArrayIteratorsz1
    Test array.flat, np.ndenumerate(), etc.
    c                 *    t         t        |           y r   )superrh   setUp)self	__class__s    r   rk   zTestArrayIterators.setUp   s     $-/r   c                     t         } t        t        |      f      |      } ||      }| j                   ||      |       y r   )r   r   r   assertPreciseEqualrl   r   pyfunccfuncexpecteds        r   check_array_iter_1dz&TestArrayIterators.check_array_iter_1d   s;    $fSk^$V,#;c
H5r   c                     t         } t        t        |      f      |      } ||      }| j                   ||      |       y r   )r   r   r   ro   rp   s        r   check_array_iter_itemsz)TestArrayIterators.check_array_iter_items   s;    !$fSk^$V,#;c
H5r   c                     t         } t        t        |      t        |      f      |      } |||      }| j                   |||      |       y r   )r   r   r   ro   )rl   r   indexrq   rr   rs   s         r   check_array_view_iterz(TestArrayIterators.check_array_view_iter   sH     3fSk6%=23F;#u%c5 18<r   c                 "   t        j                  |j                  |j                        }|j	                         }|t        |      } t        |t        |      f      t              }t        ||        |||       | j                  ||       y r\   )	r3   zerosrc   r^   copyr   r   r!   ro   )rl   r   arrtyr    nb_outrr   s         r   check_array_flatz#TestArrayIterators.check_array_flat   sq    hhsxxsyy1=3KE+eVC[*+J73c6V,r   c                 d     t        |f      |      }| j                   ||       ||             y r   )r   ro   )rl   r   r}   funcrr   s        r   check_array_unaryz$TestArrayIterators.check_array_unary   s,    eXt$c
DI6r   c                 2    | j                  ||t               y r   )r   r8   rl   r   r}   s      r   check_array_ndenumerate_sumz.TestArrayIterators.check_array_ndenumerate_sum   s    sE+@Ar   c                 `   t        j                  d      }| j                  |       | j                  |       |d d d   }| j	                  |j
                  j                         | j	                  |j
                  j                         | j                  |       | j                  |       t        j                  g d      }| j                  |       | j                  |       t        j                  g dg dg dg      }| j                  |       | j                  |j                         y )N      r+   r   r   r+   )r+   r      )      r   )      	   )r3   r_   rt   rv   assertFalseflagsc_contiguousf_contiguousbool_arrayTrl   r   s     r   test_array_iterz"TestArrayIterators.test_array_iter   s    iil  %##C(#A#h//0//0  %##C(hh|$  %##C(hh	9i89##C(##CEE*r   c                    t        d      d        }t        j                  d      j                  dd      }|j	                  |      } ||      }| j                  ||       t        j                  d      j                  d	d      d d d
d d d d f   }|j	                  |      } ||      }| j                  ||       t        j                  d      j                  d	d      d d d d d
d d f   }|j	                  |      } ||      }| j                  ||       t        j                  d      j                  d	d      d d d d d d d
f   }|j	                  |      } ||      }| j                  ||       t        d      d        }t        j                  d      j                  dd      }|j	                  |      } ||      }| j                  t        |      t        |             |d   \  }}}|d   \  }	}
}t        j                  j                  ||	       | j                  ||
       | j                  ||       y )NTnopythonc                 d    g }| D ](  }|D ]!  }|j                  |j                                # * |S r   )rI   ravel)r   ty1y2s       r   fooz=TestArrayIterators.test_array_iter_yielded_order.<locals>.foo   s>    A ) )BHHRXXZ()) Hr      )r   r   r   Forder@   )r   r   r   r   c                     g }| D ]>  }|j                  ||j                  j                  |j                  j                  f       @ |S r   )rI   r   r   r   )r   r    subs      r   
flag_checkzDTestArrayIterators.test_array_iter_yielded_order.<locals>.flag_check   sI    C 5

C!7!7II224 55 Jr   
   )r   r   r   )
r   r3   r_   reshapepy_funcro   assertEqualr/   testingassert_allclose)rl   r   r   rs   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		 
	 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"(


""6628,8,r   c                 L   t        j                  d      j                  d      }| j                  |d       | j                  |j                  d       |d d d   }| j                  |d       t        j
                  g d      j                  d      }| j                  |d       y )N   r   r   r+   r   r   r   r   )r3   r_   r   ry   r   r   r   s     r   test_array_view_iterz'TestArrayIterators.test_array_view_iter   s    iim##F+""3*""355!,#A#h""3*hh|$,,V4""3*r   c                    t        j                  d      j                  ddd      }t        |      }| j	                  |j
                  d       | j	                  |j                  d       | j                  |j                  j                         | j                  |       |j                         }| j                  |j                  j                         | j                  |j                  j                         | j	                  t        |      j                  d       | j                  |       |d d d   }| j                  |j                  j                         | j                  |j                  j                         | j	                  t        |      j                  d       | j                  |       t        j                  g ddz        j                  d	      }| j                  |       y )
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_3dz%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                      fd}t        j                  dt         j                        }|j                  dd      }t	        j
                  t        j                  dd      } |||       t	        j
                  t        j                  dd      } |||       t	        j
                  t        j                  dd      } |||       |j                  dd      }t	        j
                  t        j                  dd      } |||       t	        j
                  t        j                  dd      } |||       t	        j
                  t        j                  dd      } |||       y )	Nc                      t        |f      t              }|j                  |f   }|j                  |       }|j	                  |       }j                  ||       y r   )r   r-   	overloadsentry_pointr   ro   )r   r}   rr   cresr   rs   rl   s         r   checkz7TestArrayIterators.test_array_flat_empty.<locals>.check  sS    "D%N>2E??E8,D""3'C}}S)H##Hc2r   r   r]   r   r   r   r   r   r3   r{   int32r   r   Arrayrl   r   r   r}   s   `   r   test_array_flat_emptyz(TestArrayIterators.test_array_flat_empty  s    	3 hhq)kk!QEKK37c5EKK37c5EKK37c5kk!QEKK37c5EKK37c5EKK37c5r   c                     t         t               fd}t        j                  d      j	                  ddd      }t        |j                        D ]  } |||        |j                  }t        |j                        D ]  } |||        |d d d   }t        |j                        D ]  } |||        t        j                  dg      j	                  d      }t        |j                        D ]  } |||        t        j                  g d      }t        |j                        D ]  } |||        |d d d   }t        |j                        D ]  } |||        y )	Nc                 J     | |      }j                   | |      |       y r   )r   )r   r$   rs   rr   rq   rl   s      r   r   z9TestArrayIterators.test_array_flat_getitem.<locals>.check6  s%    c3'HU3_h7r   r   r   r   r   *   r:   r   )
r%   r   r3   r_   r   rangerc   r   r   r   rl   r   r   r   rr   rq   s   `   @@r   test_array_flat_getitemz*TestArrayIterators.test_array_flat_getitem2  sA   #V	8 iim##Aq!,sxx 	A#qM	eesxx 	A#qM	#A#hsxx 	A#qM	hhtn$$R(sxx 	A#qM	 hh|$sxx 	A#qM	#A#hsxx 	A#qM	r   c                     t         t               fd}t        j                  d      j	                  ddd      }t        |j                        D ]  } |||        |j                  }t        |j                        D ]  } |||        |d d d   }t        |j                        D ]  } |||        t        j                  dg      j	                  d      }t        |j                        D ]  } |||        t        j                  g d      }t        |j                        D ]  } |||        |d d d   }t        |j                        D ]  } |||        y )	Nc                     t        j                  |       }t        j                  |       } ||d        ||d       j                  ||       y )N{   )r3   r|   ro   )r   r$   rs   r   rr   rq   rl   s       r   r   z9TestArrayIterators.test_array_flat_setitem.<locals>.checkR  sE    wws|H''#,C8S#&#sC ##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_setitemz*TestArrayIterators.test_array_flat_setitemN  sA   #V	3 iim##Aq!,sxx 	A#qM	eesxx 	A#qM	#A#hsxx 	A#qM	hhtn$$R(sxx 	A#qM	 hh|$sxx 	A#qM	#A#hsxx 	A#qM	r   c                 @    t         t        t                fd}t        j                  d      j	                  ddd      } ||       |j
                  } ||       |d d d   } ||       t        j                  dg      j	                  d      } ||       y )Nc                 F     |       }j                   |       |       y r   )ro   )r   rs   rr   rq   rl   s     r   r   z5TestArrayIterators.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   )rl   r   r   rr   rq   s   `  @@r   test_array_flat_lenz&TestArrayIterators.test_array_flat_lenn  s    ^$	: iim##Aq!,c
eec
#A#hc
hhtn$$R(c
r   c                      t        t        j                  f      t              }t        d      } |d      }| j	                  |j                                | j                  ||       y Nr   )r   r   ra   rd   r   sumro   rl   rr   expectr   s       r   test_array_flat_premature_freez1TestArrayIterators.test_array_flat_premature_free  sO    #ejj]#$=>*1-Ah	",r   c                     t        j                  d      j                  dd      }t        |      }| j	                  |j
                  d       | j	                  |j                  d       | j                  |j                  j                         | j                  ||       |j                         }| j                  |j                  j                         | j                  |j                  j                         t        |      }| j	                  |j                  d       | j                  ||       |d d d   }| j                  |j                  j                         | j                  |j                  j                         t        |      }| j	                  |j                  d       | j                  ||       t        j                  g d      j                  d	      }| j                  |t        |             y )
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_2dz,TestArrayIterators.test_array_ndenumerate_2d  sp   iim##Aq)sQ's+		../((e4mmo//0		../ss+((e4#A#h//0//0ss+((e4hh|$,,V4((fSk:r   c                    d }t        j                  dt         j                        }|j                  dd      }t	        j
                  t        j                  dd      } |||       t	        j
                  t        j                  dd      } |||       t	        j
                  t        j                  dd      } |||       |j                  dd      }t	        j
                  t        j                  dd      } |||       t	        j
                  t        j                  dd      } |||       t	        j
                  t        j                  dd      } |||       y )	Nc                      t        |f      t              }|j                  |f   }|j                  |       }|j	                  |       }t
        j                  j                  ||       y r   )r   r8   r   r   r   r3   r   r   )r   r}   rr   r   r   rs   s         r   r   z>TestArrayIterators.test_array_ndenumerate_empty.<locals>.check  sW    "D%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_emptyz/TestArrayIterators.test_array_ndenumerate_empty  s    	6 hhq)kk!QEKK37c5EKK37c5EKK37c5kk!QEKK37c5EKK37c5EKK37c5r   c                      t        t        j                  f      t              }t        d      } |d      }| j	                  |j                                | j                  ||       y r   )r   r   ra   rf   r   r   ro   r   s       r   %test_array_ndenumerate_premature_freez8TestArrayIterators.test_array_ndenumerate_premature_free  sO    #ejj]#$DE1!4Ah	",r   c                     t         }t        |      }t        j                  d      } ||      } ||      }| j	                  ||       | j                  |d   d       | j                  |d   d       y )Na   r   r:   r+   )r5   r   r3   r   ro   r   )rl   r   rr   r   rs   r   s         r   test_array_ndenumerate_zero_dimz2TestArrayIterators.test_array_ndenumerate_zero_dim  sg    )T
hhrl9CjX.!b)!b)r   c                 n   t         } t        t        j                  t        j                  f      |      }| j	                   |dd       |dd             | j	                   |dd       |dd             | j	                   |dd       |dd             | j	                   |dd       |dd             y )Nr   r   r   )rA   r   r   r   ro   rl   r   rr   s      r   test_np_ndindexz"TestArrayIterators.test_np_ndindex  s    1ekk5;;01$7aT!QZ8aT!QZ8aT!QZ8aT!QZ8r   c                 L   t         }t        j                  dt        j                        dz   }| j	                  |t        |      |       |j                  d      }| j	                  |t        |      |       |j                  d      }| j	                  |t        |      |       y )Nr   r]   r   )r   r   )r   r   r   )rE   r3   r_   r   r   r   r   rl   r   r   s      r   test_np_ndindex_arrayz(TestArrayIterators.test_np_ndindex_array  s~    ii"((+b0sF3K6kk&!sF3K6kk)$sF3K6r   c                 j    t         } t        d      |      }| j                   |        |              y )Nr:   )r<   r   ro   r   s      r   test_np_ndindex_emptyz(TestArrayIterators.test_np_ndindex_empty  s*    R	$0r   c                     t         }t        j                  dt        j                        dz   }| j	                  |t        |      |       y )Nr   r]   r   )rZ   r3   r_   r   r   r   r   s      r   test_iter_nextz!TestArrayIterators.test_iter_next  s6    ii"((+b0sF3K6r   r   )__name__
__module____qualname____doc__rk   rt   rv   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)rm   s   @r   rh   rh   }   s    066=-7B+"3-j+#2<8@"-;46-*971
7r   rh   c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)

TestNdIterz
    Test np.nditer()
    c              #     K   t        j                  d       t        j                  dt         j                         t        j                  d      j                  t         j                         t        j                  d      d d d    t        j                  d      j                  d      }| |j                  d	
       t        j                  d      j                  d      d d d   }| y w)Nd   f   r]   r   r   r   r   r   r   r   r   )r   r   )	r3   float32r   int16r_   astype	complex64r   r|   rl   rK   s     r   inputszTestNdIter.inputs  s      jjo hhs"((++ iil!!",,//iil3Q3 IIbM!!&)ff3fIIbM!!&)#A#.s   C;C=c              #   &  K   t        j                  d      j                  t         j                         t        j                  d      d d d    t        j                  d      j	                  d      }| |j                  d       y w)Nr   r   r   r   r   r   r   )r3   r_   r  r  r   r|   r  s     r   basic_inputszTestNdIter.basic_inputs  sh     iil!!",,//iil3Q3IIbM!!&)ff3fs   BBc                 R    | j                  t        |      t        |      ||f       y r   )r   set)rl   r   rs   s      r   check_resultzTestNdIter.check_result	  s     S3x=3/Br   c                     t         } t        d      |      }| j                         D ]$  } ||      } ||      }| j                  ||       & y NTr   )rN   r   r  r  )rl   rq   rr   rK   rs   r   s         r   test_nditer1zTestNdIter.test_nditer1  sO    "T"6* 	-AayH(Cc8,	-r   c                     t         } t        d      |      }t        j                  | j	                         | j	                               D ])  \  }} |||      } |||      }| j                  ||       + y r  )rQ   r   	itertoolsproductr  r  )rl   rq   rr   rK   rP   rs   r   s          r   test_nditer2zTestNdIter.test_nditer2  sj    "T"6*%%dkkmT[[]C 	-DAqa|H1+Cc8,	-r   c                     t         } t        d      |      }| j                  }t        j                   |        |        |             D ],  \  }}} ||||      } ||||      }| j                  ||       . y r  )rU   r   r	  r  r  r  )	rl   rq   rr   r  rK   rP   rS   rs   r   s	            r   test_nditer3zTestNdIter.test_nditer3  sw    "T"6*"" ((68VXF 	-GAq!aAH1a.Cc8,	-r   c                 F    t         } t        d      |       j                           fd} |t        j                  d      t        j                  d             t        j                  d      j                  d      }t        j                  d      } |||       y )NTr   c                     j                  t              5 } | |       d d d        j                  dt        j                               y # 1 sw Y   /xY w)Nz(operands could not be broadcast together)assertRaises
ValueErrorassertInstr	exception)rK   rP   raisesrr   rl   s      r   check_incompatiblez2TestNdIter.test_errors.<locals>.check_incompatible-  sN    "":. &aMMDf../1 s   
AAr   r   r   r   )rQ   r   disable_leak_checkr3   r_   r   )rl   rq   r  rK   rP   rr   s   `    @r   test_errorszTestNdIter.test_errors&  su    "T"6*!	1 	299Q<16IIbM!!&)IIaL1a r   N)r   r   r   r   r  r	  r  r  r  r  r   r:   r   r   r   r     s+    ( C---!r   r   __main__)$r  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>r(     s      # #  9 
)i7( i7XM!( M!` zHMMO r   