o
    i                     @   s  d dl Zd dlmZ d dlZd dlmZmZ d dlm	Z	m
Z
 d dlmZmZmZ d dlmZ e Zde_e Zde_e Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zedej fdej!fgZ"G dd deeZ#G dd deeZ$e%d kre&  dS dS )!    N)njit)compile_isolatedFlags)typeserrors)TestCaseMemoryLeakMixintag)numpy_supportTc                  C      d} dD ]}| |7 } q| S )Nr   )      c       resir   r   i/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_iteration.pyint_tuple_iter_usecase      
r   c                  C   r   )N        )      ?       @33333X@333333@r   r   r   r   r   float_tuple_iter_usecase   r   r   c                  C   s,   d} dD ]}|D ]}| |7 } q| d } q| S Nr   ))r   r   )r   r   )g?g      @r   r   )r   r   jr   r   r   tuple_tuple_iter_usecase   s   

r   c                  C   s8   d} t dD ]\}}|D ]}| || 7 } q| d } q| S r   	enumerate)r   r   r   lr   r   r   enumerate_nested_tuple_usecase(   s   
r#   c                  C   sD   d} t t dD ]\}\}}|D ]
}| || | 7 } q| d } q| S r   r    )r   r   r   kr"   r   r   r   nested_enumerate_usecase0   s   
r%   c                  C   s:   d} t dt df}t|D ]
\}}| | 7 } q| S )Nr         )npZonesr!   sum)r   Zarraysr   vr   r   r   enumerate_array_usecase9   s
   r+   c                 C   s   d}| D ]}||7 }q|S Nr   r   iterabler   xr   r   r   scalar_iter_usecaseA   r   r0   c                 C   s"   d}| D ]
}||j |j 7 }q|S r,   abr-   r   r   r   record_iter_usecaseG   s   r4   c                 C   s   | D ]	}|j |j |_ qd S Nr1   )r.   r/   r   r   r   record_iter_mutate_usecaseM   s   r6   r2   r3   c                   @   s   e Zd Zdd ZefddZdd ZefddZd	d
 ZefddZ	dd Z
efddZdd ZefddZdd Zdd Zdd ZefddZdd Zefdd Zd!d" Zefd#d$Zd%d& Zefd'd(Zd)d* Zd+d, Zd-d. Zd/d0 Zd1S )2IterationTestc                 C   s,   t |d|d}|j}| }| | | d S )Nr   flags)r   entry_pointassertPreciseEqual)selfpyfuncr9   crcfuncexpectedr   r   r   run_nullary_funcY   s   zIterationTest.run_nullary_funcc                 C      |  t| d S r5   )rA   r   r<   r9   r   r   r   test_int_tuple_iter_      z!IterationTest.test_int_tuple_iterc                 C      | j td d S Nr8   )rD   no_pyobj_flagsr<   r   r   r   test_int_tuple_iter_npmb   rE   z%IterationTest.test_int_tuple_iter_npmc                 C   rB   r5   )rA   r   rC   r   r   r   test_float_tuple_iterh   rE   z#IterationTest.test_float_tuple_iterc                 C   rF   rG   )rK   rH   rI   r   r   r   test_float_tuple_iter_npmk   rE   z'IterationTest.test_float_tuple_iter_npmc                 C   rB   r5   )rA   r   rC   r   r   r   test_tuple_tuple_itern   rE   z#IterationTest.test_tuple_tuple_iterc                 C   rF   rG   )rM   rH   rI   r   r   r   test_tuple_tuple_iter_npmq   rE   z'IterationTest.test_tuple_tuple_iter_npmc                 C   rB   r5   )rA   r#   rC   r   r   r   test_enumerate_nested_tuplet   rE   z)IterationTest.test_enumerate_nested_tuplec                 C   rF   rG   )rO   rH   rI   r   r   r   test_enumerate_nested_tuple_npmw   rE   z-IterationTest.test_enumerate_nested_tuple_npmc                 C   rB   r5   )rA   r%   rC   r   r   r   test_nested_enumeratez   rE   z#IterationTest.test_nested_enumeratec                 C   rF   rG   )rQ   rH   rI   r   r   r   test_nested_enumerate_npm}   rE   z'IterationTest.test_nested_enumerate_npmc                 C   s,   t }t|d}|j}| }| | | d S )Nr   )r+   r   r:   r;   )r<   r=   r>   r?   r@   r   r   r   test_enumerate_refct   s
   
