
    J/Phh]                         d dl Z d dlZd dl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# Z.d$ Z/ G d% d&ej                  Z0 G d' d(ej                  Z1 G d) d*e          Z2 G d+ d,e          Z3 G d- d.e          Z4 G d/ d0ee          Z5 G d1 d2ee          Z6 G d3 d4ee          Z7 G d5 d6e          Z8 G d7 d8e          Z9 G d9 d:e          Z:e;d;k    r ej<                     dS dS )<    N)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     W/var/www/html/test/jupyter/venv/lib/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_slice2r2   &   s    qt9r   c                     | dd d         S )Nr0      r   r-   s    r   tuple_slice3r5   )   s    qt!t9r   c                      t          |           S r   lenr-   s    r   len_usecaser9   ,   s    s88Or   c                     | |z   S r   r   r   s     r   add_usecaser;   /   s    q5Lr   c                     | |k    S r   r   r   s     r   
eq_usecaser=   2       6Mr   c                     | |k    S r   r   r   s     r   
ne_usecaser@   5   r>   r   c                     | |k    S r   r   r   s     r   
gt_usecaserB   8       q5Lr   c                     | |k    S r   r   r   s     r   
ge_usecaserE   ;   r>   r   c                     | |k     S r   r   r   s     r   
lt_usecaserG   >   rC   r   c                     | |k    S r   r   r   s     r   
le_usecaserI   A   r>   r   c                 
    | |v S r   r   r   s     r   
in_usecaserK   D   s    6Mr   c                 ,    t          |           | rdndfS )N   r4   )boolr-   s    r   bool_usecaserO   G   s    99CqqQ''r   c                 *    | j         | j        | j        fS r   r   r   r   r-   s    r   getattr_usecaserR   J   s    5#%r   c                 $    t          | ||          S r   r   r   r   cs      r   
make_pointrW   M   s    Aq>>r   c                 &    t          |||           S )NrQ   rT   rU   s      r   make_point_kwsrY   P   s    1Qr   c                     t          t          t          |                     t          j        | dz                       }t          |t          |j                  t          |j                            }|S Nr0   )	r   listrangenpzerosr   r8   r   r   )nrps      r   make_point_nrtrc   S   sO    T%((^^RXa!e__--AaQWs18}}--AHr   c                 &     t          |           | S r   )type)r"   argss     r   type_usecaserg   Y   s    499dr   c                     | S r   r   r-   s    r   identityri   \   s    Jr   c                 ,    |                      |          S r   )index)r"   values     r   index_method_usecaserm   _   s    99Ur   c                  p    g g g df\  } }}}|                      d           |                     d           d S )Ng        r0   )append)r   r   rV   ds       r   tuple_unpack_static_getitem_errrq   b   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   r7   r-   s    r   eattuplez>TestTupleLengthError.test_tuple_length_error.<locals>.eattupleo   s    s88Or   i  z,Tuple 'tup' length must be smaller than 1000)	r   assertRaisesr   UnsupportedErrortupler]   assertInstr	exception)selfrv   raisesr"   expecteds        r   test_tuple_length_errorz,TestTupleLengthError.test_tuple_length_errorl   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   rs   rs   j   s#        7 7 7 7 7r   rs   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 )Nrb    Argument 'types' is not iterable)	rw   r   TypingErrorr   
NamedTupleuint32rz   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   )	rw   r   r   r   Tupler   rz   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   z   s<         
 
 

 
 
 
 
