
    ܙd`                        d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZmZmZ d dlmZmZmZ d dlZ e j        dd          Z e j        dd	          Z e j        d
d	          Z e j        d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'd Z(d Z)d Z*d Z+d  Z,d! Z-d" Z.d# Z/d$ Z0d% Z1 G d& d'ej                  Z2 G d( d)ej                  Z3 G d* d+e          Z4 G d, d-e          Z5 G d. d/e          Z6 G d0 d1ee          Z7 G d2 d3ee          Z8 G d4 d5ee          Z9 G d6 d7e          Z: G d8 d9e          Z; G d: d;e          Z<e=d<k    r ej>                     dS dS )=    N)compile_isolated)njitjittypeof	literally)typeserrorsutils)TestCaseMemoryLeakMixintagRectwidthheightPoint)xyzPoint2Empty c                 
    | |fS Nr   abs     7lib/python3.11/site-packages/numba/tests/test_tuples.pytuple_return_usecaser      s    a4K    c                     | \  }}|S r   r   tupr   r   s      r   tuple_firstr$          DAqHr    c                     | \  }}|S r   r   r"   s      r   tuple_secondr'      r%   r    c                     | |         S r   r   r#   idxs     r   tuple_indexr+       s    s8Or    c                     | d         S )Nr   r#   s    r   tuple_index_staticr/   #   s    r7Nr    c                     | dd         S )N   r   r.   s    r   tuple_slice2r3   '   s    qt9r    c                     | dd d         S )Nr1      r   r.   s    r   tuple_slice3r6   *   s    qt!t9r    c                      t          |           S r   lenr.   s    r   len_usecaser:   -   s    s88Or    c                     | |z   S r   r   r   s     r   add_usecaser<   0   s    q5Lr    c                     | |k    S r   r   r   s     r   
eq_usecaser>   3       6Mr    c                     | |k    S r   r   r   s     r   
ne_usecaserA   6   r?   r    c                     | |k    S r   r   r   s     r   
gt_usecaserC   9       q5Lr    c                     | |k    S r   r   r   s     r   
ge_usecaserF   <   r?   r    c                     | |k     S r   r   r   s     r   
lt_usecaserH   ?   rD   r    c                     | |k    S r   r   r   s     r   
le_usecaserJ   B   r?   r    c                 
    | |v S r   r   r   s     r   
in_usecaserL   E   s    6Mr    c                 ,    t          |           | rdndfS )N   r5   )boolr.   s    r   bool_usecaserP   H   s    99CqqQ''r    c                 *    | j         | j        | j        fS r   r   r   r   r.   s    r   getattr_usecaserS   K   s    5#%r    c                 $    t          | ||          S r   r   r   r   cs      r   
make_pointrX   N   s    Aq>>r    c                 &    t          |||           S )NrR   rU   rV   s      r   make_point_kwsrZ   Q   s    1Qr    c                     t          t          t          |                     t          j        | dz                       }t          |t          |j                  t          |j                            }|S Nr1   )	r   listrangenpzerosr   r9   r   r   )nrps      r   make_point_nrtrd   T   sO    T%((^^RXa!e__--AaQWs18}}--AHr    c                 &     t          |           | S r   )type)r#   argss     r   type_usecaserh   Z   s    499dr    c                     | S r   r   r.   s    r   identityrj   ]   s    Jr    c                 ,    |                      |          S r   )index)r#   values     r   index_method_usecasern   `   s    99Ur    c                  p    g g g df\  } }}}|                      d           |                     d           d S )Ng        r1   )append)r   r   rW   ds       r   tuple_unpack_static_getitem_errrr   c   s:    RSJAq!QHHQKKKHHQKKK
Fr    c                       e Zd Zd ZdS )TestTupleLengthErrorc                 6   t           d             }|                     t          j                  5 }t	          t          d                    } ||           d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nc                      t          |           S r   r8   r.   s    r   eattuplez>TestTupleLengthError.test_tuple_length_error.<locals>.eattuplep   s    s88Or    i  z,Tuple 'tup' length must be smaller than 1000)	r   assertRaisesr	   UnsupportedErrortupler^   assertInstr	exception)selfrw   raisesr#   expecteds        r   test_tuple_length_errorz,TestTupleLengthError.test_tuple_length_errorm   s     
	 	 
	 v677 	6d$$CHSMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 BhF$4 5 566666s   (A$$A(+A(N)__name__
__module____qualname__r   r   r    r   rt   rt   k   s#        7 7 7 7 7r    rt   c                       e Zd ZdZd Zd ZdS )TestTupleTypeNotIterablezA
    issue 4369
    raise an error if 'type' is not iterable
    c                    |                      t          j                  5 }t          j        t          j        d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nrc    Argument 'types' is not iterable)	rx   r	   TypingErrorr   
