
    xKg]                        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jx                          yy)<    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     [/home/alanp/www/video.onchill/myenv/lib/python3.12/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9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    s8Or   c                     | |z   S r   r   r   s     r   add_usecaser;   /       q5Lr   c                     | |k(  S r   r   r   s     r   
eq_usecaser>   2       6Mr   c                     | |k7  S r   r   r   s     r   
ne_usecaserA   5   r?   r   c                     | |kD  S r   r   r   s     r   
gt_usecaserC   8   r<   r   c                     | |k\  S r   r   r   s     r   
ge_usecaserE   ;   r?   r   c                     | |k  S r   r   r   s     r   
lt_usecaserG   >   r<   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fS dfS )N   r4   )boolr-   s    r   bool_usecaserO   G   s    9Cq''Q''r   c                 H    | j                   | j                  | j                  fS r   r   r   r   r-   s    r   getattr_usecaserR   J   s    55#%%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   sE    T%(^RXXa!e_-AaQWWs188}-AHr   c                      t        |       | S r   )type)r"   argss     r   type_usecaserg   Y   s    49dr   c                     | S r   r   r-   s    r   identityri   \   s    Jr   c                 $    | j                  |      S r   )index)r"   values     r   index_method_usecaserm   _   s    99Ur   c                  ^    g g g df\  } }}}| j                  d       |j                  d       y )Ng        r0   )append)r   r   rV   ds       r   tuple_unpack_static_getitem_errrq   b   s0    RSJAq!QHHQKHHQK
r   c                       e Zd Zd Zy)TestTupleLengthErrorc                 
   t         d        }| j                  t        j                        5 }t	        t        d            } ||       d d d        d}| j                  |t        j                               y # 1 sw Y   1xY w)Nc                     t        |       S r   r7   r-   s    r   eattuplez>TestTupleLengthError.test_tuple_length_error.<locals>.eattupleo   s    s8Or   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   sr     
	 
	 v6676d$CSM 8 BhF$4$4 56 87s   A99BN)__name__
__module____qualname__r   r   r   r   rs   rs   j   s    7r   rs   c                       e Zd ZdZd Zd Zy)TestTupleTypeNotIterablezA
    issue 4369
    raise an error if 'type' is not iterable
    c                     | j                  t        j                        5 }t        j                  t        j
                  d       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)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   sW    v112fU\\3/ 3.  !	
 32s   %A33A<c                     | j                  t        j                        5 }t        j                  t        j
                         d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   )	rw   r   r   r   Tupler   rz   r{   r|   r   s     r   test_tuple_types_exceptionz3TestTupleTypeNotIterable.test_tuple_types_exception   sS    v112fKK' 3.  !	
 32s   $A22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y)TestTupleReturnc                 6   t        j                  t         j                  dd      } t        ||f      t              }t        j                  dd      x}} |||      \  }}| j                  ||       | j                  ||       ~~| j                  ||       y )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    EMM1c2$eU^$%9:		!9--Aq!BA&A&qB'r   c                     t         j                  } t        ||f      t              }dx}} |||      \  }}| j	                  ||       | j	                  ||       y r[   )r   float32r   r   assertEqual)r}   scalartyr   r   r   r   r   s          r   test_scalar_tuplez!TestTupleReturn.test_scalar_tuple   sZ    ==*h)*+?@	Aq!BQQr   c                 2   g }g }|j                  t        j                  t        j                  f       |j                  d       |j                  t        j                  t        j
                  f       |j                  d       |j                  t        j                  t        j
                  f       |j                  d       t        ||      D ]D  \  \  }}\  }} t        ||f      t              } |||      \  }}	| j                  ||	f||f       F y )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    	ekk23 67&emm45$ #Hi 8HRfq!"D"bN#78E1a[FB##RHq!f5 !9r   N)r   r   r   r   r   r   r   r   r   r   r      s    ( 6r   r   c                       e Zd Zd Zd Zd Zy)TestTuplePassingc                    t        j                  t         j                  d      } t        |f      t              } t        |f      t
              }| j                   |d      d       | j                   |d      d       y )Nr4      r   r   r   )r   UniTupler   r   r#   r&   r   r}   
