U
    9%et                     @   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
 d dlmZmZmZ e Zde_e Zde_e Zde_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dd Zdd Zdd Z dd  Z!d!d" Z"d#d$ Z#d%d& Z$G d'd( d(eeZ%e&d)kre'  dS )*    N)compile_isolatedFlags)errorstypes)typeof)TestCaseMemoryLeakMixintagTc                 C   s   | \}}}|||fS N )labcr   r   _/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_unpack_sequence.pyunpack_list   s    
r   c                 C   s   | j \}}}|| | S r
   shape)r   xyzr   r   r   unpack_shape   s    r   c                  C   s   t d\} }}| | | S )N   ranger   r   r   r   r   r   unpack_range   s    r   c                  C   s   t d\} }}| | | S )N   r   r   r   r   r   unpack_range_too_small"   s    r   c                  C   s   t d\} }}| | | S )N   r   r   r   r   r   unpack_range_too_large'   s    r    c                  C   s   d\} }}| | | S )N   r   r   r   r   r   r   r   unpack_tuple,   s    
r#   c                  C   s   d\} }}| | | S )N)r"   r   r   r   r   r   r   unpack_tuple_too_small1   s    
r$   c                  C   s   d\} }}| | | S )N)r"   r   r   r   r   r   r   r   r   unpack_tuple_too_large6   s    
r%   c                  C   s   d\} }}| | | S )N)r"   y              @r   r   r   r   r   $unpack_heterogeneous_tuple_too_small;   s    
r&   c                  C   s   d\} }}| | | S )N)r"         @              @r   r   r   r   r   r   $unpack_heterogeneous_tuple_too_large@   s    
r)   c                  C   s   d\} }}| | | S )N)r"   r'   r(   r   r   r   r   r   unpack_heterogeneous_tupleE   s    
r*   c                  C   s   d\} \}}| | | S )N)r"   )r'   r(   r   r   r   r   r   !unpack_nested_heterogeneous_tupleJ   s    r+   c                 C   s   | \}}||fS r
   r   )seqr   r   r   r   r   unpack_arbitraryO   s    r-   c                  C   s,   t d} t d}|| f}|\}}||fS )Nr"   r   npzeros)r   r   tupalphabetar   r   r   
unpack_nrtT   s
    

r4   c                 C   s(   | |f }\}}|\}}|| | | S r
   r   )r   r   r   r   r   der   r   r   chained_unpack_assign1\   s    r7   c                 C   s   | dkr||  } }| |fS )Nr   r   )r   r   r   r   r   conditional_swapc   s    
r8   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efddZdd Zeef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fd-d.Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9S ):
TestUnpackc                 C   s:   t }t|dtd}|j}dddg}| |||| d S )Nr   flagsr"   r   r   )r   r   force_pyobj_flagsentry_pointassertEqual)selfpyfunccrcfuncr   r   r   r   test_unpack_listl   s
    
zTestUnpack.test_unpack_listc                 C   sT   t }t|tjtjdddg|d}|j}tjddtj}| 	|||| d S )Nr   C)ZdtypendimZlayoutr:   r!   r   )
r   r   r   ZArrayint32r=   r/   r0   ZastypeassertPreciseEqual)r?   r;   r@   rA   rB   r   r   r   r   test_unpack_shapes   s    zTestUnpack.test_unpack_shapec                 C   s   | j td d S Nr:   )rH   no_pyobj_flagsr?   r   r   r   test_unpack_shape_npm}   s    z TestUnpack.test_unpack_shape_npmc                 C   s   |  t| d S r
   )run_nullary_funcr   r?   r;   r   r   r   test_unpack_range   s    zTestUnpack.test_unpack_rangec                 C   s   | j td d S rI   )rO   rJ   rK   r   r   r   test_unpack_range_npm   s    z TestUnpack.test_unpack_range_npmc                 C   s   |  t| d S r
   )rM   r#   rN   r   r   r   test_unpack_tuple   s    zTestUnpack.test_unpack_tuplec                 C   s   | j td d S rI   )rQ   rJ   rK   r   r   r   test_unpack_tuple_npm   s    z TestUnpack.test_unpack_tuple_npmc                 C   s   |  t| d S r
   )rM   r*   rN   r   r   r   test_unpack_heterogeneous_tuple   s    z*TestUnpack.test_unpack_heterogeneous_tuplec                 C   s   | j td d S rI   )rS   rJ   rK   r   r   r   #test_unpack_heterogeneous_tuple_npm   s    z.TestUnpack.test_unpack_heterogeneous_tuple_npmc                 C   s   |  t| d S r
   )rM   r+   rN   r   r   r   &test_unpack_nested_heterogeneous_tuple   s    z1TestUnpack.test_unpack_nested_heterogeneous_tuplec                 C   s   | j td d S rI   )rU   rJ   rK   r   r   r   *test_unpack_nested_heterogeneous_tuple_npm   s    z5TestUnpack.test_unpack_nested_heterogeneous_tuple_npmc                 C   s<   t }t|tjtjg|d}|j}d}| || ||  d S )Nr:   )r      )r7   r   r   rF   r=   rG   )r?   r;   r@   rA   rB   argsr   r   r   test_chained_unpack_assign   s    z%TestUnpack.test_chained_unpack_assignc                 C   s   | j td d S rI   )rY   rJ   rK   r   r   r   test_chained_unpack_assign_npm   s    z)TestUnpack.test_chained_unpack_assign_npmc              	   C   s4   |  |  t|d|d}|j}|  W 5 Q R X d S Nr   r:   )assertRaisesr   r=   )r?   r@   r;   excrA   rB   r   r   r   check_unpack_error   s    zTestUnpack.check_unpack_errorc                 C   s   |  t |  t d S r
   )r^   r$   r&   rK   r   r   r   test_unpack_tuple_too_small   s    