NamedTupleuint32r{   r|   r}   r~   r   s     r   test_namedtuple_types_exceptionz8TestTupleTypeNotIterable.test_namedtuple_types_exception   s    v122 	0fU\3///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0. !!	
 	
 	
 	
 	
s    AAAc                     |                      t          j                  5 }t          j        t          j                   d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr   )	rx   r	   r   r   Tupler   r{   r|   r}   r   s     r   test_tuple_types_exceptionz3TestTupleTypeNotIterable.test_tuple_types_exception   s    v122 	(fK'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(. !!	
 	
 	
 	
 	
s   AAAN)r   r   r   __doc__r   r   r   r    r   r   r   {   s<         
 
 

 
 
 
 
r    r   c                        e Zd Zd Zd Zd ZdS )TestTupleReturnc                 ^   t          j        t           j        dd          }t          t          ||f          }t          j        dd          x}}|                    ||          \  }}|                     ||           |                     ||           ~~|                     ||           d S )Nr1   C   float64)dtype)	r   Arrayr   r   r   r_   arangeentry_pointassertPreciseEqual)r~   arytycresr   r   rarbs          r   test_array_tuplez TestTupleReturn.test_array_tuple   s    EM1c22 4uenEE	!9----A!!!Q''BA&&&A&&&qB'''''r    c                     t           j        }t          t          ||f          }dx}}|                    ||          \  }}|                     ||           |                     ||           d S r\   )r   float32r   r   r   assertEqual)r~   scalartyr   r   r   r   r   s          r   test_scalar_tuplez!TestTupleReturn.test_scalar_tuple   sr    = 4x6JKK	A!!!Q''BQQr    c                 Z   g }g }|                     t          j        t          j        f           |                     d           |                     t          j        t          j        f           |                     d           |                     t          j        t          j        f           |                     d           t          ||          D ]U\  \  }}\  }}t          t          ||f          }|	                    ||          \  }}	| 
                    ||	f||f           Vd S )Nr1   r5   )g      ?g      ?)i  g      ?)rp   r   int32int64r   r   zipr   r   r   r   )
r~   alltypes	allvaluestatbr   r   r   r   r   s
             r   test_hetero_tuplez!TestTupleReturn.test_hetero_tuple   s   	ek2333   6777&&&em4555$$$ #Hi 8 8 	6 	6HRfq!#$82r(CCD%%a++FB##RHq!f5555	6 	6r    N)r   r   r   r   r   r   r   r    r   r   r      sA        ( ( (     6 6 6 6 6r    r   c                        e Zd Zd Zd Zd ZdS )TestTuplePassingc                 @   t          j        t           j        d          }t          t          |f          }t          t
          |f          }|                     |                    d          d           |                     |                    d          d           d S )Nr5      r   r   r   )r   UniTupler   r   r$   r'   r   r   r~   
tuple_typecr_first	cr_seconds       r   test_unituplezTestTuplePassing.test_unituple   s    ^EK33
#K*??$\J=AA	 4 4V < <a@@@	 5 5f = =qAAAAAr    c                 V   t          j        t           j        t           j        f          }t	          t
          |f          }t	          t          |f          }|                     |                    d          d           |                     |                    d          d           d S )N)                  ?r   r   )	r   r   r   r   r   r$   r'   r   r   r   s       r   r   z"TestTuplePassing.test_hetero_tuple   s    [%+u}!=>>
#K*??$\J=AA	 4 4\ B BEJJJ	 5 5l C CSIIIIIr    c                 N   t          j        t           j        d          }t          t          |f          }|                     t                    5 }|                    d           d d d            n# 1 swxY w Y   |                     t          |j
                  d           d S )Nr5   r   r      z8size mismatch for tuple, expected 2 element(s) but got 3)r   r   r   r   r$   rx   
ValueErrorr   r   r|   r}   )r~   r   crr   s       r   test_size_mismatchz#TestTuplePassing.test_size_mismatch   s    ^EK33
kJ=99z** 	&fNN9%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&V-..S	U 	U 	U 	U 	Us   A22A69A6N)r   r   r   r   r   r   r   r    r   r   r      sL        B B BJ J JU U U U Ur    r   c                   n    e 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d Zd ZdS )TestOperationsc                    t           }t          |t          j        t          j        t          j        f          g          }|                     |                    d          d           t          |t          j        t          j        d          g          }|                     |                    d          d           d S )Nr   r5   rN   r   )	r:   r   r   r   r   r   r   r   r   )r~   pyfuncr   s      r   test_lenzTestOperations.test_len   s    f${EK+GHHIK Kv 6 6:::f$~ek1==>@ @y 9 91=====r    c                     d }t          |          }d}t          t          |                    D ](}|                      |||          ||                    )d S )Nc                 0    t          |          }| |         S r   )r   r)   s     r   r   z1TestOperations.test_index_literal.<locals>.pyfunc   s    C..Cs8Or    )r   g@sss)r   r^   r9   r   )r~   r   cfuncr#   is        r   test_index_literalz!TestOperations.test_index_literal   so    	 	 	 Vs3xx 	; 	;A##EE#qMM3q6::::	; 	;r    c           	      @	   t           }t          |t          j        t          j        d          t          j        g          }d}t          t          |                    D ]2}|                     |                    ||          ||                    3t          t          |          dz             D ]4}|                     |                    ||           ||                     5| 	                    t                    5 }|                    |t          |                     d d d            n# 1 swxY w Y   |                     dt          |j                             | 	                    t                    5 }|                    |t          |          dz               d d d            n# 1 swxY w Y   |                     dt          |j                             t          |t          j        t          j        d          t          j        g          }| 	                    t                    5 }|                    dd           d d d            n# 1 swxY w Y   |                     dt          |j                             t          |t          j        t          j        d          t          j        g          }t          t          |                    D ]D}|                     |                    |t          j        |                    ||                    Et          }t          j        t          j        d          t          j        t          j        t          j        t          j        t          j        f          fD ]G}t          ||f          }d}|                     |                    |           ||                     Ht          j        t          j        d          }|                                 5  t          ||f          }d d d            n# 1 swxY w Y   t&          }|                                 5 }t          |d          }d d d            n# 1 swxY w Y   d	}|                     |t          |j                             d S )
NrN   )r   rN   r   r1   ztuple index out of ranger   r   r   )r   rN   *   r   zUCannot infer the type of variable 'c', have imprecise type: list(undefined)<iv=None>.)r+   r   r   r   r   r^   r9   r   r   rx   
IndexErrorr   r|   r}   uintpr/   r   r   assertTypingErrorrr   r{   )r~   r   r   r#   r   r   typmsgs           r   
test_indexzTestOperations.test_index   s#   f$~ek1==u{KM Ms3xx 	D 	DA##BNN3$:$:CFCCCC s3xx!|$$ 	F 	FA##BNN3$;$;S!WEEEE z** 	*fNN3C)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*3S9I5J5JKKKz** 	1fNN3#c((Q,000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	13S9I5J5JKKK f$~ek1==u{KM Mz** 	"fNN2q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"3S9I5J5JKKK f$~ek1==u{KM Ms3xx 	Q 	QA##BNN3A$G$GQPPPP $N5;22Kek5; TUUW 	F 	FC!&3&11BC##BNN3$7$7EEEEnU[!,,##%% 	2 	2!&3&11B	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 1##%% 	.!&"--B	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.+c3v/0011111sZ    $D00D47D4=(F11F58F57II!IP&&P*-P*Q))Q-0Q-c                    t           }t          |t          j        t          j        t          j        d          g          }d}t          d          D ]6}|                     |                    ||           |||                     7t          |t          j        t          j        g           g          }|                     |                    dd           |dd                     d S )NrN   )r   r1   r   r   r1   r   )	rL   r   r   r   r   r^   r   r   r   )r~   r   r   r#   r   s        r   test_inzTestOperations.test_in  s    f${EN5;,J,JKM Mq 	L 	LA##BNN1c$:$:FF1cNNKKKK fu{EKOO&DEEq" 5 5vva}}EEEEEr    c           	         d}t          |t          j        t          j        d          g          }|                     |                    |           ||                     t          |t          j        t          j        t          j        t          j        t          j        f          g          }|                     |                    |           ||                     d S )N)r   r   r      r   )r   r   r   r   r   r   r   r   )r~   r   r#   r   s       r   check_slicezTestOperations.check_slice)  s    f$~ek1==>@ @s 3 3VVC[[AAA[%+u{EKMNNOQ Q 	s 3 3VVC[[AAAAAr    c                 :    |                      t                     d S r   )r   r3   r~   s    r   test_slice2zTestOperations.test_slice23      &&&&&r    c                 :    |                      t                     d S r   )r   r6   r   s    r   test_slice3zTestOperations.test_slice36  r   r    c                    t           }t          |t          j        t          j        t          j        f          g          }d}|                      |j        |  ||            t          |t          j        t          j        d          g          }d}|                      |j        |  ||            t          |t          j        d          g          }|                     |                    d           |d                     d S )N)r   rN   )r   r   )	rP   r   r   r   r   r   r   r   r   )r~   r   r   rg   s       r   	test_boolzTestOperations.test_bool9  s    f${EK+EFFGI I 5vvt}EEEf$~ek1==>@ @ 5vvt}EEEf${2/1 1r 2 2FF2JJ?????r    c                    t           }t          j        d          dft          j        t          j        d          dft          j        t          j        d          dft          j        t          j        t          j        f          dfg}t          j        ||          D ]Y\  \  }}\  }}t          |||f          } |||          }|
                    ||          }	|                     |	|||f           Zd S )Nr   r   r1   )r   )rN   g      @)r   )r<   r   r   r   r   r   r   	itertoolsproductr   r   r   )
r~   r   samplesr   r   r   r   r   r   gots
             r   test_addzTestOperations.test_addG  s    KOOR(N5;22B7N5;22E:Kem <==xH
 !* 1'7 C C 	A 	AGRWb!!&2r(33Bva||H..A&&C##CBx#@@@@		A 	Ar    c                 .     fd}t          j        t           j        t           j        f          t          j        t           j        d          g}t          j        ||          D ]0\  }}t          |||f          }|j	        }dD ]} ||||           1t          j        t           j        t           j        f          t          j        t           j        d          g}t          |t          |                    }|j	        }dD ]} ||||           d S )Nc                 H                          ||  | | d|           d S Nzmismatch for arguments assertIsr   r   rg   r~   s      r   eqz(TestOperations._test_compare.<locals>.eqU  B    MM%%,9=?A A A A Ar    r5   )r   r   )r   r   r   )r   r   )r   )r   r   rN   )r   r   )r   )r   r   r   )r   )r   r   r   )r   r   r   r   r   r   r   r   r   r   rz   )	r~   r   r   argtypesr   r   r   r   rg   s	   `        r   _test_comparezTestOperations._test_compareT  s:   	A 	A 	A 	A 	A
 Kem <==N5;224'(;; 	( 	(FB!&2r(33BNE+ ( ( 65$''''	( Kem <==N5;224feHoo66* 	$ 	$D Bvud####	$ 	$r    c                 :    |                      t                     d S r   r   r>   r   s    r   test_eqzTestOperations.test_eqn      :&&&&&r    c                 :    |                      t                     d S r   r   rA   r   s    r   test_nezTestOperations.test_neq  r   r    c                 :    |                      t                     d S r   r   rC   r   s    r   test_gtzTestOperations.test_gtt  r   r    c                 :    |                      t                     d S r   r   rF   r   s    r   test_gezTestOperations.test_gew  r   r    c                 :    |                      t                     d S r   r   rH   r   s    r   test_ltzTestOperations.test_ltz  r   r    c                 :    |                      t                     d S r   r   rJ   r   s    r   test_lezTestOperations.test_le}  r   r    N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r   r    r   r   r      s       > > >	; 	; 	;32 32 32j