tuple_typecf_first	cf_seconds       r   test_unituplezTestTuplePassing.test_unituple   sf    ^^EKK3
&4&{3'D*'5	 0!4	& 115r   c                 "   t        j                  t         j                  t         j                  f      } t	        |f      t
              } t	        |f      t              }| j                   |d      d       | j                   |d      d       y )N)                  ?r   r   )r   r   r   r   r   r#   r&   r   r   s       r   r   z"TestTuplePassing.test_hetero_tuple   sm    [[%++u}}!=>
&4&{3'D*'5	 6>	, 7=r   c                 r   t        j                  t         j                  d      } t        |f      t              }|j
                  |j                  d      j                  }| j                  t              5 } |d       d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)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    ^^EKK3
#j]#K0ooe&6&6q&9:FFz*f	" +V--.<	> +*s   6	B--B6N)r   r   r   r   r   r   r   r   r   r   r      s    6>	>r   r   c                   l    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y)TestOperationsc                 ^   t         } t        t        j                  t        j                  t        j
                  f      f      |      }| j                   |d      d        t        t        j                  t        j                  d      f      |      }| j                   |d      d       y )Nr   r4   rM   r   )r9   r   r   r   r   r   r   r   )r}   pyfuncr   s      r   test_lenzTestOperations.test_len   s}    Bekk5;;">?AB6Jfq17ennU[[!467?i 0!4r   c                     d }t        |      }d}t        t        |            D ]  }| j                   |||      ||            y )Nc                 "    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   sC    	 Vs3xA##E#qM3q6: !r   c           	      f   t         } t        t        j                  t        j                  d      t        j                  f      |      }d}t        t        |            D ]  }| j                   |||      ||            t        t        |      dz         D ]   }| j                   |||       ||           " | j                  t              5 } ||t        |             d d d        | j                  dt        j                               | j                  t              5 } ||t        |      dz           d d d        | j                  dt        |j                               t        j                  t        j                  d      t        j                  f} t        |      |      j                  |   }| j                  t              5 }|j                  dd       d d d        | j                  dt        |j                                t        t        j                  t        j                  d      t        j                  f      |      }t        t        |            D ]1  }| j                   ||t        j                  |            ||          3 t         }t        j                  t        j                  d      t        j"                  t        j                  t        j$                  t        j                  t        j$                  f      fD ]4  } t        |f      |      }d}| j                   ||       ||             6 t        j                  t        j                  d      }| j'                         5   t        |f      |       d d d        t(        }| j'                         5 } t        d      |       d d d        d	}	| j+                  |	t        |j                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   -xY w# 1 sw Y   xY w# 1 sw Y   dxY w)
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ennU[[!4ekkBDVLs3xA##E#qM3q6: ! s3x!|$A##E#rNCG< % z*f#s3x  +3S9I9I5JKz*f#SA' +3S9I9I5JK u{{A.=T$Z))$/z*fNN2q! +3S9I9I5JK FennU[[!4ekkCEfMs3xA##E#u{{1~$>AG !
 $NN5;;2KKekk5;; TUWC D#L(EC##E#Js<	W nnU[[!,##%D#L  & 1##%DIf &+c3v//01S +* +* +*& &%
 &%s<   O4%PPP2P'4O>PPP$'P0c                    t         } t        t        j                  t        j                  t        j                  d      f      |      }d}t        d      D ]"  }| j                   |||       |||             $  t        t        j                  t        j                  g       f      |      }| j                   |dd       |dd             y )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ekk5>>%++q#ACEfMqA##E!SM6!S>B  7ekk5;;r?46v>afQm<r   c                    d} t        t        j                  t        j                  d      f      |      }| j	                   ||       ||             t        j
                  t        j                  t        j                  t        j                  t        j                  f      } t        |f      |      }| j	                   ||       ||             y )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ennU[[!468@c
F3K8{{EKKekk5;;OPdWf%c
F3K8r   c                 .    | j                  t               y r   )r   r2   r}   s    r   test_slice2zTestOperations.test_slice21      &r   c                 .    | j                  t               y 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}| j                   ||  ||         t        t        j                  t        j                  d      f      |      }d}| j                   ||  ||         t        t        j                  d      f      |      }| j                   |d       |d             y )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ekk5;;"<=?A&Itfdm<8ennU[[!468@tfdm<)ekk"o')&1b	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 ]F  \  \  }}\  }} t        ||f      |      } |||      } |||      }	| j                  |	|||f       H y )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    KKOR(NN5;;2B7NN5;;2E:KKemm <=xH
 !* 1 1'7 CGRWb!#D"bOF+Ea|H1+C##CBx#@	 !Dr   c                 F     fd}t        j                  t         j                  t         j                  f      t        j                  t         j
                  d      g}t        j                  ||      D ])  \  }} t        ||f      |      }dD ]  } ||||        + t        j                  t         j                  t         j                  f      t        j                  t         j
                  d      g} t        t        |            |      }dD ]  } ||||        y )Nc                 >    j                   ||  | | d|       y Nzmismatch for arguments assertIsr   r   rf   r}   s      r   eqz(TestOperations._test_compare.<locals>.eqP  "    MM%,9=?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
 KKemm <=NN5;;24''(;FB#D"bOF+E+ 65$'	+ < KKemm <=NN5;;24&U8_&v.*D vud#*r   c                 .    | j                  t               y r   r   r>   r   s    r   test_eqzTestOperations.test_eqg      :&r   c                 .    | j                  t               y r   r   rA   r   s    r   test_nezTestOperations.test_nej  r   r   c                 .    | j                  t               y r   r   rC   r   s    r   test_gtzTestOperations.test_gtm  r   r   c                 .    | j                  t               y r   r   rE   r   s    r   test_gezTestOperations.test_gep  r   r   c                 .    | j                  t               y r   r   rG   r   s    r   test_ltzTestOperations.test_lts  r   r   c                 .    | j                  t               y 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      sT    5	;52n	=9''	7A$0''''''r   r   c                   r    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y)TestNamedTuplec                 X      fd} |t        dd              |t        dd             y )Nc                     t         t        fD ]2  } t        d      |      }j                   ||        ||              4 y NTnopython)r#   r&   r   r   rb   r   r   r}   s      r   checkz)TestNamedTuple.test_unpack.<locals>.check}  s;    %|3*T*62''a&)< 4r   r   r         @r   r}   r  s   ` r   test_unpackzTestNamedTuple.test_unpack|  s&    	= 	d1ajd1clr   c                       fd} |t        dd              |t        ddd              |t        dd              |t        ddd             y )Nc                 r    t         } t        d      |      }j                   ||        ||              y r  )r9   r   r   r  s      r   r  z&TestNamedTuple.test_len.<locals>.check  s1     F&C&v.E##E!HfQi8r   r   r   r   r                @)r   r   r  s   ` r   r   zTestNamedTuple.test_len  sG    	9 	d1ajeAq!nd1cleAsB r   c           	      X   t         } t        d      |      }t        ddd      }t        t	        |            D ]"  }| j                   |||       |||             $ t        t	        |            D ]5  }| j                   ||t        j                  |             |||             7 y )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Ns1vA##E!QK1>  s1vA##E!U[[^$<fQlK r   c                 x      fd} |t        dd              |t        dd              |t                      y )Nc                 r    t         } t        d      |      }j                   ||        ||              y r  )rO   r   r   r  s      r   r  z'TestNamedTuple.test_bool.<locals>.check  s1    !F&C&v.E##E!HfQi8r   r   r   r  )r   r   r  s   ` r   r   zTestNamedTuple.test_bool  s/    	9 	d1ajd1clegr   c           	            fd} t        d      |      }dD ]  \  }} |||t        | t        | f        dD ]  \  }} |||t        | t        | f        y )Nc                 >    j                   ||  | | d|       y 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  sr    	A #T"6*'DAq vutQxq23	'*DAq vutQx34*r   c                 .    | j                  t               y r   r   r   s    r   r   zTestNamedTuple.test_eq  r   r   c                 .    | j                  t               y r   r   r   s    r   r   zTestNamedTuple.test_ne  r   r   c                 .    | j                  t               y r   r  r   s    r   r  zTestNamedTuple.test_gt  r   r   c                 .    | j                  t               y r   r  r   s    r   r  zTestNamedTuple.test_ge  r   r   c                 .    | j                  t               y r   r  r   s    r   r  zTestNamedTuple.test_lt  r   r   c                 .    | j                  t               y r   r
  r   s    r   r  zTestNamedTuple.test_le  r   r   c                     t         } t        d      |      }dD ](  }t        | }| j                   ||       ||             * y NTr  )r   r   r  r  )rR   r   r   r   )r}   r   r   rf   rb   s        r   test_getattrzTestNamedTuple.test_getattr  sC     "T"6*+DtA##E!HfQi8 ,r   c                 @      fd} |t                 |t               y )Nc                      t        d      |       }dD ]B  } | | } || }j                  t        |      t        |             j                  ||       D y r(  )r   r   re   r   )r   r   rf   r   r   r}   s        r   r  z,TestNamedTuple.test_construct.<locals>.check  sV    &C&v.E/!4=Tld3ih8''X6	 0r   )rW   rY   r  s   ` r   test_constructzTestNamedTuple.test_construct  s    	7 	jnr   c                    t         } t        d      |      }ddg}t        j                  ||      D ]U  \  }}t	        | } ||g| } ||g| }| j                  t        |      t        |             | j                  ||       W y )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GNHd"Cc)D)H#d#CMM$s)T(^4##C2 Hr   c                     t        d      d        t        d      fd       } |dd      }| j                  |t        dd              |dd      }| j                  |t        dd	             y )
