o
    iY                     @   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 d dl
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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re#  dS dS ).    N)jitnjit)errorstypes)typeof)TestCaseMemoryLeakMixin)no_pyobj_flags)force_pyobj_flagsforceobjTnopythonc                 C   s   | \}}}|||fS N )labcr   r   ^/home/ubuntu/transcripts/venv/lib/python3.10/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      r   c                  C      t d\} }}| | | S )N   ranger   r   r   r   r   r   unpack_range      r!   c                  C   r   )N   r   r    r   r   r   unpack_range_too_small   r"   r$   c                  C   r   )N   r   r    r   r   r   unpack_range_too_large#   r"   r&   c                  C      d\} }}| | | S )N   r#   r   r   r    r   r   r   unpack_tuple(      
r*   c                  C   r'   )N)r)   r#   r   r    r   r   r   unpack_tuple_too_small-   r+   r,   c                  C   r'   )N)r)   r#   r   r%   r   r    r   r   r   unpack_tuple_too_large2   r+   r-   c                  C   r'   )N)r)   y              @r   r    r   r   r   $unpack_heterogeneous_tuple_too_small7   r+   r.   c                  C   r'   )N)r)         @              @r%   r   r    r   r   r   $unpack_heterogeneous_tuple_too_large<   r+   r1   c                  C   r'   )N)r)   r/   r0   r   r    r   r   r   unpack_heterogeneous_tupleA   r+   r2   c                  C   s   d\} \}}| | | S )N)r)   )r/   r0   r   r    r   r   r   !unpack_nested_heterogeneous_tupleF   r   r3   c                 C   s   | \}}||fS r   r   )seqr   r   r   r   r   unpack_arbitraryK   s   r5   c                  C   s,   t d} t d}|| f}|\}}||fS )Nr)   r#   npzeros)r   r   tupalphabetar   r   r   
unpack_nrtP   s
   

r<   c                 C   s(   | |f }\}}|\}}|| | | S r   r   )r   r   r   r   r   der   r   r   chained_unpack_assign1X   s   r?   c                 C   s   | dkr	|| } }| |fS )Nr   r   )r   r   r   r   r   conditional_swap_   s   
r@   c                   @   s
  e Z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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/d0 Zefd1d2Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=S )>