F 
F 
FB B B' ' '' ' '@ @ @A A A$ $ $4' ' '' ' '' ' '' ' '' ' '' ' ' ' 'r    r   c                   t    e 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d Zd Zd ZdS )TestNamedTuplec                 v      fd} |t          dd                      |t          dd                     d S )Nc                     t           t          fD ]C} t          d          |          }                     ||            ||                      Dd S NTnopython)r$   r'   r   r   rc   r   r   r~   s      r   checkz)TestNamedTuple.test_unpack.<locals>.check  sd    %|3 = =*T***622''a&&))<<<<= =r    r   r         @r   r~   r  s   ` r   test_unpackzTestNamedTuple.test_unpack  sT    	= 	= 	= 	= 	= 	d1ajjd1cllr    c                       fd} |t          dd                      |t          ddd                      |t          dd                      |t          ddd                     d S )Nc                     t           } t          d          |          }                     ||            ||                      d S r  )r:   r   r   r  s      r   r  z&TestNamedTuple.test_len.<locals>.check  sN     F&C&&&v..E##EE!HHffQii88888r    r   r   r   r                @)r   r   r  s   ` r   r   zTestNamedTuple.test_len  s    	9 	9 	9 	9 	9 	d1ajjeAq!nnd1clleAsB     r    c           	         t           } t          d          |          }t          ddd          }t          t	          |                    D ],}|                      |||           |||                     -t          t	          |                    D ]>}|                      ||t          j        |                     |||                     ?d S )NTr  r   r   r   )r+   r   r   r^   r9   r   r   r   )r~   r   r   rc   r   s        r   r   zTestNamedTuple.test_index  s    "T"""6**!QNNs1vv 	? 	?A##EE!QKK1>>>> s1vv 	L 	LA##EE!U[^^$<$<ffQllKKKK	L 	Lr    c                       fd} |t          dd                      |t          dd                      |t                                 d S )Nc                     t           } t          d          |          }                     ||            ||                      d S r  )rP   r   r   r  s      r   r  z'TestNamedTuple.test_bool.<locals>.check  sN    !F&C&&&v..E##EE!HHffQii88888r    r   r   r  )r   r   r  s   ` r   r   zTestNamedTuple.test_bool  sc    	9 	9 	9 	9 	9 	d1ajjd1clleggr    c           	            fd} t          d          |          }dD ]"\  }} |||t          | t          | f           #dD ]"\  }} |||t          | t          | f           #d S )Nc                 H                          ||  | | d|           d S r   r   r   s      r   r   z(TestNamedTuple._test_compare.<locals>.eq  r   r    Tr  r   r   )r   r   r   )r~   r   r   r   r   r   s   `     r   r   zTestNamedTuple._test_compare  s    	A 	A 	A 	A 	A #T"""6**' 	4 	4DAq BvutQxq23333* 	5 	5DAq BvutQx34444	5 	5r    c                 :    |                      t                     d S r   r   r   s    r   r   zTestNamedTuple.test_eq  r   r    c                 :    |                      t                     d S r   r   r   s    r   r   zTestNamedTuple.test_ne  r   r    c                 :    |                      t                     d S r   r   r   s    r   r  zTestNamedTuple.test_gt  r   r    c                 :    |                      t                     d S r   r  r   s    r   r  zTestNamedTuple.test_ge  r   r    c                 :    |                      t                     d S r   r  r   s    r   r  zTestNamedTuple.test_lt  r   r    c                 :    |                      t                     d S r   r	  r   s    r   r
  zTestNamedTuple.test_le  r   r    c                     t           } t          d          |          }dD ]3}t          | }|                      ||           ||                     4d S NTr  )r   r   r  r  )rS   r   r   r   )r~   r   r   rg   rc   s        r   test_getattrzTestNamedTuple.test_getattr  sl     "T"""6**+ 	9 	9DtA##EE!HHffQii8888	9 	9r    c                 R      fd} |t                       |t                     d S )Nc                      t          d          |           }dD ]R} | | } || }                    t          |          t          |                                         ||           Sd S r'  )r   r   rf   r   )r   r   rg   r   r   r~   s        r   r  z,TestNamedTuple.test_construct.<locals>.check  s    &C&&&v..E/ 7 7!64=eTld3iih888''X6666	7 7r    )rX   rZ   r  s   ` r   test_constructzTestNamedTuple.test_construct  sD    	7 	7 	7 	7 	7 	jnr    c                 F   t           } t          d          |          }ddg}t          j        ||          D ]f\  }}t	          | } ||g|R  } ||g|R  }|                     t          |          t          |                     |                     ||           gd S )NTr  r   r(  )rh   r   r   r   r   r   rf   r   )	r~   r   r   
