o
    i                     @   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_supportforceobjTnopythonc                  C      d} dD ]}| |7 } q| S )Nr   )      c       resir   r   W/home/ubuntu/veenaModal/venv/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_usecase+   s   
r%   c                  C   s:   d} t dt df}t|D ]
\}}| | 7 } q| S )Nr         )nponesr!   sum)r   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   r2   c                 C   s"   d}| D ]
}||j |j 7 }q|S r.   abr/   r   r   r   record_iter_usecaseB   s   r6   c                 C   s   | D ]	}|j |j |_ qd S Nr3   )r0   r1   r   r   r   record_iter_mutate_usecaseH   s   r8   r4   r5   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 r7   )r@   r   r;   r=   r   r   r   test_int_tuple_iterY      z!IterationTest.test_int_tuple_iterc                 C      | j td d S N)r=   )rC   no_pyobj_flagsr;   r   r   r   test_int_tuple_iter_npm\   rD   z%IterationTest.test_int_tuple_iter_npmc                 C   rA   r7   )r@   r   rB   r   r   r   test_float_tuple_iterb   rD   z#IterationTest.test_float_tuple_iterc                 C   rE   rF   )rJ   rG   rH   r   r   r   test_float_tuple_iter_npme   rD   z'IterationTest.test_float_tuple_iter_npmc                 C   rA   r7   )r@   r   rB   r   r   r   test_tuple_tuple_iterh   rD   z#IterationTest.test_tuple_tuple_iterc                 C   rE   rF   )rL   rG   rH   r   r   r   test_tuple_tuple_iter_npmk   rD   z'IterationTest.test_tuple_tuple_iter_npmc                 C   rA   r7   )r@   r#   rB   r   r   r   test_enumerate_nested_tuplen   rD   z)IterationTest.test_enumerate_nested_tuplec                 C   rE   rF   )rN   rG   rH   r   r   r   test_enumerate_nested_tuple_npmq   rD   z-IterationTest.test_enumerate_nested_tuple_npmc                 C   rA   r7   )r@   r%   rB   r   r   r   test_nested_enumeratet   rD   z#IterationTest.test_nested_enumeratec                 C   rE   rF   )rP   rG   rH   r   r   r   test_nested_enumerate_npmw   rD   z'IterationTest.test_nested_enumerate_npmc                 C   s(   t }td|}| }| | | d S )Nr   )r-   r   r:   )r;   r<   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)r2   r   r   Arrayr:   )r;   	item_typeargr=   r<   r>   r   r   r   run_array_1d   s   "zIterationTest.run_array_1dc                 C   s   |  tjtd| d S )N      @)rW   r   float64r(   arangerB   r   r   r   test_array_1d_float   s   z!IterationTest.test_array_1d_floatc                 C      |  t d S r7   )r[   rG   rH   r   r   r   test_array_1d_float_npm      z%IterationTest.test_array_1d_float_npmc                 C   s   |  tjtdd | d S )NrX   y              ?)rW   r   
complex128r(   rZ   rB   r   r   r   test_array_1d_complex   s   z#IterationTest.test_array_1d_complexc                 C   r\   r7   )r`   rG   rH   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fi ||}tjdtd}t	dD ]}t
|d || _|d || _q"||}| ||| d S Nr   rS   r   dtyper   )r6   r   
from_dtyperecord_dtyper   r   rT   r(   recarrayrangefloatr4   r5   r:   )r;   r=   r<   rU   r>   arrr   gotr   r   r   test_array_1d_record   s   
 z"IterationTest.test_array_1d_recordc                 C   r\   r7   )rl   rG   rH   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fi ||}tjdtd}t	dD ]}t
|d || _|d || _q"| }|| | }|| | || d S rb   )r8   r   re   rf   r   r   rT   r(   rg   rh   ri   r4   r5   copyr:   )	r;   r=   r<   rU   r>   rj   r   r?   rk   r   r   r   test_array_1d_record_mutate_npm   s   
 z-IterationTest.test_array_1d_record_mutate_npmc                 C   rE   rF   )ro   force_pyobj_flagsrH   r   r   r   test_array_1d_record_mutate   rD   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 r7   r   )r1   r   r   r   r   foo   s   z/IterationTest.test_array_0d_raises.<locals>.foor   Cz	0-d array)
assertRaisesr   TypingErrorr   rT   int32r   assertInstr	exception)r;   rr   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)r1   ytotalrowr   r   r   bar   s   z4IterationTest.test_tuple_iter_issue1504.<locals>.barr   rc   r   rs   )r(   rZ   rv   r   rT   r   assertEqualr;   r   r1   r   r{   r>   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   )arrsr   rj   r   r   r   r      s   z4IterationTest.test_tuple_of_arrays_iter.<locals>.barr   rc   r   rs   r   )	r(   rZ   rv   r   rT   r   
containersUniTupler   r   r   r   r   test_tuple_of_arrays_iter   s   z'IterationTest.test_tuple_of_arrays_iterN)__name__
__module____qualname__r@   rp   rC   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rW   r[   r]   r`   ra   rl   rm   rG   ro   rq   r|   r   r   r   r   r   r   r9   R   s2    r9   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 r}   )r~   rh   lenr*   )sequencecr4   r5   r   r   r   rr      s   z4TestIterationRefct.test_zip_with_arrays.<locals>.fooc                 S   s   g | ]	}t d | qS )r   )r(   rZ   ).0r   r   r   r   
<listcomp>   s    z;TestIterationRefct.test_zip_with_arrays.<locals>.<listcomp>
   )r   rh   r   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__)!unittestnumpyr(   numbar   r   
numba.corer   r   numba.tests.supportr   r   numba.npr   rp   rG   r   r   r   r#   r%   r-   r2   r6   r8   rd   rY   rv   rf   r9   r   r   mainr   r   r   r   <module>   s4    		 