o
    1&iz                     @   s   d dl 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 d dlmZ ddiZddi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r{e    dS dS )"    N)jitnjit)typeserrors)TestCaseMemoryLeakMixin)numpy_supportZforceobjTZnopythonc                  C      d} dD ]}| |7 } q| S )Nr   )      c       resir   r   EC:\wamp64\www\opt\env\Lib\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_usecase+   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_usecase4   s
   r)   c                 C   s   d}| D ]}||7 }q|S Nr   r   iterabler   xr   r   r   scalar_iter_usecase<   r   r.   c                 C   s"   d}| D ]
}||j |j 7 }q|S r*   abr+   r   r   r   record_iter_usecaseB   s   r2   c                 C   s   | D ]	}|j |j |_ qd S Nr/   )r,   r-   r   r   r   record_iter_mutate_usecaseH   s   r4   r0   r1   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i ||}| }| | | d S )Nr   )r   )r   assertPreciseEqual)selfpyfuncflagscfuncexpectedr   r   r   run_nullary_funcT   s   zIterationTest.run_nullary_funcc                 C      |  t| d S r3   )r<   r   r7   r9   r   r   r   test_int_tuple_iterY      z!IterationTest.test_int_tuple_iterc                 C      | j td d S N)r9   )r?   no_pyobj_flagsr7   r   r   r   test_int_tuple_iter_npm\   r@   z%IterationTest.test_int_tuple_iter_npmc                 C   r=   r3   )r<   r   r>   r   r   r   test_float_tuple_iterb   r@   z#IterationTest.test_float_tuple_iterc                 C   rA   rB   )rF   rC   rD   r   r   r   test_float_tuple_iter_npme   r@   z'IterationTest.test_float_tuple_iter_npmc                 C   r=   r3   )r<   r   r>   r   r   r   test_tuple_tuple_iterh   r@   z#IterationTest.test_tuple_tuple_iterc                 C   rA   rB   )rH   rC   rD   r   r   r   test_tuple_tuple_iter_npmk   r@   z'IterationTest.test_tuple_tuple_iter_npmc                 C   r=   r3   )r<   r!   r>   r   r   r   test_enumerate_nested_tuplen   r@   z)IterationTest.test_enumerate_nested_tuplec                 C   rA   rB   )rJ   rC   rD   r   r   r   test_enumerate_nested_tuple_npmq   r@   z-IterationTest.test_enumerate_nested_tuple_npmc                 C   r=   r3   )r<   r#   r>   r   r   r   test_nested_enumeratet   r@   z#IterationTest.test_nested_enumeratec                 C   rA   rB   )rL   rC   rD   r   r   r   test_nested_enumerate_npmw   r@   z'IterationTest.test_nested_enumerate_npmc                 C   s(   t }td|}| }| | | d S )Nr   )r)   r   r6   )r7   r8   r:   r;   r   r   r   test_enumerate_refctz   s   z"IterationTest.test_enumerate_refctc                 C   s>   t }t|t|ddfi ||}| |||| d S )Nr
   A)r.   r   r   Arrayr6   )r7   	item_typeargr9   r8   r:   r   r   r   run_array_1d   s   "zIterationTest.run_array_1dc                 C   s   |  tjtd| d S )N      @)rS   r   float64r&   aranger>   r   r   r   test_array_1d_float   s   z!IterationTest.test_array_1d_floatc                 C      |  t d S r3   )rW   rC   rD   r   r   r   test_array_1d_float_npm      z%IterationTest.test_array_1d_float_npmc                 C   s   |  tjtdd | d S )NrT   y              ?)rS   r   Z
complex128r&   rV   r>   r   r   r   test_array_1d_complex   s   z#IterationTest.test_array_1d_complexc                 C   rX   r3   )r[   rC   rD   r   r   r   test_array_1d_complex_npm   rZ   z'IterationTest.test_array_1d_complex_npmc                 C   s   t }tt}tt|ddffi ||}tjdtd}t	dD ]}t
|d || _|d || _q"||}| ||| d S Nr
   rO   r   dtyper   )r2   r   
from_dtyperecord_dtyper   r   rP   r&   recarrayrangefloatr0   r1   r6   )r7   r9   r8   rQ   r:   arrr   gotr   r   r   test_array_1d_record   s   
 z"IterationTest.test_array_1d_recordc                 C   rX   r3   )rg   rC   rD   r   r   r   test_array_1d_record_npm   rZ   z&IterationTest.test_array_1d_record_npmc           	      C   s   t }tt}tt|ddffi ||}tjdtd}t	dD ]}t
|d || _|d || _q"| }|| | }|| | || d S r]   )r4   r   r`   ra   r   r   rP   r&   rb   rc   rd   r0   r1   copyr6   )	r7   r9   r8   rQ   r:   re   r   r;   rf   r   r   r   test_array_1d_record_mutate_npm   s   
 z-IterationTest.test_array_1d_record_mutate_npmc                 C   rA   rB   )rj   force_pyobj_flagsrD   r   r   r   test_array_1d_record_mutate   r@   z)IterationTest.test_array_1d_record_mutatec                 C   sh   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 r3   r   )r-   r   r   r   r   foo   s   z/IterationTest.test_array_0d_raises.<locals>.foor   Cz	0-d array)
assertRaisesr   ZTypingErrorr   rP   int32r   ZassertInstr	exception)r7   rm   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   r^   r
   rn   )r&   rV   rp   r   rP   r   assertEqualr7   rz   r-   rw   rs   r:   expectrf   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arrsrx   re   r   r   r   rz      s   z4IterationTest.test_tuple_of_arrays_iter.<locals>.barr   r^   r
   rn   r   )	r&   rV   rp   r   rP   r   
containersZUniTupler{   r|   r   r   r   test_tuple_of_arrays_iter   s   z'IterationTest.test_tuple_of_arrays_iterN)__name__
__module____qualname__r<   rk   r?   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rS   rW   rY   r[   r\   rg   rh   rC   rj   rl   rt   r~   r   r   r   r   r   r5   R   s2    r5   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 ru   )rv   rc   lenr'   )sequencecr0   r1   r   r   r   rm      s   z4TestIterationRefct.test_zip_with_arrays.<locals>.fooc                 S   s   g | ]	}t d | qS )r
   )r&   rV   ).0r   r   r   r   
<listcomp>   s    z;TestIterationRefct.test_zip_with_arrays.<locals>.<listcomp>
   )r   rc   r{   Zpy_func)r7   rm   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__)!Zunittestnumpyr&   Znumbar   r   Z
numba.corer   r   Znumba.tests.supportr   r   Znumba.npr   rk   rC   r   r   r   r!   r#   r)   r.   r2   r4   r_   rU   rp   ra   r5   r   r   mainr   r   r   r   <module>   s4    		 