arg_tuplestup_argsrg   r#   r   r   s	            r   	test_typezTestNamedTuple.test_type  s    "T"""6**.
'/
JGG 	3 	3NHd"Cvc)D)))H%#d###CMM$s))T(^^444##C2222	3 	3r    c                 4   t          d          d             t          d          fd            } |dd          }|                     |t          dd                      |dd          }|                     |t          dd	                     d S )
NTr  c                 "    t          | d          S )Nr  )rm   s    r   Data1z6TestNamedTuple.test_literal_unification.<locals>.Data1  s    t$$$r    c                 L    |dk    r |           }nt          | |          }|S )Nr   r  )r   jresultr4  s      r   callz5TestNamedTuple.test_literal_unification.<locals>.call   s1    Avv q aMr    {   i)  r   r   r3  r   r   r   )r~   r8  rb   r4  s      @r   test_literal_unificationz'TestNamedTuple.test_literal_unification  s    	d				% 	% 
		% 
d					 		 		 		 
			 DdOODs4888999DaLLDs488899999r    c                     t          d          d             } |            }|                     |t          dd                     d S )NTr  c                  "    t          dd          S )N
   
somestringr  r   r    r   fooz7TestNamedTuple.test_string_literal_in_ctor.<locals>.foo  s    L)))r    r>  r?  r   r:  )r~   r@  rb   s      r   test_string_literal_in_ctorz*TestNamedTuple.test_string_literal_in_ctor  s_     
d				* 	* 
		* CEEDr,???@@@@@r    c                 <   t          d          d             }d} ||          }|                     ||           t          ddd          } ||          }|                     ||           |                     t          |j                  d           |                     |j        d         j        d         t          |                     |                     |j        d         j        d         t          |                     t          ddd          } ||          }|                     ||           |                     t          |j                  d           |                     |j        d         j        d         t          |                     d S )	NTr  c                     | S r   r   )r   s    r   r@  z4TestNamedTuple.test_dispatcher_mistreat.<locals>.foo  s    Hr    r1   r5   rN   r1   r5   rN   r   )r   r   r   r9   nopython_signaturesrg   r   r   )r~   r@  in1out1in2out2in3out3s           r   test_dispatcher_mistreatz'TestNamedTuple.test_dispatcher_mistreat  s   	d				 	 
		 s3xxd###Aq!nns3xxd### 	S455q999038;VC[[III038;VC[[III Q1oos3xxd###S455q999038;VC[[IIIIIr    N)r   r   r   r  r   r   r   r   r   r   r  r  r  r
  r)  r,  r0  r;  rA  rL  r   r    r   r  r    s       	 	 	! ! !