NTr  c                     t        | d      S )Nr  )rl   s    r   Data1z6TestNamedTuple.test_literal_unification.<locals>.Data1  s    t$$r   c                 >    |dk(  r
 |       }|S t        | |      }|S )Nr   r  )r   jresultr5  s      r   callz5TestNamedTuple.test_literal_unification.<locals>.call  s.    Av q M aMr   {   i)  r   r   r4  r   r   r   )r}   r9  ra   r5  s      @r   test_literal_unificationz'TestNamedTuple.test_literal_unification  sy    	d		% 
	% 
d			 
		 dODs489aLDs489r   c                 p    t        d      d        } |       }| j                  |t        dd             y )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		* 
	* EDr,?@r   c                    t        d      d        }d} ||      }| j                  ||       t        ddd      } ||      }| j                  ||       | j                  t        |j                        d       | j                  |j                  d   j
                  d   t        |             | j                  |j                  d   j
                  d   t        |             t        ddd      } ||      }| j                  ||       | j                  t        |j                        d       | j                  |j                  d   j
                  d   t        |             y )	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		 
	 3xd#Aq!n3xd# 	S445q900388;VC[I00388;VC[I Q1o3xd#S445q900388;VC[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  sZ    	!
L
5(''''''9
3:.AJr   r  c                       e Zd Zd Zy)TestTupleNRTc                     d } t        d      |      }d} ||      \  }} ||      \  }}t        j                  j                  ||       | j	                  ||       y )Nc                 :    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*#AY(Qxu