r   r   c                        e Zd Zd Zd Zd ZdS )TestTupleReturnc                 Z   t          j        t           j        dd          } t          ||f          t                    }t          j        dd          x}} |||          \  }}|                     ||           |                     ||           ~~|                     ||           d S )Nr0   C   float64)dtype)r   Arrayr   r   r   r^   arangeassertPreciseEqual)r}   arytycfuncr   r   rarbs          r   test_array_tuplez TestTupleReturn.test_array_tuple   s    EM1c22$eU^$$%9::	!9----Aq!BA&&&A&&&qB'''''r   c                     t           j        } t          ||f          t                    }dx}} |||          \  }}|                     ||           |                     ||           d S r[   )r   float32r   r   assertEqual)r}   scalartyr   r   r   r   r   s          r   test_scalar_tuplez!TestTupleReturn.test_scalar_tuple   st    =*h)**+?@@	Aq!BQQr   c                 V   g }g }|                     t          j        t          j        f           |                     d           |                     t          j        t          j        f           |                     d           |                     t          j        t          j        f           |                     d           t          ||          D ]S\  \  }}\  }} t          ||f          t                    } |||          \  }}	| 	                    ||	f||f           Td S )Nr0   r4   )g      ?g      ?)i  g      ?)
ro   r   int32int64r   r   zipr   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!"D"bNN#788EU1a[[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                 8   t          j        t           j        d          } t          |f          t                    } t          |f          t
                    }|                      |d          d           |                      |d          d           d S )Nr4      r   r   r   )r   UniTupler   r   r#   r&   r   r}   
tuple_typecf_first	cf_seconds       r   test_unituplezTestTuplePassing.test_unituple   s    ^EK33
&4&&{33'D*''55	 0 0!444		& 1 1155555r   c                 N   t          j        t           j        t           j        f          } t	          |f          t
                    } t	          |f          t                    }|                      |d          d           |                      |d          d           d S )N)                  ?r   r   )r   r   r   r   r   r#   r&   r   r   s       r   r   z"TestTuplePassing.test_hetero_tuple   s    [%+u}!=>>
&4&&{33'D*''55	 6 6>>>		, 7 7=====r   c                    t          j        t           j        d          } t          |f          t                    }|j        |j        d                  j        }|                     t                    5 } |d           d d d            n# 1 swxY w Y   | 
                    t          |j                  d           d S )Nr4   r   r   r      z8size mismatch for tuple, expected 2 element(s) but got 3)r   r   r   r   r#   	overloads
signaturesentry_pointrw   
ValueErrorr   r{   r|   )r}   r   r   r   r~   s        r   test_size_mismatchz#TestTuplePassing.test_size_mismatch   s    ^EK33
#j]##K00oe&6q&9:Fz** 	#fK	"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#V-..<	> 	> 	> 	> 	>s   5BBBN)r   r   r   r   r   r   r   r   r   r   r      sA        6 6 6> > >	> 	> 	> 	> 	>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          f          |          }|                      |d          d            t          t          j        t          j        d          f          |          }|                      |d          d           d S )Nr   r4   rM   r   )r9   r   r   r   r   r   r   r   )r}   pyfuncr   s      r   test_lenzTestOperations.test_len   s    Bek5;">??ABB6JJfq1117enU[!44677??i 0 0!44444r   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]   r8   r   r}   r   r   r"   is        r   test_index_literalz!TestOperations.test_index_literal   so    	 	 	 Vs3xx 	; 	;A##EE#qMM3q6::::	; 	;r   c           	      B	   t           } t          t          j        t          j        d          t          j        f          |          }d}t          t          |                    D ](}|                      |||          ||                    )t          t          |          dz             D ]*}|                      |||           ||                     +|                     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          j        t          j        d          t          j        f} t          |          |          j        |         }|                     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        f          |          }t          t          |                    D ]:}|                      ||t          j        |                    ||                    ;t           }t          j        t          j        d          t          j        t          j        t          j        t          j        t          j        f          fD ]E} t          |f          |          }d}|                      ||           ||                     Ft          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 )
NrM   )r   rM   r   r0   ztuple index out of ranger   r   r   )r   rM   *   r   zUCannot infer the type of variable 'c', have imprecise type: list(undefined)<iv=None>.)r*   r   r   r   r   r]   r8   r   rw   
IndexErrorr   r{   r|   r   r   uintpr.   r   r   assertTypingErrorrq   rz   )
r}   r   r   r"   r   r~   rf   crtypmsgs
             r   
test_indexzTestOperations.test_index   s.   DenU[!44ekBDDVLLs3xx 	; 	;A##EE#qMM3q6:::: s3xx!|$$ 	= 	=A##EE#rNNCG<<<< z** 	!fE#s3xx   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!3S9I5J5JKKKz** 	(fE#SA'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(3S9I5J5JKKK u{A..=T$ZZ)$/z** 	"fNN2q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"3S9I5J5JKKK FenU[!44ekCEEfMMs3xx 	H 	HA##EE#u{1~~$>$>AGGGG $N5;22Kek5; TUUW 	= 	=C D#LL((EC##EE#JJs<<<<nU[!,,##%% 	! 	!D#LL   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 1##%% 	DIIf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+c3v/0011111sZ   4DD!D'FFF,III9PP#&P#Q**Q.1Q.c                    t           } t          t          j        t          j        t          j        d          f          |          }d}t          d          D ],}|                      |||           |||                     - t          t          j        t          j        g           f          |          }|                      |dd           |dd                     d S )NrM   )r   r0   r   r   r0   r   )rK   r   r   r   r   r]   r   r   r   s        r   test_inzTestOperations.test_in  s    Eek5>%+q#A#ACEEfMMq 	C 	CA##EE!SMM66!S>>BBBB 7ek5;r??466v>>affQmm<<<<<r   c                    d} t          t          j        t          j        d          f          |          }|                      ||           ||                     t          j        t          j        t          j        t          j        t          j        f          } t          |f          |          }|                      ||           ||                     d S )N)r   r   r      r   )r   r   r   r   r   r   r   )r}   r   r"   r   rf   s        r   check_slicezTestOperations.check_slice)  s    8enU[!44688@@c

FF3KK888{EKek5;OPPdWf%%c

FF3KK88888r   c                 :    |                      t                     d S r   )r   r2   r}   s    r   test_slice2zTestOperations.test_slice21      &&&&&r   c                 :    |                      t                     d S r   )r   r5   r   s    r   test_slice3zTestOperations.test_slice34  r   r   c                     t           } t          t          j        t          j        t          j        f          f          |          }d}|                      ||  ||             t          t          j        t          j        d          f          |          }d}|                      ||  ||             t          t          j        d          f          |          }|                      |d           |d                     d S )N)r   rM   )r   r   )rO   r   r   r   r   r   r   r   )r}   r   r   rf   s       r   	test_boolzTestOperations.test_bool7  s    Aek5;"<==?AA&IItffdm<<<8enU[!44688@@tffdm<<<)ek"oo'))&11b		66"::66666r   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 ]W\  \  }}\  }} t          ||f          |          } |||          } |||          }	| 
                    |	|||f           Xd S )Nr   r   r0   )r   )rM   g      @)r   )r;   r   r   r   r   r   r   	itertoolsproductr   r   )
r}   r   samplesr   r   r   r   r   r   gots
             r   test_addzTestOperations.test_addB  s    KOOR(N5;22B7N5;22E:Kem <==xH
 !* 1'7 C C 	A 	AGRWb!#D"bOOF++Eva||H%1++C##CBx#@@@@		A 	Ar   c                 2     fd}t          j        t           j        t           j        f          t          j        t           j        d          g}t          j        ||          D ]1\  }} t          ||f          |          }dD ]} ||||           2t          j        t           j        t           j        f          t          j        t           j        d          g} t          t          |                    |          }dD ]} ||||           d S )Nc                 H                          ||  | | d|           d S Nzmismatch for arguments assertIsr   r   rf   r}   s      r   eqz(TestOperations._test_compare.<locals>.eqP  B    MM%%,9=?A A A A Ar   r4   )r   r   )r   r   r   )r   r   )r   )r   r   rM   )r   r   )r   )r   r   r   )r   )r   r   r   )
r   r   r   r   r   r   r   r   r   ry   )r}   r   r   argtypesr   r   r   rf   s   `       r   _test_comparezTestOperations._test_compareO  s:   	A 	A 	A 	A 	A
 Kem <==N5;224'(;; 	( 	(FB#D"bOOF++E+ ( ( 65$''''	( Kem <==N5;224&U8__&&v..* 	$ 	$D Bvud####	$ 	$r   c                 :    |                      t                     d S r   r   r=   r   s    r   test_eqzTestOperations.test_eqg      :&&&&&r   c                 :    |                      t                     d S r   r   r@   r   s    r   test_nezTestOperations.test_nej  r   r   c                 :    |                      t                     d S r   r   rB   r   s    r   test_gtzTestOperations.test_gtm  r   r   c                 :    |                      t                     d S r   r   rE   r   s    r   test_gezTestOperations.test_gep  r   r   c                 :    |                      t                     d S r   r   rG   r   s    r   test_ltzTestOperations.test_lts  r   r   c                 :    |                      t                     d S r   r   rI   r   s    r   test_lezTestOperations.test_lev  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       5 5 5	; 	; 	;52 52 52n	= 	= 	=9 9 9' ' '' ' '	7 	7 	7A A A$ $ $0' ' '' ' '' ' '' ' '' ' '' ' ' ' '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   rb   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  )r9   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]   r8   r   r   r   )r}   r   r   rb   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  )rO   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  )rR   r   r   r   )r}   r   r   rf   rb   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   re   r   )r   r   rf   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   )rW   rY   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)  )rg   r   r   r   r   r   re   r   )	r}   r   r   