TestUnpackc                 C   s   t |}| | |  d S r   )r   assertPreciseEqualselfpyfunccfuncr   r   r   check_nullary_npmh   s   zTestUnpack.check_nullary_npmc                 C   s"   t dd|}| | |  d S )NTr   )r   rB   rC   r   r   r   check_nullary_objmodel   s   z TestUnpack.check_nullary_objmodec                 C   s2   t }tdd|}g d}| |||| d S )NTrH   r(   )r   r   assertEqual)rD   rE   rF   r   r   r   r   test_unpack_listp   s   zTestUnpack.test_unpack_listc                 C   sP   t }ttjtjdddfdd|}tjddtj}| |||| d S )Nr   CdtypendimlayoutTrH   r(   r   )	r   r   r   Arrayint32r7   r8   astyperB   rD   rE   rF   r   r   r   r   test_unpack_shapev   s   zTestUnpack.test_unpack_shapec                 C   sL   t }ttjtjdddf|}tjddtj}| |||| d S )Nr   rL   rM   r(   r   )	r   r   r   rQ   rR   r7   r8   rS   rB   rT   r   r   r   test_unpack_shape_npm}   s   z TestUnpack.test_unpack_shape_npmc                 C      |  t d S r   )rI   r!   rD   r   r   r   test_unpack_range      zTestUnpack.test_unpack_rangec                 C   rW   r   )rG   r!   rX   r   r   r   test_unpack_range_npm   rZ   z TestUnpack.test_unpack_range_npmc                 C   rW   r   )rI   r*   rX   r   r   r   test_unpack_tuple   rZ   zTestUnpack.test_unpack_tuplec                 C   rW   r   )rG   r*   rX   r   r   r   test_unpack_tuple_npm   rZ   z TestUnpack.test_unpack_tuple_npmc                 C   rW   r   )rI   r2   rX   r   r   r   test_unpack_heterogeneous_tuple   rZ   z*TestUnpack.test_unpack_heterogeneous_tuplec                 C   rW   r   )rG   r2   rX   r   r   r   #test_unpack_heterogeneous_tuple_npm   rZ   z.TestUnpack.test_unpack_heterogeneous_tuple_npmc                 C   rW   r   )rI   r3   rX   r   r   r   &test_unpack_nested_heterogeneous_tuple   rZ   z1TestUnpack.test_unpack_nested_heterogeneous_tuplec                 C   rW   r   )rG   r3   rX   r   r   r   *test_unpack_nested_heterogeneous_tuple_npm   rZ   z5TestUnpack.test_unpack_nested_heterogeneous_tuple_npmc                 C   s<   t }ttjtjffi ||}d}| || ||  d S )N)r%      )r?   r   r   rR   rB   )rD   flagsrE   rF   argsr   r   r   test_chained_unpack_assign   s   z%TestUnpack.test_chained_unpack_assignc                 C   s   | j td d S )N)rc   )re   r	   rX   r   r   r   test_chained_unpack_assign_npm      z)TestUnpack.test_chained_unpack_assign_npmc                 C   sH   |  | tdi ||}|  W d    d S 1 sw   Y  d S )Nr   )r   )assertRaisesr   )rD   rE   rc   excrF   r   r   r   check_unpack_error   s   "zTestUnpack.check_unpack_errorc                 C      |  t |  t d S r   )rj   r,   r.   rX   r   r   r   test_unpack_tuple_too_small      
z&TestUnpack.test_unpack_tuple_too_smallc                 C   $   |  tttj |  tttj d S r   )rj   r,   r	   r   TypingErrorr.   rX   r   r   r   test_unpack_tuple_too_small_npm      z*TestUnpack.test_unpack_tuple_too_small_npmc                 C   rk   r   )rj   r-   r1   rX   r   r   r   test_unpack_tuple_too_large   rm   z&TestUnpack.test_unpack_tuple_too_largec                 C   rn   r   )rj   r-   r	   r   ro   r1   rX   r   r   r   test_unpack_tuple_too_large_npm   rq   z*TestUnpack.test_unpack_tuple_too_large_npmc                 C   rW   r   )rj   r$   rX   r   r   r   test_unpack_range_too_small   rZ   z&TestUnpack.test_unpack_range_too_smallc                 C      |  tt d S r   )rj   r$   r	   rX   r   r   r   test_unpack_range_too_small_npm   rg   z*TestUnpack.test_unpack_range_too_small_npmc                 C   rW   r   )rj   r&   rX   r   r   r   test_unpack_range_too_large   rZ   z&TestUnpack.test_unpack_range_too_largec                 C   ru   r   )rj   r&   r	   rX   r   r   r   test_unpack_range_too_large_npm   rg   z*TestUnpack.test_unpack_range_too_large_npmc                 C   sD   t tjtjffi |t}| |ddd | |ddd d S )Nr%   rb   )rb   r%   r   )r   rb   )r   r   rR   r@   rB   )rD   rc   rF   r   r   r   check_conditional_swap   s   z!TestUnpack.check_conditional_swapc                 C   s   |    d S r   )ry   rX   r   r   r   test_conditional_swap   s   z TestUnpack.test_conditional_swapc                 C   rW   r   )ry   r	   rX   r   r   r   test_conditional_swap_npm   rZ   z$TestUnpack.test_conditional_swap_npmc                 C   sH   t dd tdD }t|}t}t|f|}| |||| d S )Nc                 s   s    | ]
}t |d  V  qdS )r)   Nr6   ).0ir   r   r   	<genexpr>   s    z9TestUnpack.test_unpack_tuple_of_arrays.<locals>.<genexpr>r#   )tupler   r   r5   r   rB   )rD   r9   tuptyrE   rF   r   r   r   test_unpack_tuple_of_arrays   s
   z&TestUnpack.test_unpack_tuple_of_arraysc                 C   s$   t }td|}| | |  d S )Nr   )r<   r   rB   rC   r   r   r   test_unpack_nrt   s   zTestUnpack.test_unpack_nrtc                 C   sV   t }| tj}ttjf| W d    n1 sw   Y  | dt|j	 d S )Nzfailed to unpack int32)
r5   rh   r   ro   r   r   rR   assertInstr	exception)rD   rE   raisesr   r   r   test_invalid_unpack   s
   zTestUnpack.test_invalid_unpackN)#__name__
__module____qualname__rG   rI   rK   rU   rV   rY   r[   r\   r]   r^   r_   r`   ra   r
   re   rf   
ValueErrorrj   rl   rp   rr   rs   rt   rv   rw   rx   ry   rz   r{   r   r   r   r   r   r   r   rA   f   sB    
rA   __main__)$numpyr7   unittestnumbar   r   
numba.corer   r   r   numba.tests.supportr   r   r	   nullary_no_pyobj_flagsr
   nullary_force_pyobj_flagsr   r   r!   r$   r&   r*   r,   r-   r.   r1   r2   r3   r5   r<   r?   r@   rA   r   mainr   r   r   r   <module>   s>     