z&TestUnpack.test_unpack_tuple_too_smallc                 C   s$   |  tttj |  tttj d S r
   )r^   r$   rJ   r   TypingErrorr&   rK   r   r   r   test_unpack_tuple_too_small_npm   s     z*TestUnpack.test_unpack_tuple_too_small_npmc                 C   s   |  t |  t d S r
   )r^   r%   r)   rK   r   r   r   test_unpack_tuple_too_large   s    
z&TestUnpack.test_unpack_tuple_too_largec                 C   s$   |  tttj |  tttj d S r
   )r^   r%   rJ   r   r`   r)   rK   r   r   r   test_unpack_tuple_too_large_npm   s     z*TestUnpack.test_unpack_tuple_too_large_npmc                 C   s   |  t d S r
   )r^   r   rK   r   r   r   test_unpack_range_too_small   s    z&TestUnpack.test_unpack_range_too_smallc                 C   s   |  tt d S r
   )r^   r   rJ   rK   r   r   r   test_unpack_range_too_small_npm   s    z*TestUnpack.test_unpack_range_too_small_npmc                 C   s   |  t d S r
   )r^   r    rK   r   r   r   test_unpack_range_too_large   s    z&TestUnpack.test_unpack_range_too_largec                 C   s   |  tt d S r
   )r^   r    rJ   rK   r   r   r   test_unpack_range_too_large_npm   s    z*TestUnpack.test_unpack_range_too_large_npmc                 C   sD   t ttjtjf|d}|j}| |ddd | |ddd d S )Nr:   r   rW   )rW   r   r   )r   rW   )r   r8   r   rF   r=   rG   )r?   r;   rA   rB   r   r   r   check_conditional_swap   s    z!TestUnpack.check_conditional_swapc                 C   s   |    d S r
   )rh   rK   r   r   r   test_conditional_swap   s    z TestUnpack.test_conditional_swapc                 C   s   |  t d S r
   )rh   rJ   rK   r   r   r   test_conditional_swap_npm   s    z$TestUnpack.test_conditional_swap_npmc                 C   sP   t dd tdD }t|}t}t||ftd}|j}| |||| d S )Nc                 s   s   | ]}t |d  V  qdS )r"   Nr.   ).0ir   r   r   	<genexpr>   s     z9TestUnpack.test_unpack_tuple_of_arrays.<locals>.<genexpr>r   r:   )tupler   r   r-   r   rJ   r=   rG   )r?   r1   Ztuptyr@   rA   rB   r   r   r   test_unpack_tuple_of_arrays   s    z&TestUnpack.test_unpack_tuple_of_arraysc                 C   s,   t }t|dtd}|j}| | |  d S r[   )r4   r   rJ   r=   rG   )r?   r@   rA   rB   r   r   r   test_unpack_nrt   s    zTestUnpack.test_unpack_nrtc              	   C   sD   t }| tj}t|tjftd W 5 Q R X | dt	|j
 d S )Nr:   zfailed to unpack int32)r-   r\   r   r`   r   r   rF   rJ   ZassertInstr	exception)r?   r@   Zraisesr   r   r   test_invalid_unpack   s    zTestUnpack.test_invalid_unpackN)!__name__
__module____qualname__rC   r<   rH   rL   rO   rP   rQ   rR   rS   rT   rU   rV   rY   rZ   
ValueErrorr^   r_   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   ro   rp   rs   r   r   r   r   r9   j   s8   
	r9   __main__)(numpyr/   ZunittestZnumba.core.compilerr   r   Z
numba.corer   r   Znumbar   Znumba.tests.supportr   r   r	   Zenable_pyobj_flagsZenable_pyobjectr<   Zforce_pyobjectrJ   Znrtr   r   r   r   r    r#   r$   r%   r&   r)   r*   r+   r-   r4   r7   r8   r9   rt   mainr   r   r   r   <module>   s>    