arg_tuplestup_argsrf   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  )rl   s    r   Data1z6TestNamedTuple.test_literal_unification.<locals>.Data1  s    t$$$r   c                 L    |dk    r |           }nt          | |          }|S )Nr   r  )r   jresultr5  s      r   callz5TestNamedTuple.test_literal_unification.<locals>.call  s1    Avv q aMr   {   i)  r   r   r4  r   r   r   )r}   r9  ra   r5  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}   rA  ra   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   rA  z4TestNamedTuple.test_dispatcher_mistreat.<locals>.foo  s    Hr   r0   r4   rM   r0   r4   rM   r   )r   r   r   r8   nopython_signaturesrf   r   r   )r}   rA  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-  r1  r<  rB  rM  r   r   r   r  r  z  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 )NrM   )r^   r   )r   r   s     r   r   z+TestTupleNRT.test_tuple_add.<locals>.pyfunc1  s    	!A41$;r   Tr  r:  )r   r^   testingassert_equalr   )r}   r   r   r   expect_aexpect_xgot_agot_xs           r   test_tuple_addzTestTupleNRT.test_tuple_add0  s    	 	 	 #T"""6**#VAYY(uQxxu

x000)))))r   N)r   r   r   rX  r   r   r   rO  rO  /  s#        
* 
* 
* 
* 
*r   rO  c                       e Zd Zd ZdS )TestNamedTupleNRTc                    t           } t          d          |          }dD ]^} ||          } ||          }|                     t          |          t          |                     |                     ||           _d S )NTr  )rM   r   )rc   r   r   re   r   )r}   r   r   argr   r   s         r   test_returnzTestNamedTupleNRT.test_return?  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   rZ  rZ  =  s#        	3 	3 	3 	3 	3r   rZ  c                       e Zd ZdZd Zd ZdS )TestConversionsz8
    Test implicit conversions between tuple types.
    c                     t           } t           ||                    |          } ||          }|                     ||           d S r   )ri   r   r   )r}   fromtytotyvalr   r   ress          r   check_conversionz TestConversions.check_conversionP  sO    "TT&\\""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 )Nr4   r   r   r   z?No conversion from UniTuple(int32 x 2) to UniTuple(float32 x 1))re  r   r   r   r   r   int16rw   r   r   rz   r{   r|   )r}   r  ra  atybtyr~   r   s          r   test_conversionsz TestConversions.test_conversionsV  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   re  rj  r   r   r   r_  r_  K  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  rE  r4   r0   r   ztuple.index(x): x not in tuple)rm   r   r   rw   r   r{   r|   )r}   r   r   r~   r   s        r   r   zTestMethods.test_indexh  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   rl  rl  f  s#        5 5 5 5 5r   rl  c                   J    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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>w  s    wAww r   Tr  r   r   r  s      r   r  z/TestTupleBuild.test_build_unpack.<locals>.checkv  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_unpacku  <    	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   rs  s    r   rt  zMTestTupleBuild.test_build_unpack_assign_like.<locals>.check.<locals>.<lambda>      uuu r   Tr  ru  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   rv  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                 B     fd}                      t          j                  5 } |ddg           d d d            n# 1 swxY w Y   d}                     |t	          |j                             d}                     |t	          |j                             d S )Nc                     d } t          d          |          }                     ||            ||                      d S )Nc                     g | R S r   r   rs  s    r   rt  zZTestTupleBuild.test_build_unpack_fail_on_list_assign_like.<locals>.check.<locals>.<lambda>  r|  r   Tr  ru  r  s      r   r  zHTestTupleBuild.test_build_unpack_fail_on_list_assign_like.<locals>.check  r}  r   r   r   zNo implementation of functionztuple(reflected list()rw   r   r   rz   r{   r|   )r}   r  r~   msg1msg2s   `    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	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 /dC 011222&dC 01122222s   A  AAc                 >      fd} |d            |d           d S )Nc                     d } t          d          |          }                     ||            ||                      d S )Nc                     dg| d| R S Nr0   r   r   rs  s    r   rt  zFTestTupleBuild.test_build_unpack_more.<locals>.check.<locals>.<lambda>  s    2A2v222 r   Tr  ru  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   rv  r   r  s   ` r   test_build_unpack_morez%TestTupleBuild.test_build_unpack_more  rx  r   c                 >      fd} |d            |d           d S )Nc                     t           d             fd} t          d          |          }                     ||            ||                      d S )Nc                      | S r   r   rf   s    r   innerzCTestTupleBuild.test_build_unpack_call.<locals>.check.<locals>.inner      r   c                      dg| R  S r[   r   r   r  s    r   rt  zFTestTupleBuild.test_build_unpack_call.<locals>.check.<locals>.<lambda>  s    uuQ|||| r   Tr  ru  rb   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   rv  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   rt  zKTestTupleBuild.test_build_unpack_call_more.<locals>.check.<locals>.<lambda>  s#    uuQ88V8a888 r   Tr  ru  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   rv  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  ru  )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   ry   )_s    r   rt  z7TestTupleBuild.test_tuple_constructor.<locals>.<lambda>  s
     r   r   c                      t          |           S r   r  rs  s    r   rt  z7TestTupleBuild.test_tuple_constructor.<locals>.<lambda>      a r   r   c                      t          |           S r   r  rs  s    r   rt  z7TestTupleBuild.test_tuple_constructor.<locals>.<lambda>  r  r   rv  r   r  s   ` r   test_tuple_constructorz%TestTupleBuild.test_tuple_constructor  sf    	= 	= 	= 	= 	=
 	$$$  &)))  (+++++r   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r0   )rM   r4   r   r   )r   r   r   r   s     r   rA  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   rw   r   UnsupportedBytecodeErrorrz   r{   r|   )r}   rA  r~   r   s       r    test_unpack_with_predicate_failsz/TestTupleBuild.test_unpack_with_predicate_fails  s     
	/ 	/ 
	/
 v>?? 	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 )Nr0   r4   rM   )ro   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  ru  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 )Nr0   r4   r   )rM   )r4   rM   r  r   )ro   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  ru  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   rw  r~  r  r  r  r  r  r  r  r  r   r   r   ro  ro  s  s        	 	 	
 
 
3 3 3*	 	 	    
, 
, 
,2 2 2	 	 	    r   ro  __main__)=collectionsr   numpyr^   numbar   r   r   r   
numba.corer   r   r	   numba.tests.supportr
   r   r   unittest
namedtupler   r   r   r   r   r#   r&   r*   r.   r2   r5   r9   r;   r=   r@   rB   rE   rG   rI   rK   rO   rR   rW   rY   rc   rg   ri   rm   rq   rs   r   r   r   r   r  rO  rZ  r_  rl  ro  r   mainr   r   r   <module>r     s               . . . . . . . . . . . . + + + + + + + + + + > > > > > > > > > >  {f&9::w88		/	:	:w++                                ( ( (                   7 7 7 7 78, 7 7 7 
 
 
 
 
x0 
 
 
,$6 $6 $6 $6 $6h $6 $6 $6N> > > > >x > > >8d' d' d' d' d'X d' d' d'N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 26
5 
5 
5 
5 
5( 
5 
5 
5E E E E EX E E EP zHMOOOOO r   