L 
L 
L
 
 
5 5 5(' ' '' ' '' ' '' ' '' ' '' ' '9 9 9
 
 
3 3 3: : :.A A AJ J J J Jr    r  c                       e Zd Zd ZdS )TestTupleNRTc                     d } t          d          |          }d} ||          \  }} ||          \  }}t          j                            ||           |                     ||           d S )Nc                 8    t          j        d          }|f| fz   S )NrN   )r_   r   )r   r   s     r   r   z+TestTupleNRT.test_tuple_add.<locals>.pyfunc8  s    	!A41$;r    Tr  r9  )r   r_   testingassert_equalr   )r~   r   r   r   expect_aexpect_xgot_agot_xs           r   test_tuple_addzTestTupleNRT.test_tuple_add7  s    	 	 	 #T"""6**#VAYY(uQxxu

x000)))))r    N)r   r   r   rW  r   r    r   rN  rN  6  s#        
* 
* 
* 
* 
*r    rN  c                       e Zd Zd ZdS )TestNamedTupleNRTc                    t           } t          d          |          }dD ]^} ||          } ||          }|                     t          |          t          |                     |                     ||           _d S )NTr  )rN   r   )rd   r   r   rf   r   )r~   r   r   argr   r   s         r   test_returnzTestNamedTupleNRT.test_returnF  s    "T"""6** 	3 	3Cvc{{H%**CMM$s))T(^^444##C2222		3 	3r    N)r   r   r   r\  r   r    r   rY  rY  D  s#        	3 	3 	3 	3 	3r    rY  c                       e Zd ZdZd Zd ZdS )TestConversionsz8
    Test implicit conversions between tuple types.
    c                     t           }t          ||f|          }|j        } ||          }|                     ||           d S r   )rj   r   r   r   )r~   fromtytotyvalr   r   r   ress           r   check_conversionz TestConversions.check_conversionW  sJ    fvi66eCjjc"""""r    c                    | j         }t          j        t          j        d          } ||t          j        t          j        d          d            ||t          j        t          j        t          j        f          d           t          j        t          j        d          }t          j        d          } |||d            |||d           |                     t          j	                  5 } ||t          j        t          j        f          d           d d d            n# 1 swxY w Y   d}| 
                    |t          |j                             d S )Nr5   r   r   r   z?No conversion from UniTuple(int32 x 2) to UniTuple(float32 x 1))rd  r   r   r   r   r   int16rx   r	   r   r{   r|   r}   )r~   r  r`  atybtyr   r   s          r   test_conversionsz TestConversions.test_conversions^  st   %Q//fenU]A66???fek5=%+">??HHHnU[!,,k"ooc3c3v122 	AfE&%+u}&677@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	AOc3v/0011111s   2+D))D-0D-N)r   r   r   r   rd  ri  r   r    r   r^  r^  R  s<         # # #2 2 2 2 2r    r^  c                       e Zd Zd ZdS )TestMethodsc                 V   t           } t          d          |          }|                      |dd          d           |                     t                    5 } |dd           d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )NTr  rD  r5   r1   r   ztuple.index(x): x not in tuple)rn   r   r   rx   r   r|   r}   )r~   r   r   r   r   s        r   r   zTestMethods.test_indexp  s    %"T"""6**y!,,a000z** 	 fE)Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 .c&"23344444s   A44A8;A8N)r   r   r   r   r   r    r   rk  rk  n  s#        5 5 5 5 5r    rk  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	 e