x0)r   N)r   r   r   rX  r   r   r   rO  rO  /  s    
*r   rO  c                       e Zd Zd Zy)TestNamedTupleNRTc                     t         } t        d      |      }dD ]H  } ||      } ||      }| j                  t        |      t        |             | j	                  ||       J y )NTr  )rM   r   )rc   r   r   re   r   )r}   r   r   argr   r   s         r   test_returnzTestNamedTupleNRT.test_return?  sZ    "T"6*Cc{H*CMM$s)T(^4##C2	 r   N)r   r   r   r]  r   r   r   rZ  rZ  =  s    	3r   rZ  c                       e Zd ZdZd Zd Zy)TestConversionsz8
    Test implicit conversions between tuple types.
    c                 r    t         } t         ||            |      } ||      }| j                  ||       y r   )ri   r   r   )r}   fromtytotyvalr   r   ress          r   check_conversionz TestConversions.check_conversionP  s5    "T&\"6*Cj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       | j                  t        j                        5 } ||t        j
                  t        j                  f      d       d d d        d}| j                  |t        j                               y # 1 sw Y   1xY w)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  s    %%Q/fennU]]A6?fekk5==%++">?HnnU[[!,kk"oc3c3v112f&%++u}}&67@ 3Oc3v//01 32s   -E!!E*N)r   r   r   r   re  rj  r   r   r   r_  r_  K  s    #2r   r_  c                       e Zd Zd Zy)TestMethodsc                    t         } t        d      |      }| j                   |dd      d       | j                  t              5 } |dd       d d d        d}| j                  |t        j                               y # 1 sw Y   1xY w)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  sw    %"T"6*y!,a0z*f)Q +.c&"2"234 +*s   