z"IterationTest.test_enumerate_refctc                 C   s>   t }t|t|ddf||d}|j}| |||| d S )Nr   Ar8   )r0   r   r   Arrayr:   r;   )r<   	item_typeargr9   r=   r>   r?   r   r   r   run_array_1d   s   zIterationTest.run_array_1dc                 C   s   |  tjtd| d S )N      @)rX   r   float64r(   arangerC   r   r   r   test_array_1d_float   s   z!IterationTest.test_array_1d_floatc                 C      |  t d S r5   )r\   rH   rI   r   r   r   test_array_1d_float_npm      z%IterationTest.test_array_1d_float_npmc                 C   s   |  tjtdd | d S )NrY   y              ?)rX   r   Z
complex128r(   r[   rC   r   r   r   test_array_1d_complex   s   z#IterationTest.test_array_1d_complexc                 C   r]   r5   )r`   rH   rI   r   r   r   test_array_1d_complex_npm   r_   z'IterationTest.test_array_1d_complex_npmc           	      C   s   t }tt}t|t|ddf|d}|j}tj	dtd}t
dD ]}t|d || _|d || _q"||}| ||| d S Nr   rT   r8   r   dtyper   )r4   r
   
from_dtyperecord_dtyper   r   rU   r:   r(   recarrayrangefloatr2   r3   r;   )	r<   r9   r=   rV   r>   r?   arrr   gotr   r   r   test_array_1d_record   s   
z"IterationTest.test_array_1d_recordc                 C   r]   r5   )rl   rH   rI   r   r   r   test_array_1d_record_npm   r_   z&IterationTest.test_array_1d_record_npmc           
      C   s   t }tt}t|t|ddf|d}|j}tj	dtd}t
dD ]}t|d || _|d || _q"| }|| | }	||	 | ||	 d S rb   )r6   r
   re   rf   r   r   rU   r:   r(   rg   rh   ri   r2   r3   copyr;   )
r<   r9   r=   rV   r>   r?   rj   r   r@   rk   r   r   r   test_array_1d_record_mutate_npm   s   
z-IterationTest.test_array_1d_record_mutate_npmc                 C   rF   rG   )ro   force_pyobj_flagsrI   r   r   r   test_array_1d_record_mutate   rE   z)IterationTest.test_array_1d_record_mutatec                 C   sf   dd }|  tj}ttjdd}t||f W d    n1 s#w   Y  | dt|j	 d S )Nc                 S   s   | D ]}qd S r5   r   )r/   r   r   r   r   foo   s   z/IterationTest.test_array_0d_raises.<locals>.foor   Cz	0-d array)
assertRaisesr   ZTypingErrorr   rU   int32r   ZassertInstr	exception)r<   rr   Zraisesarytyr   r   r   test_array_0d_raises   s   z"IterationTest.test_array_0d_raisesc                 C   s`   dd }t jdt jd }}ttjdd}t|||f}|||}|||}| || d S )Nc                 S   s,   d}t | |D ]}||d |d  7 }q|S Nr   r   )zip)r/   ytotalrowr   r   r   bar   s   z4IterationTest.test_tuple_iter_issue1504.<locals>.barr   rc   r   rs   )r(   r[   ru   r   rU   r   r:   assertEqualr<   r   r/   r|   rx   Zcresexpectrk   r   r   r   test_tuple_iter_issue1504   s   
z'IterationTest.test_tuple_iter_issue1504c                 C   sl   dd }t jdt jd }}ttjdd}t|tj|df}|||f}|||f}| 	|| d S )Nc                 S   s   d}| D ]}||d 7 }q|S )Nr   r   )Zarrsr}   rj   r   r   r   r      s   z4IterationTest.test_tuple_of_arrays_iter.<locals>.barr   rc   r   rs   r   )
r(   r[   ru   r   rU   r   
containersZUniTupler:   r   r   r   r   r   test_tuple_of_arrays_iter   s   z'IterationTest.test_tuple_of_arrays_iterN)__name__
__module____qualname__rA   rp   rD   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rX   r\   r^   r`   ra   rl   rm   rH   ro   rq   ry   r   r   r   r   r   r   r7   W   s2    r7   c                   @   s   e Zd Zdd ZdS )TestIterationRefctc                 C   s8   t dd }dd tdD }| |||| d S )Nc                 S   s8   d}t tt| | D ]\}}||d |  7 }qd S rz   )r{   rh   lenr)   )sequencecr2   r3   r   r   r   rr      s   z4TestIterationRefct.test_zip_with_arrays.<locals>.fooc                 S   s   g | ]	}t d | qS )r   )r(   r[   ).0r   r   r   r   
<listcomp>   s    z;TestIterationRefct.test_zip_with_arrays.<locals>.<listcomp>
   )r   rh   r   Zpy_func)r<   rr   r   r   r   r   test_zip_with_arrays   s   
z'TestIterationRefct.test_zip_with_arraysN)r   r   r   r   r   r   r   r   r      s    r   __main__)'numpyr(   Znumbar   ZunittestZnumba.core.compilerr   r   Z
numba.corer   r   Znumba.tests.supportr   r   r	   Znumba.npr
   Zenable_pyobj_flagsZenable_pyobjectrp   Zforce_pyobjectrH   r   r   r   r#   r%   r+   r0   r4   r6   rd   rZ   ru   rf   r7   r   r   mainr   r   r   r   <module>   s<    		 