j        ej        dk     d	          d
             Zd Zd ZdS )TestTupleBuildc                 >      fd} |d            |d           d S )Nc                     d } t          d          |          }                     ||            ||                      d S )Nc                     dg| R S r\   r   r   s    r   <lambda>zATestTupleBuild.test_build_unpack.<locals>.check.<locals>.<lambda>  s    wAww r    Tr  r   r   r  s      r   r  z/TestTupleBuild.test_build_unpack.<locals>.check~  sQ    &&F&C&&&v..E##EE!HHffQii88888r    r   r   r  r   r  s   ` r   test_build_unpackz TestTupleBuild.test_build_unpack}  <    	9 	9 	9 	9 	9 	fhr    c                 >      fd} |d            |d           d S )Nc                     d } t          d          |          }                     ||            ||                      d S )Nc                     g | R S r   r   rr  s    r   rs  zMTestTupleBuild.test_build_unpack_assign_like.<locals>.check.<locals>.<lambda>      uuu r    Tr  rt  r  s      r   r  z;TestTupleBuild.test_build_unpack_assign_like.<locals>.check  P    $_F&C&&&v..E##EE!HHffQii88888r    r   ru  r   r  s   ` r   test_build_unpack_assign_likez,TestTupleBuild.test_build_unpack_assign_like  s<    	9 	9 	9 	9 	9 	fhr    c                      fd}                      t          j                  5 } |ddg           d d d            n# 1 swxY w Y   t          j        dk    rVd}                     |t          |j                             d}                     |t          |j                             d S d}                     |t          |j                             d S )Nc                     d } t          d          |          }                     ||            ||                      d S )Nc                     g | R S r   r   rr  s    r   rs  zZTestTupleBuild.test_build_unpack_fail_on_list_assign_like.<locals>.check.<locals>.<lambda>  r{  r    Tr  rt  r  s      r   r  zHTestTupleBuild.test_build_unpack_fail_on_list_assign_like.<locals>.check  r|  r    r   r   )rN      zNo implementation of functionztuple(reflected list(z6Only tuples are supported when unpacking a single item)rx   r	   r   r
   	PYVERSIONr{   r|   r}   )r~   r  r   msg1msg2r   s   `     r   *test_build_unpack_fail_on_list_assign_likez9TestTupleBuild.test_build_unpack_fail_on_list_assign_like  s!   	9 	9 	9 	9 	9
 v122 	fE1a&MMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ?V## 3DMM$F$4 5 5666*DMM$F$4 5 566666JCMM#s6#34455555s   A  AAc                 >      fd} |d            |d           d S )Nc                     d } t          d          |          }                     ||            ||                      d S )Nc                     dg| d| R S Nr1   r   r   rr  s    r   rs  zFTestTupleBuild.test_build_unpack_more.<locals>.check.<locals>.<lambda>  s    2A2v222 r    Tr  rt  r  s      r   r  z4TestTupleBuild.test_build_unpack_more.<locals>.check  sQ    22F&C&&&v..E##EE!HHffQii88888r    r   ru  r   r  s   ` r   test_build_unpack_morez%TestTupleBuild.test_build_unpack_more  rw  r    c                 >      fd} |d            |d           d S )Nc                     t           d             fd} t          d          |          }                     ||            ||                      d S )Nc                      | S r   r   rg   s    r   innerzCTestTupleBuild.test_build_unpack_call.<locals>.check.<locals>.inner      r    c                      dg| R  S r\   r   r   r  s    r   rs  zFTestTupleBuild.test_build_unpack_call.<locals>.check.<locals>.<lambda>  s    uuQ|||| r    Tr  rt  rc   r   r   r  r~   s      @r   r  z4TestTupleBuild.test_build_unpack_call.<locals>.check  sq      S++++F&C&&&v..E##EE!HHffQii88888r    r   ru  r   r  s   ` r   test_build_unpack_callz%TestTupleBuild.test_build_unpack_call  <    	9 	9 	9 	9 	9 	fhr    c                 >      fd} |d            |d           d S )Nc                     t           d             fd} t          d          |          }                     ||            ||                      d S )Nc                      | S r   r   r  s    r   r  zHTestTupleBuild.test_build_unpack_call_more.<locals>.check.<locals>.inner  r  r    c                      dg| d| R  S r  r   r  s    r   rs  zKTestTupleBuild.test_build_unpack_call_more.<locals>.check.<locals>.<lambda>  s#    uuQ88V8a888 r    Tr  rt  r  s      @r   r  z9TestTupleBuild.test_build_unpack_call_more.<locals>.check  sq      S8888F&C&&&v..E##EE!HHffQii88888r    r   ru  r   r  s   ` r   test_build_unpack_call_morez*TestTupleBuild.test_build_unpack_call_more  r  r    c                 `      fd} |d d            |d d            |d d           d S )Nc                      t          d          |           }                     ||           | |                     d S r  rt  )r   r[  r   r~   s      r   r  z4TestTupleBuild.test_tuple_constructor.<locals>.check  sI    &C&&&v..E##EE#JJs<<<<<r    c                     t                      S r   rz   )_s    r   rs  z7TestTupleBuild.test_tuple_constructor.<locals>.<lambda>  s
     r    r   c                      t          |           S r   r  rr  s    r   rs  z7TestTupleBuild.test_tuple_constructor.<locals>.<lambda>      a r    r   c                      t          |           S r   r  rr  s    r   rs  z7TestTupleBuild.test_tuple_constructor.<locals>.<lambda>  r  r    ru  r   r  s   ` r   test_tuple_constructorz%TestTupleBuild.test_tuple_constructor  sf    	= 	= 	= 	= 	=
 	$$$  &)))  (+++++r    )rN   	   zneeds Python 3.9+c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nc                  (    d} d}g | d         r|ndR S )Nr1   )rN   r5   r   r   )r   r   r   r   s     r   r@  z<TestTupleBuild.test_unpack_with_predicate_fails.<locals>.foo  s'    AA.1Q4+aaV...r    z&op_LIST_EXTEND at the start of a block)r   rx   r	   ry   r{   r|   r}   )r~   r@  r   r   s       r    test_unpack_with_predicate_failsz/TestTupleBuild.test_unpack_with_predicate_fails  s     
	/ 	/ 
	/
 v677 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6c3v/0011111s   AAAc                 (      fd} |d           d S )Nc                     d } t          d          |          }                     ||            ||                      d S )Nc                     ddg}g | |                     d          |                    |           t          j        d          R |fS )Nr1   r5   rN   )rp   extendr_   onesr   r   s     r   r   zTTestTupleBuild.test_build_unpack_with_calls_in_unpack.<locals>.check.<locals>.pyfunc  sI    FAAAHHQKKA!AbgajjAA1DDr    Tr  rt  r  s      r   r  zDTestTupleBuild.test_build_unpack_with_calls_in_unpack.<locals>.check  s]    E E E 'C&&&v..E##EE!HHffQii88888r    r   r   r  s   ` r   &test_build_unpack_with_calls_in_unpackz5TestTupleBuild.test_build_unpack_with_calls_in_unpack  s/    	9 	9 	9 	9 	9 	fr    c                 (      fd} |d           d S )Nc                     d } t          d          |          }                     ||            ||                      d S )Nc                     ddg}g | g | | R | g | dgd| R | ddg| dR dR f|                     d          |                    |           fR |fS )Nr1   r5   r   )rN   )r5   rN   r  r   )rp   r  r  s     r   r   zKTestTupleBuild.test_build_unpack_complicated.<locals>.check.<locals>.pyfunc  s    F5 5WqW!WW 5 ,5a-C$-C-C-C ,5Av--1--,5/3,5 ,5 (6 5((1++qxx{{35 5678 8r    Tr  rt  r  s      r   r  z;TestTupleBuild.test_build_unpack_complicated.<locals>.check  sZ    8 8 8 'C&&&v..E##EE!HHffQii88888r    )r>     r   r  s   ` r   test_build_unpack_complicatedz,TestTupleBuild.test_build_unpack_complicated  s/    	9 	9 	9 	9 	9 	hr    N)r   r   r   rv  r}  r  r  r  r  r  unittestskipIfr
   r  r  r  r  r   r    r   rn  rn  {  s        	 	 	
 
 
6 6 62	 	 	    
, 
, 
, X_U_v-/BCC2 2 DC2	 	 	    r    rn  __main__)?collectionsr   numpyr_   numba.core.compilerr   numbar   r   r   r   
numba.corer   r	   r
   numba.tests.supportr   r   r   r  
namedtupler   r   r   r   r   r$   r'   r+   r/   r3   r6   r:   r<   r>   rA   rC   rF   rH   rJ   rL   rP   rS   rX   rZ   rd   rh   rj   rn   rr   rt   r   r   r   r   r  rN  rY  r^  rk  rn  r   mainr   r    r   <module>r     s               0 0 0 0 0 0 . . . . . . . . . . . . + + + + + + + + + + > > > > > > > > > >  {f&9::w88		/	:	:w++                                ( ( (                   7 7 7 7 78, 7 7 7 
 
 
 
 
x0 
 
 
,$6 $6 $6 $6 $6h $6 $6 $6NU U U U Ux U U U4l' l' l' l' l'X l' l' l'^rJ rJ rJ rJ rJX rJ rJ rJj* * * * *8_ * * *3 3 3 3 3/ 3 3 32 2 2 2 2h 2 2 28
5 
5 
5 
5 
5( 
5 
5 
5J J J J JX J J JZ zHMOOOOO r    