BB
N)r   r   r   r   r   r   r   rl  rl  f  s    5r   rl  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y)TestTupleBuildc                 0      fd} |d        |d       y )Nc                 l    d } t        d      |      }j                   ||        ||              y )Nc                     dg| S r[   r   r   s    r   <lambda>zATestTupleBuild.test_build_unpack.<locals>.check.<locals>.<lambda>w  s
    wAwr   Tr  r   r   r  s      r   r  z/TestTupleBuild.test_build_unpack.<locals>.checkv  s1    &F&C&v.E##E!HfQi8r   r   r   r  r   r  s   ` r   test_build_unpackz TestTupleBuild.test_build_unpacku      	9 	fhr   c                 0      fd} |d        |d       y )Nc                 l    d } t        d      |      }j                   ||        ||              y )Nc                     g | S r   r   rs  s    r   rt  zMTestTupleBuild.test_build_unpack_assign_like.<locals>.check.<locals>.<lambda>      uur   Tr  ru  r  s      r   r  z;TestTupleBuild.test_build_unpack_assign_like.<locals>.check  1    $F&C&v.E##E!HfQi8r   r   rv  r   r  s   ` r   test_build_unpack_assign_likez,TestTupleBuild.test_build_unpack_assign_like  s    	9 	fhr   c                 (     fd} j                  t        j                        5 } |ddg       d d d        d} j                  |t	        j
                               d} j                  |t	        |j
                               y # 1 sw Y   XxY w)Nc                 l    d } t        d      |      }j                   ||        ||              y )Nc                     g | 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  sw    	9
 v112f1a&M 3 /dC 0 012&dC 0 012 32s   BBc                 0      fd} |d        |d       y )Nc                 l    d } t        d      |      }j                   ||        ||              y )Nc                     dg| d| S Nr0   r   r   rs  s    r   rt  zFTestTupleBuild.test_build_unpack_more.<locals>.check.<locals>.<lambda>  s    2A2v22r   Tr  ru  r  s      r   r  z4TestTupleBuild.test_build_unpack_more.<locals>.check  s1    2F&C&v.E##E!HfQi8r   r   rv  r   r  s   ` r   test_build_unpack_morez%TestTupleBuild.test_build_unpack_more  rx  r   c                 0      fd} |d        |d       y )Nc                     t         d        fd} t        d      |      }j                   ||        ||              y )Nc                      | S r   r   rf   s    r   innerzCTestTupleBuild.test_build_unpack_call.<locals>.check.<locals>.inner      r   c                      dg|  S r[   r   r   r  s    r   rt  zFTestTupleBuild.test_build_unpack_call.<locals>.check.<locals>.<lambda>  s    uQ||r   Tr  ru  rb   r   r   r  r}   s      @r   r  z4TestTupleBuild.test_build_unpack_call.<locals>.check  sC     +F&C&v.E##E!HfQi8r   r   rv  r   r  s   ` r   test_build_unpack_callz%TestTupleBuild.test_build_unpack_call      	9 	fhr   c                 0      fd} |d        |d       y )Nc                     t         d        fd} t        d      |      }j                   ||        ||              y )Nc                      | S r   r   r  s    r   r  zHTestTupleBuild.test_build_unpack_call_more.<locals>.check.<locals>.inner  r  r   c                      dg| d|  S r  r   r  s    r   rt  zKTestTupleBuild.test_build_unpack_call_more.<locals>.check.<locals>.<lambda>  s    uQ88V8a8r   Tr  ru  r  s      @r   r  z9TestTupleBuild.test_build_unpack_call_more.<locals>.check  sC     8F&C&v.E##E!HfQi8r   r   rv  r   r  s   ` r   test_build_unpack_call_morez*TestTupleBuild.test_build_unpack_call_more  r  r   c                 L      fd} |d d        |d d        |d d       y )Nc                 f     t        d      |       }j                   ||       | |             y r  ru  )r   r\  r   r}   s      r   r  z4TestTupleBuild.test_tuple_constructor.<locals>.check  s,    &C&v.E##E#J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  s+    	=
 	$ &) (+r   )rM   	   zneeds Python 3.9+c                     t         d        }| j                  t        j                        5 } |        d d d        d}| j	                  |t        j                               y # 1 sw Y   1xY w)Nc                  &    d} d}g | d   r|S d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.1Q4a..V..r   z&op_LIST_EXTEND at the start of a block)r   rw   r   rx   rz   r{   r|   )r}   rA  r~   r   s       r    test_unpack_with_predicate_failsz/TestTupleBuild.test_unpack_with_predicate_fails  s_     
	/ 
	/
 v6676E 86c3v//01 87s   A$$A-c                        fd} |d       y )Nc                 l    d } t        d      |      }j                   ||        ||              y )Nc                     ddg}g | |j                  d      |j                  |       t        j                  d      |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  sB    FAAAHHQKA!AbggajA1DDr   Tr  ru  r  s      r   r  zDTestTupleBuild.test_build_unpack_with_calls_in_unpack.<locals>.check  s4    E 'C&v.E##E!HfQi8r   r   r   r  s   ` r   &test_build_unpack_with_calls_in_unpackz5TestTupleBuild.test_build_unpack_with_calls_in_unpack  s    	9 	fr   c                        fd} |d       y )Nc                 l    d } t        d      |      }j                   ||        ||              y )Nc                     ddg}g | g | | | g | dgd| | ddg| ddf|j                  d      |j                  |       f|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!W 5 ,5a-C$-C-C ,5Av--1-,5/3,5 (6 5((1+qxx{35678 8r   Tr  ru  r  s      r   r  z;TestTupleBuild.test_build_unpack_complicated.<locals>.check  s3    8 'C&v.E##E!HfQi8r   )r?     r   r  s   ` r   test_build_unpack_complicatedz,TestTupleBuild.test_build_unpack_complicated  s    	9 	hr   N)r   r   r   rw  r~  r  r  r  r  r  unittestskipIfr	   	PYVERSIONr  r  r  r   r   r   ro  ro  s  s[    	
3*	
, X__U__v-/BC2 D2	r   ro  __main__)=collectionsr   numpyr^   numbar   r   r   r   
numba.corer   r   r	   numba.tests.supportr
   r   r   r  
namedtupler   r   r   r   r   r#   r&   r*   r.   r2   r5   r9   r;   r>   rA   rC   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			/	:w+( 78,, 7 
x00 
,$6h $6N>x >8d'X d'NrJX rJj*8_ *3/ 32h 26
5( 
5FX FR zHMMO r   