
    ܙdt                     h   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 Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$ G d dee          Z%e&dk    r ej'                     dS dS )    N)compile_isolatedFlags)errorstypes)typeof)TestCaseMemoryLeakMixintagTc                     | \  }}}|||fS N )labcs       @lib/python3.11/site-packages/numba/tests/test_unpack_sequence.pyunpack_listr      s    GAq!q!9    c                 (    | j         \  }}}||z   |z   S r   shape)r   xyzs       r   unpack_shaper      s    gGAq!q519r   c                  8    t          d          \  } }}| |z   |z   S )N   ranger   r   r   s      r   unpack_ranger!      !    AhhGAq!q519r   c                  8    t          d          \  } }}| |z   |z   S )N   r   r    s      r   unpack_range_too_smallr%   "   r"   r   c                  8    t          d          \  } }}| |z   |z   S )N   r   r    s      r   unpack_range_too_larger(   '   r"   r   c                      d\  } }}| |z   |z   S )N   r$   r   r   r    s      r   unpack_tupler,   ,       GAq!q519r   c                      d\  } }}| |z   |z   S )N)r+   r$   r   r    s      r   unpack_tuple_too_smallr/   1   s    GAq!q519r   c                      d\  } }}| |z   |z   S )N)r+   r$   r   r'   r   r    s      r   unpack_tuple_too_larger1   6       GAq!q519r   c                      d\  } }}| |z   |z   S )N)r+   y              @r   r    s      r   $unpack_heterogeneous_tuple_too_smallr4   ;   r-   r   c                      d\  } }}| |z   |z   S )N)r+         @              @r'   r   r    s      r   $unpack_heterogeneous_tuple_too_larger8   @   s    GAq!q519r   c                      d\  } }}| |z   |z   S )N)r+   r6   r7   r   r    s      r   unpack_heterogeneous_tupler:   E   r2   r   c                  "    d\  } \  }}| |z   |z   S )N)r+   )r6   r7   r   r    s      r   !unpack_nested_heterogeneous_tupler<   J   s    IAv1q519r   c                     | \  }}||fS r   r   )seqr   r   s      r   unpack_arbitraryr?   O   s    DAqa4Kr   c                  l    t          j        d          } t          j        d          }|| f}|\  }}||fS )Nr+   r$   npzeros)r   r   tupalphabetas        r   
unpack_nrtrG   T   s8    
A
A
Q$CKE4$;r   c                 4    | |fx}\  }}|\  }}||z   |z   |z   S r   r   )r   r   r   r   r   des          r   chained_unpack_assign1rK   \   s/    QAAFQq519q=r   c                     | dk    r|| }} | |fS )Nr   r   )r   r   s     r   conditional_swaprM   c   s    1uu!1a4Kr   c                       e Zd Zd ZefdZd ZefdZd ZefdZ	d Z
efdZd	 Zefd
Zd ZefdZd ZeefdZd Zd Zd Zd Zd Zd Zd Zd ZefdZd Zd Zd Zd Zd Z dS )
TestUnpackc                     t           }t          |dt                    }|j        }g d}|                      ||           ||                     d S )Nr   flagsr*   )r   r   force_pyobj_flagsentry_pointassertEqual)selfpyfunccrcfuncr   s        r   test_unpack_listzTestUnpack.test_unpack_listl   sX    fb0ABBBIIq66!99-----r   c                 :   t           }t          |t          j        t          j        dd          g|          }|j        }t          j        d                              t          j                  }| 	                     ||           ||                     d S )Nr   C)dtypendimlayoutrQ   r*   r   )
r   r   r   Arrayint32rT   rB   rC   astypeassertPreciseEqual)rV   rR   rW   rX   rY   r   s         r   test_unpack_shapezTestUnpack.test_unpack_shapes   s    fu{=>?B(D (D (D 'E %*+ + + H9%%%,,RX66a&&))44444r   c                 <    |                      t                     d S NrQ   )rd   no_pyobj_flagsrV   s    r   test_unpack_shape_npmz TestUnpack.test_unpack_shape_npm}       ^44444r   c                 <    |                      t          |           d S r   )run_nullary_funcr!   rV   rR   s     r   test_unpack_rangezTestUnpack.test_unpack_range       lE22222r   c                 <    |                      t                     d S rf   )rn   rg   rh   s    r   test_unpack_range_npmz TestUnpack.test_unpack_range_npm   rj   r   c                 <    |                      t          |           d S r   )rl   r,   rm   s     r   test_unpack_tuplezTestUnpack.test_unpack_tuple   ro   r   c                 <    |                      t                     d S rf   )rs   rg   rh   s    r   test_unpack_tuple_npmz TestUnpack.test_unpack_tuple_npm   rj   r   c                 <    |                      t          |           d S r   )rl   r:   rm   s     r   test_unpack_heterogeneous_tuplez*TestUnpack.test_unpack_heterogeneous_tuple   s    8%@@@@@r   c                 <    |                      t                     d S rf   )rw   rg   rh   s    r   #test_unpack_heterogeneous_tuple_npmz.TestUnpack.test_unpack_heterogeneous_tuple_npm   s    ,,>,BBBBBr   c                 <    |                      t          |           d S r   )rl   r<   rm   s     r   &test_unpack_nested_heterogeneous_tuplez1TestUnpack.test_unpack_nested_heterogeneous_tuple   s    ?GGGGGr   c                 <    |                      t                     d S rf   )r{   rg   rh   s    r   *test_unpack_nested_heterogeneous_tuple_npmz5TestUnpack.test_unpack_nested_heterogeneous_tuple_npm   s    33.3IIIIIr   c                     t           }t          |t          j        t          j        g|          }|j        }d}|                      ||  ||            d S )NrQ   )r'      )rK   r   r   ra   rT   rc   )rV   rR   rW   rX   rY   argss         r   test_chained_unpack_assignz%TestUnpack.test_chained_unpack_assign   s_    'fu{EK&@$)+ + +tffdm<<<<<r   c                 <    |                      t                     d S rf   )r   rg   rh   s    r   test_chained_unpack_assign_npmz)TestUnpack.test_chained_unpack_assign_npm   s    ''n'=====r   c                     |                      |          5  t          |d|          }|j        } |             d d d            d S # 1 swxY w Y   d S Nr   rQ   )assertRaisesr   rT   )rV   rW   rR   excrX   rY   s         r   check_unpack_errorzTestUnpack.check_unpack_error   s    s## 	 	!&"E:::BNEEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   $AAAc                 n    |                      t                     |                      t                     d S r   )r   r/   r4   rh   s    r   test_unpack_tuple_too_smallz&TestUnpack.test_unpack_tuple_too_small   2     6777 DEEEEEr   c                     |                      t          t          t          j                   |                      t
          t          t          j                   d S r   )r   r/   rg   r   TypingErrorr4   rh   s    r   test_unpack_tuple_too_small_npmz*TestUnpack.test_unpack_tuple_too_small_npm   W     6 & 2	4 	4 	4 D .0B	D 	D 	D 	D 	Dr   c                 n    |                      t                     |                      t                     d S r   )r   r1   r8   rh   s    r   test_unpack_tuple_too_largez&TestUnpack.test_unpack_tuple_too_large   r   r   c                     |                      t          t          t          j                   |                      t
          t          t          j                   d S r   )r   r1   rg   r   r   r8   rh   s    r   test_unpack_tuple_too_large_npmz*TestUnpack.test_unpack_tuple_too_large_npm   r   r   c                 :    |                      t                     d S r   )r   r%   rh   s    r   test_unpack_range_too_smallz&TestUnpack.test_unpack_range_too_small        677777r   c                 F    |                      t          t                     d S r   )r   r%   rg   rh   s    r   test_unpack_range_too_small_npmz*TestUnpack.test_unpack_range_too_small_npm        6GGGGGr   c                 :    |                      t                     d S r   )r   r(   rh   s    r   test_unpack_range_too_largez&TestUnpack.test_unpack_range_too_large   r   r   c                 F    |                      t          t                     d S r   )r   r(   rg   rh   s    r   test_unpack_range_too_large_npmz*TestUnpack.test_unpack_range_too_large_npm   r   r   c                     t          t          t          j        t          j        f|          }|j        }|                      |dd          d           |                      |dd          d           d S )NrQ   r'   r   )r   r'   r   )r   r   )r   rM   r   ra   rT   rc   )rV   rR   rX   rY   s       r   check_conditional_swapz!TestUnpack.check_conditional_swap   st    .ek0J$)+ + +aV444aV44444r   c                 .    |                                   d S r   )r   rh   s    r   test_conditional_swapz TestUnpack.test_conditional_swap   s    ##%%%%%r   c                 :    |                      t                     d S r   )r   rg   rh   s    r   test_conditional_swap_npmz$TestUnpack.test_conditional_swap_npm   s    ##N33333r   c                    t          d t          d          D                       }t          |          }t          }t	          ||ft
                    }|j        }|                      ||           ||                     d S )Nc              3   D   K   | ]}t          j        |d z             V  dS )r+   NrA   ).0is     r   	<genexpr>z9TestUnpack.test_unpack_tuple_of_arrays.<locals>.<genexpr>   s.      66BHQUOO666666r   r$   rQ   )tupler   r   r?   r   rg   rT   rc   )rV   rD   tuptyrW   rX   rY   s         r   test_unpack_tuple_of_arraysz&TestUnpack.test_unpack_tuple_of_arrays   s    66U1XX66666s!fuh$24 4 4c

FF3KK88888r   c                     t           }t          |dt                    }|j        }|                      |             |                       d S r   )rG   r   rg   rT   rc   )rV   rW   rX   rY   s       r   test_unpack_nrtzTestUnpack.test_unpack_nrt   sJ    fb???22222r   c                    t           }|                     t          j                  5 }t	          |t
          j        ft                     d d d            n# 1 swxY w Y   |                     dt          |j
                             d S )NrQ   zfailed to unpack int32)r?   r   r   r   r   r   ra   rg   assertInstr	exception)rV   rW   raisess      r   test_invalid_unpackzTestUnpack.test_invalid_unpack   s    !v122 	KfVek^>JJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K.F4D0E0EFFFFFs   #AAAN)!__name__
__module____qualname__rZ   rS   rd   ri   rn   rq   rs   ru   rw   ry   r{   r}   r   r   
ValueErrorr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   rO   j   s3       . . . '8 5 5 5 55 5 5 '8 3 3 3 35 5 5 '8 3 3 3 35 5 5 5F A A A AC C C <M H H H HJ J J 0A = = = => > > 0Aj    F F FD D DF F FD D D8 8 8H H H8 8 8H H H ,= 5 5 5 5& & &4 4 49 9 93 3 3G G G G Gr   rO   __main__)(numpyrB   unittestnumba.core.compilerr   r   
numba.corer   r   numbar   numba.tests.supportr   r	   r
   enable_pyobj_flagsenable_pyobjectrS   force_pyobjectrg   nrtr   r   r!   r%   r(   r,   r/   r1   r4   r8   r:   r<   r?   rG   rK   rM   rO   r   mainr   r   r   <module>r      s
        7 7 7 7 7 7 7 7 $ $ $ $ $ $ $ $       > > > > > > > > > >UWW %)  "EGG #'      
  
  
  
  
  
  
  
  
  
  
  
  
      G G G G G( G G GD zHMOOOOO r   