
    sh`
                    D	   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r
S SKJr  S SKrS SKJrJrJrJrJr  S SKJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJ r J!r!J"r"J#r#J$r$J%r%  S S	K&J'r'  S SK(r(S S
K)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;  S SK<J=r=J>r>J?r?J@r@JArA  SSKBJCrCJDrD   S SKEJFs  JGrH   " S S\J5      rK " S S\R                  5      rM\M" S5      rN\K" 5       rO\*R                  " \K5      S 5       rQ\-" \M\R                  5      S 5       rSS rT\2" \M5      " \1R                  5        \4" \M5      S 5       rVS rW\W" S5      u  rXrYrZ\4" \X5      S 5       r[S~S jr\S r]\+" \\5      " \]5      r^\," \\5      \," \\\R                  5      S 5       5       r`\," \\\R                  5      S 5       rb\? " S S\=5      5       rc\," S \M5      S! 5       rdS" reS# rfS$ rg\." \e5      S% 5       rh\." \e5      S& 5       ri\." \j5      S' 5       rk\." \R                  5      S( 5       rm\." \R                  5      S) 5       ro\." \R                  5      S* 5       rq\." \R                  5      S+ 5       rsS, rtS- ru\." \R                  5      S. 5       rwS/ rxS0 ryS1 rzS2 r{S3 r|\0" \MS45      S5 5       r}S6 r~S7 rS8 rS9 rS: rS; rS< rS= rS> rS? rS@ rSA rSB r\." \5      SC 5       rSD rSE rSF r\@" \5       " SG SH\A5      5       rSI r " SJ SK\J5      r " SL SM\GR$                  5      r\2" \5       " SN SO\1R                  5      5       r\@" \\" \5      5        \" \5      SP 5       r\." \
GR,                  5      SQ 5       r " SR SS\ 5      r " ST SU\ 5      r " SV SW\ 5      rSX r\% " SY SZ\ 5      5       rS[ r " S\ S]\ 5      r " S^ S_\(R@                  5      r " S` Sa\(R@                  5      r\0" \MSbScSd0Se9Sf 5       r\0" \MSgScSh0Se9Si 5       r\/" \MSjScSd0Se9Sk 5       r\/" \MSlScSh0Se9Sm 5       r " Sn So\ 5      r " Sp Sq\ 5      rSr r\% " Ss St\ 5      5       r " Su Sv\ 5      r " Sw Sx\ 5      r " Sy Sz\ 5      r " S{ S|\ 5      r\S}:X  a  \(GR\                  " 5         gg! \I a    SrH GNf = f)    N)ir)njitjit	vectorizeguvectorizeobjmode)typeserrorstypingcompilercgutils)type_inference_stage)
cpu_target)lower_constant)TestCasecaptured_stdouttemp_directoryoverride_configrun_in_new_process_in_cache_dirskip_if_typeguard)LoweringError)typeof_impltype_callablelower_builtin
lower_castoverloadoverload_attributeoverload_methodmodelsregister_modelboxunboxNativeValue	intrinsic
_Intrinsicregister_jitableget_cython_function_address	is_jittedoverload_classmethod)ConcreteTemplate	signatureinferinfer_globalAbstractTemplate   )IndexSeriesc                       \ rS rSrSrg)MyDummyJ    N__name__
__module____qualname____firstlineno____static_attributes__r5       n/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_extending.pyr3   r3   J       r<   r3   c                       \ rS rSrS rSrg)MyDummyTypeN   c                 f    [        U[        R                  5      (       a  SSKJn  UR
                  $ g )Nr   )
Conversion)
isinstancer	   Numbernumba.core.typeconvrC   safe)selfcontexttotyrC   s       r=   can_convert_toMyDummyType.can_convert_toO   s%    dELL))6??" *r<   r5   N)r7   r8   r9   r:   rK   r;   r5   r<   r=   r@   r@   N   s    #r<   r@   mydummyc                     [         $ N)mydummy_type)valcs     r=   typeof_mydummyrS   Z   s    r<   c                 &    U R                  US5      $ )z*
Implicit conversion from MyDummy to int.
*   )get_constant)rI   builderfromtyrJ   rQ   s        r=   mydummy_to_numberrY   _   s    
 b))r<   c                      [         $ rO   )rM   r5   r<   r=   	get_dummyr[   g   s    Nr<   c                 H    [        UR                  R                  5       5      $ rO   r#   rI   get_dummy_valuetypobjrR   s      r=   unbox_indexrb   n       qyy00233r<   c                    ^  " S S[         5      n " S S[        R                  5      nU" U 5      m[        R                  " U5      U4S j5       n[        U5      " [        R                  5        X!T4$ )Nc                       \ rS rSrSrg)(base_dummy_type_factory.<locals>.DynTypex   r5   Nr6   r5   r<   r=   DynTyperf   x       r<   rh   c                       \ rS rSrSrg),base_dummy_type_factory.<locals>.DynTypeType{   r5   Nr6   r5   r<   r=   DynTypeTyperk   {   ri   r<   rm   c                    > T$ rO   r5   )rQ   rR   dyn_type_types     r=   rS   /base_dummy_type_factory.<locals>.typeof_mydummy   s	    r<   )objectr	   Opaquer   registerr    r   OpaqueModel)namerh   rm   rS   ro   s       @r=   base_dummy_type_factoryrv   w   sh    & ell   %M'" # ; 2 23..r<   mydummy2c                 H    [        UR                  R                  5       5      $ rO   r]   r_   s      r=   unbox_index2ry      rc   r<   c                     [         erO   NotImplementedErrorxs    r=   func1r          
r<   c                     SS jnU$ )Nc                     U S [         R                  4;   a  [         R                  $ [        U [         R                  5      (       a  U $ g rO   )r	   noneint32rD   Floatr}   s    r=   typertype_func1_.<locals>.typer   s8    uzz"";;5;;''H (r<   rO   r5   )rI   r   s     r=   type_func1_r      s     Lr<   c                 :    U R                  UR                  S5      $ NrU   )rV   return_type)rI   rW   sigargss       r=   func1_nullaryr      s     44r<   c                 ,    S nU R                  XX#5      $ )Nc                 4    [         R                  " SU -  5      $ )N   )mathsqrtr}   s    r=   
func1_implfunc1_unary.<locals>.func1_impl   s    yyQr<   )compile_internal)rI   rW   r   r   r   s        r=   func1_unaryr      s      ##GCCr<   c                   @    \ rS rSrSr\" \R                  \5      /r	Sr
g)
PrintDummy   
print_itemr5   N)r7   r8   r9   r:   keyr+   r	   r   rP   casesr;   r5   r<   r=   r   r      s    
Cuzz<01Er<   r   r   c                     Uu  nU R                  U5      nUR                  UR                  S5      5      nUR                  U5        UR	                  U5        U R                  5       $ )Nzhello!)get_python_apiunserializeserialize_objectprint_objectdecrefr^   )rI   rW   r   r   r~   pyapistrobjs          r=   print_dummyr      s]    
CQ""7+Eu55h?@F	v	LL""$$r<   c                     [         erO   r{   condr~   ys      r=   wherer      r   r<   c                 0    [         R                  " XU5      $ )z0
Wrap np.where() to allow for keyword arguments
)npr   r   s      r=   np_wherer      s     88DQr<   c                     [        XUS9$ )N)r   r~   )r   r   s      r=   
call_wherer      s    a  r<   c                     [        U [        R                  5      (       aS  UR                  UR                  :w  a  [        R
                  " S5      e[        S XU4 5       5      (       a  S nU$ S nU$ g)z
Implement where() for arrays.
"x and y should have the same dtypec              3   >   #    U  H  oR                   S :H  v   M     g7f)CN)layout).0tys     r=   	<genexpr>(overload_where_arrays.<locals>.<genexpr>   s     7,ByyC,s   c                 ^   U R                   nUR                   U:w  d  UR                   U:w  a  [        S5      e[        R                  " U5      nU R                  nUR                  nUR                  nUR                  n[        U R                  5       H  n	XY   (       a  Xi   OXy   X'   M     U$ )z-
Fast implementation for C-contiguous arrays
%all inputs should have the same shape)shape
ValueErrorr   
empty_likeflatrangesize)
r   r~   r   r   rescfxfyfrfis
             r=   
where_impl)overload_where_arrays.<locals>.where_impl   s     

77e#qww%'7$%LMMmmA&YYVVVVXXtyy)A%'UBEBE *
r<   c                     U R                   nUR                   U:w  d  UR                   U:w  a  [        S5      e[        R                  " U5      n[        R                  " U 5       H  u  pVU(       a  X   OX%   XE'   M     U$ )z)
Generic implementation for other arrays
r   )r   r   r   r   ndenumerate)r   r~   r   r   r   idxrR   s          r=   r   r      sg     

77e#qww%'7$%LMMmmA& nnT2FC)*qvCH 3
r<   N)rD   r	   Arraydtyper
   TypingErrorallr   r~   r   r   s       r=   overload_where_arraysr      sn     $$$77agg$$%IJJ 74A,777< 
 K %r<   c                     [        U [        R                  5      (       d   X:w  a  [        R                  " S5      eS nU$ g)z 
Implement where() for scalars.
z!x and y should have the same typec                 P    U (       a  UOUn[         R                  " U5      nX4S'   U$ )z(
Scalar where() => return a 0-dim array
r5   )r   r   )r   r~   r   scalarrs        r=   r   *overload_where_scalars.<locals>.where_impl  s'     1!D--%CGJr<   N)rD   r	   r   r
   r   r   s       r=   overload_where_scalarsr     s>    
 dEKK((6$$%HII	  )r<   c                 8    [        U [        5      (       a  S nU$ g )Nc                     g)N   r5   args    r=   len_impl$overload_len_dummy.<locals>.len_impl-      r<   rD   r@   )r   r   s     r=   overload_len_dummyr   )  s     #{##	  $r<   c                 |    [        U [        [        45      (       a!  [        U[        [        45      (       a  S nU$ g g )Nc                     gr   r5   arg1arg2s     r=   dummy_add_impl*overload_add_dummy.<locals>.dummy_add_impl9  r   r<   rD   r@   MyDummyType2)r   r   r   s      r=   overload_add_dummyr   3  s?    $l344{L): :	 :4r<   c                 x    [        U [        5      (       a%  [        U[        R                  5      (       a  S nU$ g g )Nc                     [        SX5        g )Ndelprintra   r   s     r=   dummy_delitem_impl2overload_dummy_delitem.<locals>.dummy_delitem_implC  s    %"r<   rD   r@   r	   Integer)ra   r   r   s      r=   overload_dummy_delitemr   ?  s5    #{##
3(F(F	# "! )G#r<   c                 x    [        U [        5      (       a%  [        U[        R                  5      (       a  S nU$ g g )Nc                     US-   $ )Nrl   r5   r   s     r=   dummy_getitem_impl2overload_dummy_getitem.<locals>.dummy_getitem_implM  s    9r<   r   )ra   r   r   s      r=   overload_dummy_getitemr   I  s5    #{##
3(F(F	 "! )G#r<   c                     [        [        U [        5      [        U[        R                  5      [        U[        R                  5      /5      (       a  S nU$ g )Nc                     [        X5        g rO   r   ra   r   rQ   s      r=   dummy_setitem_impl2overload_dummy_setitem.<locals>.dummy_setitem_impl]  s	    #Or<   )r   rD   r@   r	   r   )ra   r   rQ   r   s       r=   overload_dummy_setitemr  S  sL    
sK(sEMM*sEMM*	
 	 "!r<   c                 .    [         R                  " X5      $ rO   operatoraddr   s     r=   call_add_operatorr  c      <<##r<   c                 
    X-   $ rO   r5   r   s     r=   call_add_binopr
  g  s
    ;r<   c                 |    [        U [        [        45      (       a!  [        U[        [        45      (       a  S nU$ g g )Nc                     gr   r5   r   s     r=   dummy_iadd_impl,overload_iadd_dummy.<locals>.dummy_iadd_implq  r   r<   r   )r   r   r  s      r=   overload_iadd_dummyr  k  s?    $l344{L): :	 :4r<   c                 .    [         R                  " X5      $ rO   r  r   s     r=   call_iadd_operatorr  w  r  r<   c                     X-  n U $ rO   r5   r   s     r=   call_iadd_binopr  {  s    LDKr<   c                     X	 g rO   r5   r   s     r=   call_delitemr    s    r<   c                 
    X   $ rO   r5   r   s     r=   call_getitemr    s	    8Or<   c                     X U'   g rO   r5   r   s      r=   call_setitemr    s	    Hr<   lengthc                     S nU$ )Nc                     [        U 5      $ rO   lenr   s    r=   imp#overload_method_length.<locals>.imp  s    3xr<   r5   )r   r  s     r=   overload_method_lengthr!    s     Jr<   c                 "    U R                  5       $ rO   )r  r}   s    r=   cache_overload_method_usecaser#    s    88:r<   c                      [        5       $ rO   r   r5   r<   r=   call_func1_nullaryr&    s	    7Nr<   c                     [        U 5      $ rO   r%  r}   s    r=   call_func1_unaryr(    s    8Or<   c                     [        U 5      $ rO   r  r}   s    r=   len_usecaser*    s    q6Mr<   c                     [        U 5        g rO   r   r}   s    r=   print_usecaser,    s	    	!Hr<   c                 
    X   $ rO   r5   )r~   r   s     r=   getitem_usecaser.    s	    6Mr<   c                 V    [         R                  " [         R                  " U 5      5      $ rO   )r   cossinr}   s    r=   npyufunc_usecaser2    s    66"&&)r<   c                     U R                   $ rO   )_datar}   s    r=   get_data_usecaser5    s    77Nr<   c                     U R                   $ rO   )_indexr}   s    r=   get_index_usecaser8    s    88Or<   c                     U R                   $ rO   )is_monotonic_increasingr}   s    r=   is_monotonic_usecaser;    s    $$$r<   c                     [        X5      $ rO   )r1   )dataindexs     r=   make_series_usecaser?    s    $r<   c                 $    U R                  X5      $ rO   )clip)r~   lohis      r=   clip_usecaserD    s    66">r<   c                      [         $ rO   r   r5   r<   r=   return_non_boxablerG    s    Ir<   c                      S n U $ )Nc                      [         $ rO   rF  r5   r<   r=   r  (overload_return_non_boxable.<locals>.imp  s    	r<   r5   )r  s    r=   overload_return_non_boxablerK    s     Jr<   c                 8    [        5       nUR                  U 5      $ rO   )rG  arange)szmods     r=   non_boxable_ok_usecaserP    s    

C::b>r<   c                      [        5       $ rO   )rG  r5   r<   r=   non_boxable_bad_usecaserR    s    r<   c                     g rO   r5   )fs    r=   mk_func_inputrU    s    r<   c                       \ rS rSrS rSrg)MkFuncTypingi  c                 ~    [        US   [        R                  5      (       d   e[        [        R                  /UQ76 $ Nr   )rD   r	   MakeFunctionLiteralr+   r   )rH   r   kwss      r=   genericMkFuncTyping.generic  s3    $q'5#<#<====+d++r<   r5   N)r7   r8   r9   r:   r\  r;   r5   r<   r=   rW  rW    s    ,r<   rW  c                      [        S 5        g )Nc                     U $ rO   r5   as    r=   <lambda>#mk_func_test_impl.<locals>.<lambda>  s    Ar<   )rU  r5   r<   r=   mk_func_test_implrd    s
    +r<   c                       \ rS rSrSrg)MyClassi  r5   Nr6   r5   r<   r=   rf  rf    r>   r<   rf  c                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )CallableTypeRefi  c                    > Xl         0 U l        / U l        [        [        U ]  SR                  U R                   5      5        g )Nzcallable_type_ref[{}])instance_typesig_to_impl_keycompiled_templatessuperrh  __init__format)rH   rj  	__class__s     r=   rn  CallableTypeRef.__init__  s>    *!"$ot- /55;VD<N<N5O	Qr<   c                    S nUR                   [        U 5          HV  n UR                  X#5      n[        US0 5      nX&;   a/  Xb   U R                  U'   U R
                  R                  U5          U$ MX     U$ ! [         a     Mi  f = f)N_compiled_overloads)
_functionstypeapplygetattrrk  rl  append	Exception)rH   rI   r   r[  res_sigtemplatecompiled_ovldss          r=   get_call_typeCallableTypeRef.get_call_type  s    **4:6H	"..3 ")3H"!M)4B4HD((1++228< * 7   s   A77
BBc                 P    [        U R                  R                  5       5      nUS4$ )NT)listrk  keys)rH   sigss     r=   get_call_signatures#CallableTypeRef.get_call_signatures  s%    D((--/0Tzr<   c                      U R                   U   $ rO   )rk  )rH   r   s     r=   get_impl_keyCallableTypeRef.get_impl_key  s    ##C((r<   )rl  rj  rk  )
r7   r8   r9   r:   rn  r}  r  r  r;   __classcell__rp  s   @r=   rh  rh    s    Q") )r<   rh  c                       \ rS rSrS rSrg)CallableTypeModeli  c                 D    [         R                  R                  XU5        g rO   )r   rt   rn  )rH   dmmfe_types      r=   rn  CallableTypeModel.__init__  s    ##Dw7r<   r5   N)r7   r8   r9   r:   rn  r;   r5   r<   r=   r  r    s    8r<   r  c                 "    U R                  5       $ rO   )r^   )rI   rW   r   pyvals       r=   constant_callable_typerefr  !  s    ""$$r<   c                 8    [        U [        5      (       a  S nU$ g )Nc                     g)N   >[= r5   ra   s    r=   r  overload_np_exp.<locals>.imp-  s    r<   r   ra   r  s     r=   overload_np_expr  )  s     #{##	 
 $r<   c                   r    \ rS rSrSrS r\R                  S 5       rS r	\R                  S 5       r
S rSrg	)
TestLowLevelExtendingi4  z,
Test the low-level two-tier extension API.
c                     [         n[        SS9" U5      nU R                  U" 5       S5        [        n[        SS9" U5      nU R                  U" S 5      S5        U R                  U" S5      S5        g )NTnopythonrU   g      2@g      @)r&  r   assertPreciseEqualr(  rH   pyfunccfuncs      r=   
test_func1 TestLowLevelExtending.test_func1<  sd    #T"6*,!T"6*dR0dS1r<   c                 $    U R                  5         g rO   )r  rH   s    r=   test_func1_isolated)TestLowLevelExtending.test_func1_isolatedE  s    r<   c                 b    U R                  [        [        5        U R                  [        5        g rO   )assertIs
type_func1r   assertIsNotNoner  s    r=   !test_type_callable_keeps_function7TestLowLevelExtending.test_type_callable_keeps_functionI  s    j+.Z(r<   c                     [         n[        [        R                  " 5       5      " U5      nU R	                  U" 5       S5        g )Ng      E@)r[   r   r	   float64r  r  s      r=   test_cast_mydummy'TestLowLevelExtending.test_cast_mydummyM  s.    U]]_&v..r<   c                 F   [         R                  " [        5      n[        R                  n[        R
                  nUR                  5         UR                  5         [        X#USS5      nU R                  [        S UR                  R                  5        5       5      5        g)zFmake sure make_function is passed to typer class as a literal
        r5   Nc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7frO   )rD   r	   rZ  )r   ra  s     r=   r   =TestLowLevelExtending.test_mk_func_literal.<locals>.<genexpr>^  s'      4A 1e77884s   '))r   run_frontendrd  r   typing_contexttarget_contextrefreshr   
assertTrueanytypemapvalues)rH   test_ir	typingctx	targetctx
typing_ress        r=   test_mk_func_literal*TestLowLevelExtending.test_mk_func_literalS  s     ''(9:--	--	))*.0
 #++224 	
r<   r5   N)r7   r8   r9   r:   __doc__r  r   run_test_in_subprocessr  r  r  r  r;   r5   r<   r=   r  r  4  sJ    2 $$ %) $$/ %/

r<   r  c                   T    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestPandasLikeie  zY
Test implementing a pandas-like Index object.
Also stresses most of the high-level API.
c                     [        [        R                  " S5      5      n[        SS9" [        5      nU R                  U" U5      S5        g )N   Tr  )r0   r   rM  r   r*  r  )rH   r   r  s      r=   test_index_lenTestPandasLike.test_index_lenk  s7    "))A,T";/a!,r<   c                 *   [        [        R                  " / SQ5      5      n[        SS9" [        5      nU R                  U" US5      S5        U" U[        SS 5      5      nU R                  U[         5        U R                  [        U5      SS/5        g )NrU      Tr  r/   r  r  )
r0   r   r   r   r.  r  sliceassertIsInstanceassertEqualr  rH   r   r  iis       r=   test_index_getitem!TestPandasLike.test_index_getitemp  st    "((;'(T"?3aQ/1eAtn%b%(bAr7+r<   c                 D   [        [        R                  " / SQ5      5      n[        SS9" [        5      nU" U5      nU R                  U[         5        U R                  UR                  [        R                  " [        R                  " UR                  5      5      5        g)z'
Check Numpy ufunc on an Index object.
r  Tr  N)
r0   r   r   r   r2  r  r  r4  r0  r1  r  s       r=   test_index_ufuncTestPandasLike.test_index_ufuncx  si     "((;'(T"#341Xb%("&&*ABr<   c                     [        [        R                  " / SQ5      5      n[        SS9" [        5      nU" U5      nU R                  X1R                  5        g )Nr  Tr  )r0   r   r   r   r5  r  r4  )rH   r   r  r=  s       r=   test_index_get_data"TestPandasLike.test_index_get_data  s>    "((;'(T"#34QxdGG$r<   c                     [        SS9" [        5      n/ SQS4/ SQS4/ S44 H=  u  p#[        [        R                  " U5      5      nU" U5      nU R                  XS5        M?     g )NTr  )r  rU      F)r  r  rU   )r   r;  r0   r   r   r  )rH   r  r  expectedr   gots         r=   test_index_is_monotonic&TestPandasLike.test_index_is_monotonic  sf     T"#78J!
F
 bhhv&'A(CS+!
r<   c                     [        [        R                  " / SQ5      5      n[        [        R                  " / SQ5      U5      n[        SS9" [        5      nU R                  U" U5      S5        g )Nr      r  g      ?g      @      @Tr  r  )r0   r   r   r1   r  r   r*  r  )rH   r   sr  s       r=   test_series_lenTestPandasLike.test_series_len  sM    "((9%&2::o.2T";/a!,r<   c                 8   [        [        R                  " / SQ5      5      n[        [        R                  " / SQ5      U5      n[        SS9" [        5      nU" U5      nU R                  U[         5        U R                  UR                  UR                  5        g )Nr  r  Tr  )
r0   r   r   r1   r  r   r8  r  r  r4  )rH   r   r  r  r  s        r=   test_series_get_index$TestPandasLike.test_series_get_index  si    "((9%&2::o.2T"#45Ahc5)cii)r<   c                 (   [        [        R                  " / SQ5      5      n[        [        R                  " / SQ5      U5      n[        SS9" [        5      nU" U5      nU R                  U[        5        U R                  UR                  [         5        U R                  UR                  R                  UR                  5        U R                  UR                  [        R                  " [        R                  " UR                  5      5      5        g)z(
Check Numpy ufunc on an Series object.
r  r/   r   r  Tr  N)r0   r   r   r1   int64r   r2  r  r7  r  r4  r  _valuesr0  r1  rH   r   r  r  sss        r=   test_series_ufunc TestPandasLike.test_series_ufunc  s     "((;'(288I&*T"#341Xb&)bii/biiooqww/

BFF266!))3D,EFr<   c                    [        [        R                  " / SQ5      5      n[        R                  " / SQ5      n[	        SS9" [
        5      nU" X!5      nU R                  U[        5        U R                  UR                  [         5        U R                  UR                  R                  UR                  5        U R                  UR                  U5        g )Nr  r  Tr  )r0   r   r   r  r   r?  r  r1   r7  r  r4  r  )rH   r   dr  r  s        r=   test_series_constructor&TestPandasLike.test_series_constructor  s    "((;'(JJ'T"#67Akc6*cjj%0cjj&&0ckk1%r<   c                    [        [        R                  " / SQ5      5      n[        [        R                  " / SQ5      U5      n[        SS9" [        5      nU" USS5      nU R                  U[        5        U R                  UR                  [         5        U R                  UR                  R                  UR                  5        U R                  UR                  [        R                  " / SQ5      5        g )Nr  r  Tr  皙?      @)r  r  r  )r0   r   r   r1   r  r   rD  r  r7  r  r4  r  r  r  s        r=   test_series_clipTestPandasLike.test_series_clip  s    "((;'(2::o.2T"<01c3b&)bii/biiooqww/

BJJ,GHr<   r5   N)r7   r8   r9   r:   r  r  r  r  r  r  r  r  r  r  r  r;   r5   r<   r=   r  r  e  s<    
-
,C%,-*G&Ir<   r  c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestHighLevelExtendingi  z#
Test the high-level combined API.
c                 D  ^ ^ [         n[        SS9" U5      mUU 4S jnU" SSSS9  U" SSS5        U" [        R                  " / SQ5      [        R                  " / SQ5      [        R                  " / S	Q5      5        T R                  [        R                  5       nT" [        R                  " / 5      [        R                  " / 5      [        R                  " / 5      5        S
S
S
5        T R                  S[        WR                  5      5        g
! , (       d  f       N4= f)z.
Test implementing a function with @overload.
Tr  c                  N   > [        U 0 UD6nT" U 0 UD6nTR                  X#5        g rO   )r   r  )r   kwargsr  r  r  rH   s       r=   check0TestHighLevelExtending.test_where.<locals>.check  s/    00H((C##H2r<   r  r  )r~   r   r   )TFTr  )r  r  r  Nr   )r   r   r   bool_r   assertRaisesr
   r   r  assertInstr	exception)rH   r  r  raisesr  s   `   @r=   
test_where!TestHighLevelExtending.test_where  s     T"6*	3
 	"dAqHH()HHYHHY	
 v112f"((2,bhhrl; 30#f6F6F2G	
 32s   AD
Dc                     [        SS9" [        5      nU R                  U" [        5       5      S5        U R                  U" SS/5      S5        g)z>
Test re-implementing len() for a custom type with @overload.
Tr  r   r  r  r   N)r   r*  r  r3   rH   r  s     r=   test_lenTestHighLevelExtending.test_len  sB     T";/gi 0"5q!fq1r<   c                     [        SS9" [        5      n[        5          U" [        5       5        U R	                  [
        R                  R                  5       S5        SSS5        g! , (       d  f       g= f)z@
Test re-implementing print() for a custom type with @overload.
Tr  zhello!
N)r   r,  r   r3   r  sysstdoutgetvaluer  s     r=   
test_print!TestHighLevelExtending.test_print  sL     T"=1')SZZ002J? s   ?A&&
A4c                    [         n[        SS9" U5      nU R                  U" SS5      S5        U R                  U" [        5       [        5       5      S5        U R                  U" [	        5       [	        5       5      S5        g	zG
Test re-implementing operator.add() for a custom type with @overload.
Tr  r/   r   r  rU   T   N)r  r   r  MyDummy2r3   r  s      r=   test_add_operator(TestHighLevelExtending.test_add_operator  sf     #T"6*aQ/hj(* =rB 	gi ;R@r<   c                    [         n[        SS9" U5      nU R                  U" SS5      S5        U R                  U" [        5       [        5       5      S5        U R                  U" [	        5       [	        5       5      S5        g	zI
Test re-implementing '+' for a custom type via @overload(operator.add).
Tr  r/   r   r  rU   r  N)r
  r   r  r  r3   r  s      r=   test_add_binop%TestHighLevelExtending.test_add_binop  sf      T"6*aQ/hj(* =rB 	gi ;R@r<   c                    [         n[        SS9" U5      nU R                  U" SS5      S5        U R                  U" [        5       [        5       5      S5        U R                  U" [	        5       [	        5       5      S5        gr  )r  r   r  r  r3   r  s      r=   test_iadd_operator)TestHighLevelExtending.test_iadd_operator  sf     $T"6*aQ/hj(* =rB 	gi ;R@r<   c                    [         n[        SS9" U5      nU R                  U" SS5      S5        U R                  U" [        5       [        5       5      S5        U R                  U" [	        5       [	        5       5      S5        gr  )r  r   r  r  r3   r  s      r=   test_iadd_binop&TestHighLevelExtending.test_iadd_binop!  sf     !T"6*aQ/hj(* =rB 	gi ;R@r<   c                    [         n[        SS9" U5      n[        5       nS n[        5        n U" US5        S S S 5        Ub  UeU R                  WR                  5       S5        g ! [         a  nUn S nAN?S nAff = f! , (       d  f       NM= f)NTr  A  zdel hello! 321
)r  r   r3   r   ry  r  r  rH   r  r  ra   eoutexcs          r=   test_delitem#TestHighLevelExtending.test_delitem/  s    T"6*i#c3  =G);<   s.   A>	A%%
A;/A61A>6A;;A>>
Bc                 p    [         n[        SS9" U5      nU R                  U" [        5       S5      S5        g )NTr  r)  i  )r  r   r  r3   r  s      r=   test_getitem#TestHighLevelExtending.test_getitem?  s/    T"6*gi 5yAr<   c                     [         n[        SS9" U5      n[        5       nS n[        5        n U" USS5        S S S 5        Ub  UeU R                  WR                  5       S5        g ! [         a  nUn S nAN?S nAff = f! , (       d  f       NM= f)NTr  r)  rl   z321 123
)r  r   r3   r   ry  r  r  r*  s          r=   test_setitem#TestHighLevelExtending.test_setitemD  s    T"6*i#c3$  =G5   s.   A?
A&&
A<0A72A?7A<<A??
Bc                 t   [        SS9" [        5      nSnU" U5      n[        U5      n[        R                  R	                  XC5        [        SS9" [
        5      nU R                  [        5       nU" 5         SSS5        [        WR                  5      nSnU R                  X5        g! , (       d  f       N7= f)zG
Test overloading whose return value cannot be represented in CPython.
Tr  
   Nzcannot convert native Module)r   rP  r   testingassert_equalrR  r  	TypeErrorr	  r
  r  )	rH   ok_cfuncnr  expect	bad_cfuncr  errmsg	expectmsgs	            r=   test_no_cpython_wrapper.TestHighLevelExtending.test_no_cpython_wrapperT  s     %&<=qk'*


,&'>?	y)VK *V%%&2	i(	 *)s   0B))
B7c                 X   SS jnSnSS jnU R                  [        R                  5       nU" U5      " SSSS5        SSS5        [        WR                  5      nU R                  X%5        U R                  S	U5        U R                  S
U5        U R                  SU5        SS jnU R                  [        R                  5       nU" U5      " SSSS5        SSS5        [        UR                  5      nU R                  X%5        U R                  SU5        U R                  SU5        U R                  SU5        SS jnU R                  [        R                  5       nU" U5      " SSSS5        SSS5        [        UR                  5      nU R                  X%5        U R                  SU5        U R                  SU;   5        U R                  SU5        U R                  SU5        SSKJnJ	n	  U R                  [        R                  5       nU" U5      " SSSS5        SSS5        [        UR                  5      nU R                  X%5        U R                  SU5        U R                  SU;   5        U R                  SU5        U R                  [        R                  5       nU" U	5      " SSSS5        SSS5        [        UR                  5      nU R                  X%5        U R                  SU5        U R                  SU;   5        U R                  SU5        U R                  SU5        SS jn
U R                  [        R                  5       nU" U
5      " SSSS5        SSS5        [        UR                  5      nU R                  X%5        U R                  SU5        U R                  SU;   5        U R                  SU5        U R                  SU5        SS jnU R                  [        R                  5       nU" U5      " SSSS5        SSS5        [        UR                  5      nU R                  X%5        U R                  SU5        U R                  SU;   5        U R                  SU5        S S jnU R                  [        R                  5       nU" U5      " SSSS5        SSS5        [        UR                  5      nU R                  X%5        U R                  SU5        U R                  SU5        S nU R                  [        R                  5       nU" U5      " SSSS5        SSS5        [        UR                  5      nU R                  X%5        U R                  SU5        U R                  SU5        g! , (       d  f       GNT= f! , (       d  f       GN= f! , (       d  f       GND= f! , (       d  f       GN= f! , (       d  f       GN = f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN^= f! , (       d  f       N= f)!ze
Tests that an overload which has a differing typing and implementing
signature raises an exception.
Nc                 d   ^ ^ SS jm[        T5      SU 4S jj5       n[        SS9U4S j5       nU$ )Nc                     g rO   r5   ra  brR   kws       r=   
myoverloadjTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.gen_ol.<locals>.myoverloadn      r<   c                    > T$ rO   r5   )ra  rG  rR   rH  impls       r=   _myoverload_implpTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.gen_ol.<locals>._myoverload_implq  s    r<   Tr  c                    > T" XX#S9  g )NrH  r5   )ra  rG  rR   r  rI  s       r=   foocTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.gen_ol.<locals>.foou  s    1)r<   rO   r   r   )rM  rN  rR  rI  s   `  @r=   gen_olVTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.gen_olm  sA     j! " $*  * Jr<   z-Typing and implementation arguments differ inc                     U S:  a  ggNr7  r/   r5   rF  s       r=   impl1UTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.impl1~      2vr<   r/   r   r  r  zkeyword argument default valuesz<Parameter "kw=12">z<Parameter "kw=None">c                     U S:  a  ggrX  r5   )ra  rG  rR   kwargs       r=   impl2UTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.impl2  r\  r<   zkeyword argument namesz<Parameter "kwarg=None">c                     [         S:  a  ggrX  r`  )zrG  rR   rH  s       r=   impl3UTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.impl3  s    2vr<   zargument nameskeywordz<Parameter "a">z<Parameter "z">)impl4impl5zFirst difference: 'z'c                     U S:  a  ggrX  r5   )ra  rG  rR   r  r+  rH  s         r=   impl6UTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.impl6  r\  r<   z<Parameter "d">z<Parameter "e">c                     U S:  a  ggrX  r5   )ra  rG  rH  s      r=   impl7UTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.impl7  r\  r<   z<Parameter "c">c                     U S:  a  ggrX  r5   )ra  rG  rR   rH  extra_kwargs        r=   impl8UTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.impl8  r\  r<   z<Parameter "extra_kwarg=None">c                     U S:  a  ggrX  r5   )ra  rG  rR   s      r=   impl9UTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling.<locals>.impl9  r\  r<   rO   )   )NN)
r  r
   r   r	  r
  r  assertFalseoverload_usecasesrf  rg  )rH   rU  sentinelrZ  r+  msgr_  rc  rf  rg  ri  rl  rp  rs  s                 r=   /test_typing_vs_impl_signature_mismatch_handlingFTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handlingg  s   	 C	 v112a5M!Q1% 3!++h$7=+S1-s3	 v112a5M!Q1% 3!++h$.40#6-s3	 v112a5M!Q1% 3!++h$&,c)*'-'-3v112a5M!Q1% 3!++h$&,c)*-s3v112a5M!Q1% 3!++h$&,c)*'-'-	 v112a5M!Q1% 3!++h$&,c)*'-'-	 v112a5M!Q1% 3!++h$&,c)*'-	 v112a5M!Q1% 3!++h$.46<	 v112a5M!Q1% 3!++h$.4-s3g 32 32 32 32 32  32  32 32 32sk   VV V/W(WW%W7 X	&X
V
V,/
V>
W
W"%
W47
X	
X
X)c                 X  ^ SS jmSSK Jn  [        T5      " U5        [        SS9U4S j5       nU R	                  [
        R                  5       nU" SS5        SSS5        [        WR                  5      nU R                  S	U5        U R                  S
U5        g! , (       d  f       NH= f)z
Tests that an overload which has a differing typing and implementing
signature raises an exception and uses VAR_POSITIONAL (*args) in typing
Nc                     g rO   r5   ra  rH  s     r=   rI  iTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_positional.<locals>.myoverload      r<   r/   )var_positional_implTr  c                    > T" XSSS9$ )N	      rQ  r5   ra  rG  rI  s     r=   rR  bTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_positional.<locals>.foo  s    aA"--r<   r  z)VAR_POSITIONAL (e.g. *args) argument kindz-offending argument name is '*star_args_token'rO   )
rw  r  r   r   r  r
   r   r	  r
  r  )rH   r  rR  r+  ry  rI  s        @r=   >test_typing_vs_impl_signature_mismatch_handling_var_positionalUTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_positional  s    	 	;01	d		. 
	. v112a1I 3!++A3GEsK	 32s   
B
B)c                 B   S
S jnS nU" US5      " SS5        U R                  [        R                  5       nU" U5      " SS5        SSS5        [        WR                  5      nU R                  SU5        U R                  SU5        SS	 jnU R                  [        R                  5       nU" U5      " SS5        SSS5        [        UR                  5      nU R                  SU5        U R                  SU5        g! , (       d  f       N= f! , (       d  f       NY= f)z:
Tests that an overload which uses **kwargs (VAR_KEYWORD)
c                 V   ^ SS jm[        TUS9" U 5        [        SS9U4S j5       nU$ )Nc                     g rO   r5   r~  s     r=   rI  vTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_keyword.<locals>.gen_ol.<locals>.myoverload  rK  r<   strictTr  c                    > T" U SS9$ )Nr  rQ  r5   r  s     r=   rR  oTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_keyword.<locals>.gen_ol.<locals>.foo  s    !!++r<   rO   rT  )rM  r  rR  rI  s      @r=   rU  bTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_keyword.<locals>.gen_ol  s7     Z/5$,  , Jr<   c                     SS jnU$ )Nc                     U $ rO   r5   r~  s     r=   rM  mTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_keyword.<locals>.ol1.<locals>.impl#      r<   r7  r5   )ra  r[  rM  s      r=   ol1_TestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_keyword.<locals>.ol1"  s     Kr<   Fr/   r   Nz1use of VAR_KEYWORD (e.g. **kwargs) is unsupportedz"offending argument name is '**kws'c                     S nU$ )Nc                     U $ rO   r5   )ra  r[  s     r=   rM  mTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_keyword.<locals>.ol2.<locals>.impl1  r  r<   r5   )ra  rH  rM  s      r=   ol2_TestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_keyword.<locals>.ol20  s     Kr<   )T)r   )r  r
   r   r	  r
  r  )rH   rU  r  r+  ry  r  s         r=   ;test_typing_vs_impl_signature_mismatch_handling_var_keywordRTestHighLevelExtending.test_typing_vs_impl_signature_mismatch_handling_var_keyword  s    

		 	sE1a v112a3K1 3!++I3O:C@	 v112a3K1 3!++I3O:C@# 32 32s   C?-D?
D
Dc                     [        [        R                  S5      SS j5       n[        S 5       n[        R
                  " S5      nU R                  U" U5      S5        g )NrR  c                     SS jnU$ )Nc                     U$ rO   r5   )r   a_kwargs     r=   rM  QTestHighLevelExtending.test_overload_method_kwargs.<locals>.fooimpl.<locals>.impl@  s    r<   r  r5   )r   r  rM  s      r=   fooimplCTestHighLevelExtending.test_overload_method_kwargs.<locals>.fooimpl>  s     Kr<   c                 `    U R                  5       U R                  S5      U R                  SS94$ )N      )r  )rR  As    r=   bar?TestHighLevelExtending.test_overload_method_kwargs.<locals>.barE  s(    557AEE"IquuRu'888r<   r  )r7  r  r  r  )r   r	   r   r   r   rM  r  )rH   r  r  Zs       r=   test_overload_method_kwargs2TestHighLevelExtending.test_overload_method_kwargs<  sV    	e	,	 
-	 
	9 
	9 IIaLQ.r<   c                     [        [        R                  S5      S 5       n[        S 5       n[        R
                  " S5      nU" U5        U R                  U" U5      S5        g )Nlitfooc                     [        U[        R                  5      (       a%  [        U[        R                  5      (       d  S nU$ g g )Nc                     U$ rO   r5   )r   rQ   s     r=   rM  XTestHighLevelExtending.test_overload_method_literal_unpack.<locals>.litfoo.<locals>.implV  s    "
r<   )rD   r	   r   Literal)r   rQ   rM  s      r=   r  JTestHighLevelExtending.test_overload_method_literal_unpack.<locals>.litfooO  s<     #u}}--!#u}}55#  K 6 .r<   c                 $    U R                  S5      $ N  )r  r  s    r=   r  GTestHighLevelExtending.test_overload_method_literal_unpack.<locals>.bar[  s    88F##r<   r/   r  )r   r	   r   r   r   zerosr  )rH   r  r  r  s       r=   #test_overload_method_literal_unpack:TestHighLevelExtending.test_overload_method_literal_unpackM  s]    	h	/		  
0		  
	$ 
	$ HHQKAQ(r<   c                 J    [         S 5       nU R                  U" 5       S5        g )Nc                  6    [         R                  " [        5      $ rO   )r   exprM   r5   r<   r=   test8TestHighLevelExtending.test_overload_ufunc.<locals>.testg  s    66'?"r<   r  )r   r  )rH   r  s     r=   test_overload_ufunc*TestHighLevelExtending.test_overload_ufuncc  s*     
	# 
	# 	,r<   c           	         [        [        S5      S 5       n[        S 5       n[        5       nU R	                  U" USS5      S5        U R	                  U" USSS5      S5        U R	                  U" USSSS	5      S
5        [        S 5       nU R	                  U" U5      S5        U R	                  U" USSS5      S5        U R	                  U" USSS5      S5        U R	                  U" USSS5      S5        g )Nmethod_starargc                     S nU$ )Nc                 
    XU4$ rO   r5   )ra   rQ   val2r   s       r=   get\TestHighLevelExtending.test_overload_method_stararg.<locals>._ov_method_stararg.<locals>.getp  s    4((r<   r5   )ra   rQ   r  r   r  s        r=   _ov_method_starargOTestHighLevelExtending.test_overload_method_stararg.<locals>._ov_method_starargn  s    ) Jr<   c                      U R                   " U6 $ rO   r  )ra   r   s     r=   rR  @TestHighLevelExtending.test_overload_method_stararg.<locals>.foou  s     %%t,,r<   r/   r   r/   r   r5   r  r/   r   r  r  r/   r   r  r  c                 r    U R                  SS5      U R                  SSS5      U R                  SSSS5      4$ )Nr/   r   r  r  r  r  s    r=   r  @TestHighLevelExtending.test_overload_method_stararg.<locals>.bar  sD     ""1a(""1a+""1aA. r<   )r  r  r  r  )r/   r   )r  r  )r/   r   )r  r  )r  r  )r/   r   )r  r   r@   r   r3   r  )rH   r  rR  ra   r  s        r=   test_overload_method_stararg3TestHighLevelExtending.test_overload_method_starargm  s   	&6	7	 
8	 
	- 
	- iS!Q4S!Q*L9S!Q1-~>		 
	 	H@	
 	Q4 /	
 	Q6"$5	
 	Q;')?	
r<   c                   ^  " S S[         R                  5      m[        TS5      S 5       n[        U4S j5       nSnU R	                  U" U5      [
        R                  " U5      5        [        S 5       nU R                  [        R                  5       nU" U5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)	Nc                       \ rS rSrSrg)ATestHighLevelExtending.test_overload_classmethod.<locals>.MyArrayi  r5   Nr6   r5   r<   r=   MyArrayr    s    r<   r  array_allocc                     S nU$ )Nc                 2    [         R                  " U5      nU$ rO   r   rM  )clsnitemsr   s      r=   rM  VTestHighLevelExtending.test_overload_classmethod.<locals>.ol_array_alloc.<locals>.impl  s    ii'
r<   r5   )r  r  rM  s      r=   ol_array_allocHTestHighLevelExtending.test_overload_classmethod.<locals>.ol_array_alloc  s     Kr<   c                 &   > TR                  U 5      $ rO   )r  )r  r  s    r=   rR  =TestHighLevelExtending.test_overload_classmethod.<locals>.foo  s    &&v..r<   r   c                 @    [         R                  R                  U 5      $ rO   )r	   r   r  )r  s    r=   no_classmethod_in_basePTestHighLevelExtending.test_overload_classmethod.<locals>.no_classmethod_in_base  s    ;;**622r<   z"Unknown attribute 'array_alloc' of)r	   r   r)   r   r  r   rM  r  r
   r   r  r	  r
  )rH   r  rR  r  r  r  r  s         @r=   test_overload_classmethod0TestHighLevelExtending.test_overload_classmethod  s    	ekk 	 
g}	5	 
6	 
	/ 
	/ FRYYv->? 
	3 
	3 v112f"6* 30  !	
 32s   	C
Cc                     [        [        5      S 5       n[        [        5      S 5       n[        S 5       nSnSUS   -   SUS   -   4nU R                  U" U6 U5        g )	Nc                 L    [        U [        R                  5      (       a  S nU$ g )Nc                     SU -   $ )N     @E@r5   r}   s    r=   rM  eTestHighLevelExtending.test_overload_callable_typeref.<locals>.callable_type_call_ovld1.<locals>.impl  s    !8Or<   )rD   r	   r   r~   rM  s     r=   callable_type_call_ovld1WTestHighLevelExtending.test_overload_callable_typeref.<locals>.callable_type_call_ovld1  s"    !U]]++$ ,r<   c                 L    [        U [        R                  5      (       a  S nU$ g )Nc                     SU -   $ )N42.5r5   r}   s    r=   rM  eTestHighLevelExtending.test_overload_callable_typeref.<locals>.callable_type_call_ovld2.<locals>.impl  s    !A:%r<   )rD   r	   UnicodeTyper  s     r=   callable_type_call_ovld2WTestHighLevelExtending.test_overload_callable_typeref.<locals>.callable_type_call_ovld2  s&    !U..//& 	 0r<   c                 .    [        U 5      [        U5      4$ rO   )rf  ra  rG  s     r=   rR  BTestHighLevelExtending.test_overload_callable_typeref.<locals>.foo  s    1:wqz))r<   )r  4r  r   r  r/   )r   rh  r   r  )rH   r  r  rR  r   r  s         r=   test_overload_callable_typeref5TestHighLevelExtending.test_overload_callable_typeref  s|    	/	"	 
#	 
/	"	 
#	 
	* 
	* 47NFT!W$45T
H5r<   r5   N)r7   r8   r9   r:   r  r  r  r  r  r   r#  r&  r.  r1  r4  rA  rz  r  r  r  r  r  r  r  r  r;   r5   r<   r=   r   r     sx    
62@AAAA= B
6 )&P4dL.*AX/"),-)
V
@6r<   r   c                     U R                   U R                  S      nX1:w  a  [        S5      eU R                  U R                  S      nXB:w  a  [        S5      eg )Nr   zcache not used)_cache_hits
signaturesAssertionError_cache_misses)r  
expect_hitexpect_misseshitmisss        r=   _assert_cache_statsr    sa    


E,,Q/
0C
-..u//23D-.. r<   c                   $    \ rS rSrSrS rS rSrg)TestOverloadMethodCachingi  Fc                     [        U R                  R                  5      U l        [	        SU R                  5         U R                  5         S S S 5        g ! , (       d  f       g = f)N	CACHE_DIR)r   rp  r7   
_cache_dirr   run_caching_overload_methodr  s    r=   test_caching_overload_method6TestOverloadMethodCaching.test_caching_overload_method  s>    ()@)@A[$//:,,. ;::s   A
A#c                    [        SSS9" [        5      nU R                  U" [        5       5      S5        [	        USS5        UR                  [        45      nUR                  5        Vs/ s H%  nUR                  S5      (       d  M  SU;   d  M#  UPM'     nnU R                  [        U5      S5         [        R                  " S5      nUR                  5       nUR                  [         X`R"                  4S	9nUR%                  5         UR'                  [        5       5        UR)                  5         U R                  UR*                  S5        UR-                  SS
9nU R                  US5        g s  snf ! [         a	    [        n Nf = f)NTr  cacher   r   r/   declarer!  spawn)targetr   )timeout)r   r#  r  r3   r  inspect_llvmrP   
splitlines
startswithr  r  multiprocessingget_contextAttributeErrorQueueProcessr  r  startputjoinexitcoder  )	rH   r  llvmirlndeclsctxqpr   s	            r=   r  5TestOverloadMethodCaching.run_caching_overload_method  sU   T./LMgi 0"5E1a(##\O4 '')
)}}Y' ,D,J ) 	 

 	UQ'	"!--g6C IIKKK.a5I  
 	
		gi	Q'eeAeb!+
  	"!C	"s$   *E0E0E04E5 5FF)r  N)r7   r8   r9   r:   _numba_parallel_test_r  r  r;   r5   r<   r=   r  r    s     "/
"r<   r  c                     [        SU5         U R                  5       n[        SSS9" [        5      nU" U5      nU R	                  U5        [        USS5        SSS5        g! , (       d  f       g= f)z@
Used by TestOverloadMethodCaching.test_caching_overload_method
r  Tr  r/   r   N)r   r  r   r#  r(  r  )r/  	cache_dirr   r  r   s        r=   r  r    sW     
i	0eegT./LMCj	c
E1a( 
1	0	0s   AA!!
A/c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestIntrinsici  c                 f  ^^ [         S 5       m[         S 5       m[        SS9U4S j5       n[        SS9U4S j5       nU R                  U" 5       S5        U R                  [        5       nU" 5         SSS5        U R                  S	WR                  R                  5        g! , (       d  f       N5= f)
z|
Verify that returning a None from codegen function is handled
automatically for void functions, otherwise raise exception.
c                 V    [         R                  " [         R                  5      nS nX#4$ )Nc                     g rO   r5   rI   rW   r+   r   s       r=   codegenBTestIntrinsic.test_void_return.<locals>.void_func.<locals>.codegen  rK  r<   r	   voidr   r  ra  r   r;  s       r=   	void_func1TestIntrinsic.test_void_return.<locals>.void_func  s#    **U[[)C <r<   c                 V    [         R                  " [         R                  5      nS nX#4$ )Nc                     g rO   r5   r:  s       r=   r;  FTestIntrinsic.test_void_return.<locals>.non_void_func.<locals>.codegen&  rK  r<   )r	   r   r?  s       r=   non_void_func5TestIntrinsic.test_void_return.<locals>.non_void_func"  s#    ++ekk*C <r<   Tr  c                     > T " S5        gNr/   r   r5   )r@  s   r=   call_void_func6TestIntrinsic.test_void_return.<locals>.call_void_func+  s    aLr<   c                     > T " S5        grH  r5   )rE  s   r=   call_non_void_func:TestIntrinsic.test_void_return.<locals>.call_non_void_func0  s    !r<   r   Nznon-void function returns None)r$   r   r  r  r   r  r
  ry  )rH   rI  rL  r+  rE  r@  s       @@r=   test_void_returnTestIntrinsic.test_void_return  s     
	  
	  
	  
	  
d		 
	 
d		 
	
 	)1-}-  .6H .-s   +B""
B0c                   ^ ^^^ SSK JnJnJnJn  U 4S jmS m[        TSS9U4S j5       nS nU" S	U" U5      U5      nU" U5      m[        S
S9UU4S j5       n[        R                  " S[        R                  S9n	[        5        n
U" U	5        U
R                  5       R                  5       nS	S	S	5        W
R                  5         [        [        [         U	5      5      nT R#                  UW5        g	! , (       d  f       NJ= f)zF
Usecase test: custom reinterpret cast to turn int values to pointers
r   )	CFUNCTYPEPOINTERc_floatc_intc                 l   >^  [        T [        R                  5      (       d   e[        U U4S j5       nU$ )Nc                    > TR                  U [        R                  5        [        U[        R
                  5      (       a  T" [        R                  5      nS nX#4$ g )Nc                 f    Uu  nUR                   nU R                  U5      nUR                  XF5      $ rO   )r   get_value_typeinttoptr)rI   rW   r+   r   srcrtypellrtypes          r=   r;  _TestIntrinsic.test_ll_pointer_cast.<locals>.unsafe_caster.<locals>.unsafe_cast.<locals>.codegenM  s5     $ ) 5 5")"8"8"?&//==r<   )r  r   ContextrD   r	   r   uintp)r  rZ  r   r;  result_typerH   s       r=   unsafe_castNTestIntrinsic.test_ll_pointer_cast.<locals>.unsafe_caster.<locals>.unsafe_castF  sJ    %%i@c5==11%ekk2C> <' 2r<   )rD   r	   CPointerr$   )r`  ra  rH   s   ` r=   unsafe_caster9TestIntrinsic.test_ll_pointer_cast.<locals>.unsafe_casterC  s4    k5>>::::( ( r<   c                     [        S5      e)Nznot callable from pythonr{   rZ  s    r=   unsafe_get_ctypes_pointerETestIntrinsic.test_ll_pointer_cast.<locals>.unsafe_get_ctypes_pointerY  s    %&@AAr<   Fr  c                    >^ [        U [        R                  5      (       a.  T" [        R                  " U R                  5      5      mU4S jnU$ g )Nc                 8   > T" U R                   R                  S9$ )Nrg  )ctypesr=  )r   ra  s    r=   
array_impldTestIntrinsic.test_ll_pointer_cast.<locals>.array_impl_unsafe_get_ctypes_pointer.<locals>.array_impla  s    &3::??;;r<   )rD   r	   r   rc  r   )arrtyperm  ra  rd  s     @r=   $array_impl_unsafe_get_ctypes_pointerPTestIntrinsic.test_ll_pointer_cast.<locals>.array_impl_unsafe_get_ctypes_pointer\  s=    '5;;//+ENN7==,IJ< "! 0r<   c                 B    [        U5       H  n[        X   5        M     g rO   )r   r   )ptrr<  r   s      r=   my_c_fun_raw8TestIntrinsic.test_ll_pointer_cast.<locals>.my_c_fun_rawg  s    1Xcf r<   NTr  c                 :   > T" U 5      nT" XR                   5        g rO   )r   )r   rs  my_c_funrh  s     r=   rR  /TestIntrinsic.test_ll_pointer_cast.<locals>.foop  s    +C0CS((#r<   r7  )r   )rl  rQ  rR  rS  rT  r   r   r   rM  float32r   r  r   closer  mapr	  r  )rH   rQ  rR  rS  rT  rp  rt  	prototyperR  r   bufr  r=  rw  rd  rh  s   `            @@@r=   test_ll_pointer_cast"TestIntrinsic.test_ll_pointer_cast<  s     	>=	,	B 
+E	:	" 
;	"	 dGG$4e<	\* 
d		$ 
	$
 ii"**-#H,,.++-C  			c#sm$% s   'C33
Dc                   ^ [         S 5       m[        SS9U4S j5       nU R                  U" S5      S5        [        R                  n[        U5      n[        R                  " U5      nUS-  nU R                  U[        U5      5        [        R                  " U5      nU R                  U[        U5      5        U R                  U" S5      U" S5      5        [        R                  " T5      nU R                  U[        U5      5        [        R                  " U5      nU R                  TU5        U R                  U[        U5      5        g)z)
Test serialization of intrinsic objects
c                     S nU" U5      nX24$ )Nc                     US   $ rY  r5   r:  s       r=   r;  CTestIntrinsic.test_serialization.<locals>.identity.<locals>.codegen      Awr<   r5   )rI   r~   r;  r   s       r=   identity2TestIntrinsic.test_serialization.<locals>.identity  s     A$C<r<   Tr  c                    > T" U 5      $ rO   r5   )r~   r  s    r=   rR  -TestIntrinsic.test_serialization.<locals>.foo  s    A;r<   r/   N)
r$   r   r  r%   _memor  pickledumpsloadsr  )	rH   rR  memo	memo_sizeserialized_foofoo_rebuiltserialized_identityidentity_rebuiltr  s	           @r=   test_serialization TestIntrinsic.test_serialization~  s   
 
	  
	  
d		 
	 	Q# I	  c*Q	CI.ll>2CI.QQ0 %ll84CI.!<<(;<h 01CI.r<   c                    S n[         R                  n[        U5      n[        SU5      nU R                  UR                  U5        [
        R                  " U5      nUS-  nU R                  U[        U5      5        AU R                  U[        U5      5        [         R                  R                  5         US-  nU R                  U[        U5      5        [
        R                  " U5      nU R                  UR                  U5        [
        R                  " U5      nU R                  UR                  UR                  5        g)z#
Test deserialization of intrinsic
c                     S nU" U5      U4$ )Nc                     US   $ rY  r5   r:  s       r=   r;  ATestIntrinsic.test_deserialization.<locals>.defn.<locals>.codegen  r  r<   r5   )rI   r~   r;  s      r=   defn0TestIntrinsic.test_deserialization.<locals>.defn  s     Q4= r<   rR  r/   N)r%   r  r  r  _defnr  r  r  _recentclearr  assertIsNot)rH   r  r  r  originalpickledrebuiltseconds           r=   test_deserialization"TestIntrinsic.test_deserialization  s    
	! I	 eT*hnnd+,,x(Q	CI. 	CI. 	  "Q	CI.,,w'- g&gmmV\\2r<   c                 P   [         S[        4S j5       nU R                  SUR                  5        U R                  SUR                  5        U R                  SUR
                  5        U R                  S[        0UR                  5        U R                  SUR                  5        g )Nra  c                 V    [         R                  " [         R                  5      nS nX#4$ )void_func docstringc                     g rO   r5   r:  s       r=   r;  @TestIntrinsic.test_docstring.<locals>.void_func.<locals>.codegen  rK  r<   r=  r?  s       r=   r@  /TestIntrinsic.test_docstring.<locals>.void_func  s%     **U[[)C <r<   znumba.tests.test_extendingr@  z/TestIntrinsic.test_docstring.<locals>.void_funcr  )	r$   intr  r8   r7   r9   assertDictEqual__annotations__r  )rH   r@  s     r=   test_docstringTestIntrinsic.test_docstring  s    		 C 	  
	  	5y7K7KLi&8&89J"//	1c3Z)B)BC.	0A0ABr<   r5   N)
r7   r8   r9   r:   rN  r~  r  r  r  r;   r5   r<   r=   r6  r6    s"    (IT@&D,/\&3PCr<   r6  c                        \ rS rSrS rS rSrg)TestRegisterJitablei  c                    ^ [         S 5       mU4S jn[        SS9" U5      nU" SS5      nU" SS5      nU R                  X45        g )Nc                 
    X-   $ rO   r5   )r~   r   s     r=   rR  .TestRegisterJitable.test_no_flags.<locals>.foo  s	    5Lr<   c                    > T" X5      $ rO   r5   )r~   r   rR  s     r=   r  .TestRegisterJitable.test_no_flags.<locals>.bar  s    q9r<   Tr  r/   r   )r&   r   r  )rH   r  cbarr=  r  rR  s        @r=   test_no_flags!TestRegisterJitable.test_no_flags  sO    		 
		 D!#&Q1aj%r<   c                 n  ^ [        SS9S 5       mU4S jnU R                  U" S5      R                  5       / SQ5        [        SS9" U5      nU R	                  [
        R                  5       nU" S	5        S S S 5        S
nU R                  U[        WR                  5      5        g ! , (       d  f       N6= f)NF)_nrtc                 .    [         R                  " U 5      $ rO   r  )r<  s    r=   rR  2TestRegisterJitable.test_flags_no_nrt.<locals>.foo  s    99Q<r<   c                    > T" U 5      $ rO   r5   )r<  rR  s    r=   r  2TestRegisterJitable.test_flags_no_nrt.<locals>.bar  s    q6Mr<   r  )r   r/   r   Tr  r   COnly accept returning of array passed into the function as argument)
r&   r  tolistr   r  r
   r   r  r	  r
  )rH   r  r  r  ry  rR  s        @r=   test_flags_no_nrt%TestRegisterJitable.test_flags_no_nrt  s    	u	%	  
&	 	 	Q)4D!#&v112fG 3 	 	c3v//01 32s   -	B&&
B4r5   N)r7   r8   r9   r:   r  r  r;   r5   r<   r=   r  r    s    &2r<   r  c                       \ rS rSr\R
                  " \SL S5      S 5       rS r\R
                  " \SL S5      S 5       r	Sr
g)TestImportCythonFunctioni  Nz&Only run if SciPy >= 0.19 is installedc                    ^ [        SS5      n[        R                  " [        R                  [        R                  5      nU" U5      m[	        SS9" U4S j5      nU R                  U" S5      S5        g )Nscipy.special.cython_specialj0Tr  c                    > T" U 5      $ rO   r5   )r~   _j0s    r=   rb  @TestImportCythonFunction.test_getting_function.<locals>.<lambda>  s	    #a&r<   r   r/   )r'   rl  rQ  c_doubler   r  )rH   addrfunctyper  r  s       @r=   test_getting_function.TestImportCythonFunction.test_getting_function  s[    **D
 ##FOOV__Etn$ 01A"r<   c                     U R                  [        5       n[        SS5        S S S 5        Sn[        R                  " U[        WR                  5      5      nU R                  U5        g ! , (       d  f       NL= f)N
fakemodulefakefunctionzNo module named '?fakemodule'?)r  ImportErrorr'   rematchr	  r
  r  )rH   r  ry  r  s       r=   test_missing_module,TestImportCythonFunction.test_missing_module  sZ    {+v'nE , /c&"2"234U# ,+s   A))
A7c                     U R                  [        5       n[        SS5        S S S 5        SnU R                  U[	        WR
                  5      5        g ! , (       d  f       N6= f)Nr  rR  zINo function 'foo' found in __pyx_capi__ of 'scipy.special.cython_special')r  r   r'   r  r	  r
  )rH   r  ry  s      r=   test_missing_function.TestImportCythonFunction.test_missing_function  sT    z*f'. +
- 	 	c&"2"234 +*s   A
A!r5   )r7   r8   r9   r:   unittestskipIfscr  r  r  r;   r5   r<   r=   r  r    sO    __R4Z!IJ# K#$ __R4Z!IJ	5 K	5r<   r  method_jit_option_check_nrtr  Tjit_optionsc                     S nU$ )Nc                 .    [         R                  " S5      $ Nr7  r  r  s    r=   r  +ov_method_jit_option_check_nrt.<locals>.imp0      yy}r<   r5   r  s     r=   ov_method_jit_option_check_nrtr  ,       Jr<   method_jit_option_check_no_nrtFc                     S nU$ )Nc                 .    [         R                  " S5      $ r  r  r  s    r=   r  .ov_method_jit_option_check_no_nrt.<locals>.imp:  r  r<   r5   r  s     r=   !ov_method_jit_option_check_no_nrtr  6  r  r<   attr_jit_option_check_nrtc                     S nU$ )Nc                 .    [         R                  " S5      $ r  r  r  s    r=   r  )ov_attr_jit_option_check_nrt.<locals>.impD  r  r<   r5   r  s     r=   ov_attr_jit_option_check_nrtr  @  r  r<   attr_jit_option_check_no_nrtc                     S nU$ )Nc                 .    [         R                  " S5      $ r  r  r  s    r=   r  ,ov_attr_jit_option_check_no_nrt.<locals>.impN  r  r<   r5   r  s     r=   ov_attr_jit_option_check_no_nrtr  J  r  r<   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestJitOptionsNoNRTiT  c                     SnU R                  [        R                  5       nU" U0 UD6  S S S 5        U R                  U[	        WR
                  5      5        g ! , (       d  f       N4= f)Nr  )r  r
   r   r  r	  r
  )rH   funcr   r  ry  r  s         r=   check_error_no_nrt&TestJitOptionsNoNRT.check_error_no_nrtW  sX    ' 	 v112f$!&! 3c3v//01 32s   	A
A'c                    ^ S m[        TSU0S9S 5       n[        U4S j5       nU(       a,  U R                  U" 5       [        R                  " S5      5        g U R                  U5        g )Nc                  .    [         R                  " S5      $ r  r  r5   r<   r=   dummy8TestJitOptionsNoNRT.no_nrt_overload_check.<locals>.dummyb  s    99R= r<   r  r  c                      S n U $ )Nc                  .    [         R                  " S5      $ r  r  r5   r<   r=   r   JTestJitOptionsNoNRT.no_nrt_overload_check.<locals>.ov_dummy.<locals>.dummyg  s    yy}$r<   r5   r   s    r=   ov_dummy;TestJitOptionsNoNRT.no_nrt_overload_check.<locals>.ov_dummye  s    % Lr<   c                     > T " 5       $ rO   r5   r  s   r=   rR  6TestJitOptionsNoNRT.no_nrt_overload_check.<locals>.fool  s
    7Nr<   r7  )r   r   r  r   rM  r  )rH   flagr  rR  r   s       @r=   no_nrt_overload_check)TestJitOptionsNoNRT.no_nrt_overload_checka  sh    	! 
%fd^	4	 
5	 
	 
	 ##CE299R=9##C(r<   c                 H    U R                  S5        U R                  S5        g )NTF)r  r  s    r=   test_overload_no_nrt(TestJitOptionsNoNRT.test_overload_no_nrtu  s    ""4(""5)r<   c                     [         S 5       nU R                  U" [        5      [        R                  " S5      5        [         S 5       nU R                  U[        5        g )Nc                 "    U R                  5       $ rO   )r  r}   s    r=   udt<TestJitOptionsNoNRT.test_overload_method_no_nrt.<locals>.udtz  s    0022r<   r7  c                 "    U R                  5       $ rO   )r  r}   s    r=   r  r    s    3355r<   r   r  rM   r   rM  r  rH   r  s     r=   test_overload_method_no_nrt/TestJitOptionsNoNRT.test_overload_method_no_nrty  sV    		3 
	3 	Gbiim<		6 
	6 	W-r<   c                     [         S 5       nU R                  U" [        5      [        R                  " S5      5        [         S 5       nU R                  U[        5        g )Nc                     U R                   $ rO   )r  r}   s    r=   r  ?TestJitOptionsNoNRT.test_overload_attribute_no_nrt.<locals>.udt  s    ...r<   r7  c                     U R                   $ rO   )r  r}   s    r=   r  r    s    111r<   r  r  s     r=   test_overload_attribute_no_nrt2TestJitOptionsNoNRT.test_overload_attribute_no_nrt  sV    		/ 
	/ 	Gbiim<		2 
	2 	W-r<   r5   N)
r7   r8   r9   r:   r  r  r  r  r  r;   r5   r<   r=   r  r  T  s    2)(*..r<   r  c                   @   ^  \ rS rSrU 4S jrS rS rS rS rSr	U =r
$ )TestBoxingCallingJITi  c                    > [         TU ]  5         [        S5      nUu  U l        U l        U l        U R	                  5       U l        g )Nrw   )rm  setUprv   rm   rh   ro   dyn_type)rH   manyrp  s     r=   r"  TestBoxingCallingJIT.setUp  s7    &z2=A:$,(:r<   c                 
  ^^^ SmSm[         U4S j5       m[        U R                  5      UU4S j5       n[        U R                  5      S 5       n[        S 5       nU" U R
                  5      nU R                  UTT-   5        g )Nr  rl   c                 ,   > U4S jn[        X5      nX24$ )Nc                 L   > Uu  nUR                  XDR                  T5      5      $ rO   r  ru  rI   rW   r   r   rQ   magic_offsets        r=   rM  KTestBoxingCallingJIT.test_unboxer_basic.<locals>.my_intrinsic.<locals>.impl  "    {{3(>??r<   r+   r  rQ   rM  r   r+  s       r=   my_intrinsic=TestBoxingCallingJIT.test_unboxer_basic.<locals>.my_intrinsic      @ C%C9r<   c                   > U	4S jnUR                   R                  [        R                  T5      /n[	        [        R
                  [        R                  5      nUR                  R                  X5U5      u  pg[        XvS9$ )Nc                    > T" U 5      $ rO   r5   r~   r0  s    r=   bridgeHTestBoxingCallingJIT.test_unboxer_basic.<locals>.unboxer.<locals>.bridge  s     $A&r<   is_error	rI   rV   r	   intpr+   voidptrr   call_jit_coder#   )
r`   ra   rR   r6  r   r   r9  r   magic_tokenr0  s
           r=   unboxer8TestBoxingCallingJIT.test_unboxer_basic.<locals>.unboxer  s^    '
 II**5::{CDDEMM5::6CGG11&tDMHs66r<   c                     UR                   R                  U[        R                  5      nUR                  R                  U5      $ rO   rW   ptrtointr   intp_tr   long_from_ssize_tr`   rQ   rR   r   s       r=   boxer6TestBoxingCallingJIT.test_unboxer_basic.<locals>.boxer  3     ))$$S'..9C77,,S11r<   c                     U $ rO   r5   r}   s    r=   passthru9TestBoxingCallingJIT.test_unboxer_basic.<locals>.passthru      Hr<   r$   r"   rm   r!   r   r#  r  )rH   r?  rG  rK  r,  r+  r>  r0  s        @@@r=   test_unboxer_basic'TestBoxingCallingJIT.test_unboxer_basic  s     		 
	 
t	 
	7 
!
	7 
T		2 
	2
 
	 
	 t}}%kL89r<   c                 T   [        U R                  5      S 5       n[        U R                  5      S 5       n[        S 5       nU R	                  [
        5       nU" U R                  5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                     S nUR                   R                  [        R                  S5      /n[	        [        R
                  [        R                  5      nUR                  R                  X5U5      u  pg[        XvS9$ )Nc                 (    U S:  a  [        S5      eU $ )Nr   cannot be x > 0r   r}   s    r=   r6  HTestBoxingCallingJIT.test_unboxer_raise.<locals>.unboxer.<locals>.bridge      q5$%677r<   r/   r8  r:  )r`   ra   rR   r6  r   r   r9  r   s           r=   r?  8TestBoxingCallingJIT.test_unboxer_raise.<locals>.unboxer  s]    
 II**5::q9:DEMM5::6CGG11&tDMHs66r<   c                     UR                   R                  U[        R                  5      nUR                  R                  U5      $ rO   rB  rF  s       r=   rG  6TestBoxingCallingJIT.test_unboxer_raise.<locals>.boxer  rI  r<   c                     U $ rO   r5   r}   s    r=   rK  9TestBoxingCallingJIT.test_unboxer_raise.<locals>.passthru  rM  r<   rT  
r"   rm   r!   r   r  r   r#  r  r	  r
  rH   r?  rG  rK  r  s        r=   test_unboxer_raise'TestBoxingCallingJIT.test_unboxer_raise  s    	t	 
	7 
!
	7 
T		2 
	2
 
	 
	 z*fT]]# +s6#3#34	
 +*   B
B'c                 
  ^^^ SmSm[         U4S j5       m[        U R                  5      S 5       n[        U R                  5      UU4S j5       n[        S 5       nU" U R
                  5      nU R                  UTT-   5        g )Nr  i8  c                 ,   > U4S jn[        X5      nX24$ )Nc                 L   > Uu  nUR                  XDR                  T5      5      $ rO   r)  r*  s        r=   rM  CTestBoxingCallingJIT.test_boxer.<locals>.my_intrinsic.<locals>.impl  r-  r<   r.  r/  s       r=   r0  5TestBoxingCallingJIT.test_boxer.<locals>.my_intrinsic  r2  r<   c                 H    [        UR                  R                  5       5      $ rO   r]   r_   s      r=   r?  0TestBoxingCallingJIT.test_boxer.<locals>.unboxer      qyy88:;;r<   c                 (  > U	4S jnUR                   R                  [        R                  T5      /n[	        [        R                  [        R                  5      nUR
                  R                  X5U5      u  pgUR
                  R                  U5      $ )Nc                    > T" U 5      $ rO   r5   r5  s    r=   r6  >TestBoxingCallingJIT.test_boxer.<locals>.boxer.<locals>.bridge  s    #A&r<   )rI   rV   r	   r;  r+   r   r=  rE  )
r`   rQ   rR   r6  r   r   r9  r   r>  r0  s
           r=   rG  .TestBoxingCallingJIT.test_boxer.<locals>.boxer  sh    ' II**5::{CDDEJJ

3CGG11&tDMH77,,S11r<   c                     U $ rO   r5   r}   s    r=   rK  1TestBoxingCallingJIT.test_boxer.<locals>.passthru  rM  r<   rN  )rH   r?  rG  rK  rr+  r>  r0  s        @@@r=   
test_boxerTestBoxingCallingJIT.test_boxer  s    		 
	 
t	 	< 
!	< 
T		2 
	2 
	 
	 T]]#K,67r<   c                 T   [        U R                  5      S 5       n[        U R                  5      S 5       n[        S 5       nU R	                  [
        5       nU" U R                  5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 H    [        UR                  R                  5       5      $ rO   r]   r_   s      r=   r?  6TestBoxingCallingJIT.test_boxer_raise.<locals>.unboxer  ri  r<   c                    S nUR                   R                  [        R                  S5      /n[	        [        R                  [        R                  5      nUR
                  R                  X5U5      u  pg[        R                  " UR                  UR
                  R                  SS9nUR                  R                  UR                  R                  U5      5         UR
                  R                  U5      n	UR                  R                  X5        S S S 5        UR                  R                  U5      $ ! , (       d  f       N)= f)Nc                 (    U S:  a  [        S5      eU $ )Nr   cannot do x > 0rU  r}   s    r=   r6  DTestBoxingCallingJIT.test_boxer_raise.<locals>.boxer.<locals>.bridge  rW  r<   r/   T)zfill)rI   rV   r	   r;  r+   r   r=  r   alloca_oncerW   pyobjif_thennot_rE  storeload)
r`   rQ   rR   r6  r   r   r9  r   retvalra   s
             r=   rG  4TestBoxingCallingJIT.test_boxer_raise.<locals>.boxer  s    
 II**5::q9:DEJJ

3CGG11&tDMH((AGGMMNF""199>>(#;<gg//4		, = 99>>&)) =<s   7D77
Ec                     U $ rO   r5   r}   s    r=   rK  7TestBoxingCallingJIT.test_boxer_raise.<locals>.passthru   rM  r<   rx  r]  r^  s        r=   test_boxer_raise%TestBoxingCallingJIT.test_boxer_raise	  s    	t	 	< 
!	< 
T		* 
	*  
	 
	 z*fT]]# +s6#3#34	
 +*ra  )rh   rm   r#  ro   )r7   r8   r9   r:   r"  rO  r_  rq  r  r;   r  r  s   @r=   r   r     s#    '(:T
>#8J
 
r<   r   c                     g rO   r5   r}   s    r=   with_objmode_cache_ov_exampler  +  s     	r<   c                   d    \ rS rSrSrSrS rS rS r\	S 5       r
\	S 5       r\	S	 5       rS
 rSrg)TestCachingOverloadObjmodei1  zLTest caching of the use of overload implementations that use
`with objmode`
Fc                 N    [         R                  " S[        R                  5        g )Nerror)warningssimplefilterr
   NumbaWarningr  s    r=   r"   TestCachingOverloadObjmode.setUp8  s    gv':':;r<   c                 .    [         R                  " 5         g rO   )r  resetwarningsr  s    r=   tearDown#TestCachingOverloadObjmode.tearDown;  s     r<   c                   ^^ [        U R                  R                  5      n[        SU5         S mU4S jm[	        [
        5      U4S j5       n[        SS9S 5       nT" S5      nU" S5      nU R                  XT5        [        SS9" UR                  5      nU" S5      nU R                  XT5        S S S 5        g ! , (       d  f       g = f)	Nr  c                 r    [         R                  " U 5      U -  n[         R                  R                  U5      $ rO   )r   rM  linalgnorm)r~   r   s     r=   realworkJTestCachingOverloadObjmode.test_caching_overload_objmode.<locals>.realworkB  s'    iilQ&yy~~c**r<   c                    > T" U 5      $ rO   r5   )r~   r  s    r=   python_codeMTestCachingOverloadObjmode.test_caching_overload_objmode.<locals>.python_codeG  s    {"r<   c                    > U4S jnU$ )Nc                 `   > [        SS9   T" U 5      nS S S 5        U$ ! , (       d  f       W$ = fNr  )r   r   )r~   r   r  s     r=   rM  qTestCachingOverloadObjmode.test_caching_overload_objmode.<locals>._ov_with_objmode_cache_ov_example.<locals>.implM  s,     9-'N .H .-H   	
-r5   )r~   rM  r  s     r=   !_ov_with_objmode_cache_ov_examplecTestCachingOverloadObjmode.test_caching_overload_objmode.<locals>._ov_with_objmode_cache_ov_exampleK  s    
 r<   Tr  c                     [        U 5      $ rO   )r  r}   s    r=   testcaseJTestCachingOverloadObjmode.test_caching_overload_objmode.<locals>.testcaseT  s    4Q77r<   rl   )	r   rp  r7   r   r   r  r   r  py_func)	rH   r4  r  r  r=  r  testcase_cachedr  r  s	          @@r=   test_caching_overload_objmode8TestCachingOverloadObjmode.test_caching_overload_objmode>  s    "4>>#:#:;	[)4+
# 34 5 8 8 c]F3-CS)".x/?/?@O!#&CS)= 544s   BB;;
C	c                    ^^ S mS m[        T5      U4S j5       n[        SS9U4S j5       nU" 5       nUR                  5       nX4:w  a  [        S5      eU$ )Nc                 2    [         R                  " X-   5      $ rO   r   sumr  s     r=   do_thisGTestCachingOverloadObjmode.check_objmode_cache_ndarray.<locals>.do_thisb      66!%= r<   c                 2    [         R                  " X-   5      $ rO   r  r  s     r=   do_somethingLTestCachingOverloadObjmode.check_objmode_cache_ndarray.<locals>.do_somethinge  r  r<   c                    > U4S jnU$ )Nc                 `   > [        SS9   T" X5      nS S S 5        U$ ! , (       d  f       W$ = fr  r  )ra  rG  r   r  s      r=   _do_something_implqTestCachingOverloadObjmode.check_objmode_cache_ndarray.<locals>.overload_do_something.<locals>._do_something_implj  s,    y)A * *)r  r5   )ra  rG  r  r  s      r=   overload_do_somethingUTestCachingOverloadObjmode.check_objmode_cache_ndarray.<locals>.overload_do_somethingh  s     &%r<   Tr  c                  l   > [         R                  " S5      n [         R                  " S5      nT" X5      $ )Nr  r  )ra  rG  r  s     r=   test_cachingLTestCachingOverloadObjmode.check_objmode_cache_ndarray.<locals>.test_cachingp  s(    		"A		"A%%r<   zincorrect result)r   r   r  r	  )r  r  r  r  r=  r  r  s        @@r=   check_objmode_cache_ndarray6TestCachingOverloadObjmode.check_objmode_cache_ndarray`  so    	!	! 
,		& 
 	& 
D		& 
	&
 n%%' = !344r<   c                 $    U R                  5         g rO   )r  )r  s    r=   *populate_objmode_cache_ndarray_check_cacheETestCachingOverloadObjmode.populate_objmode_cache_ndarray_check_cache~  s    '')r<   c                     U R                  5       n[        UR                  R                  5      S:w  a  [	        S5      e[        UR                  R
                  5      S::  a  [	        S5      eg )Nr   zunexpected cache misszunexpected missing cache hit)r  r  statscache_missesr	  
cache_hits)r  disps     r=   'check_objmode_cache_ndarray_check_cacheBTestCachingOverloadObjmode.check_objmode_cache_ndarray_check_cache  s[    ..0tzz&&'1, !899tzz$$%* !?@@ +r<   c                    [        U R                  R                  5      n[        SU5         [	        U R
                  U5        [	        U R                  U5      nS S S 5        U R                  WS   S5        g ! , (       d  f       N$= f)Nr  r*  r   )r   rp  r7   r   r   r  r  r  )rH   r4  r   s      r=    test_check_objmode_cache_ndarray;TestCachingOverloadObjmode.test_check_objmode_cache_ndarray  sp     #4>>#:#:;	[)4+?? 2<<iC 5 	Z!, 54s   -A77
Br5   N)r7   r8   r9   r:   r  r2  r"  r  r  classmethodr  r  r  r  r;   r5   r<   r=   r  r  1  sb     "<! *D  : * * A A-r<   r  c                        \ rS rSrS rS rSrg)TestMisci  c                 l   S nU R                  [        U5      5        U R                  [        [        U5      5      5        U R                  [        [	        U5      5      5        U R                  [        [	        SS9" U5      5      5        U R                  [        [        SS5      " U5      5      5        g )Nc                     g rO   r5   r}   s    r=   rR  $TestMisc.test_is_jitted.<locals>.foo  r  r<   T)parallelzvoid(float64[:])z(m))rv  r(   r  r   r   r   )rH   rR  s     r=   test_is_jittedTestMisc.test_is_jitted  s    	 	3(	$s),-9S>239d#;C#@ABk"4e<SAB	
r<   c                     [         S 5       n[         S 5       nU R                  U" 5       UR                  5       5        U R                  U" 5       UR                  5       5        g )Nc                  @    [         R                  " SSS9R                  $ )Nrl     )r   
fill_valuer   fullr   r5   r<   r=   standard_order:TestMisc.test_overload_arg_binding.<locals>.standard_order  s    775;;;r<   c                  @    [         R                  " SSS9R                  $ )Nr  rl   )r  r   r  r5   r<   r=   reversed_order:TestMisc.test_overload_arg_binding.<locals>.reversed_order  s    77c5;;;r<   )r   r  r  )rH   r  r  s      r=   test_overload_arg_binding"TestMisc.test_overload_arg_binding  sd     
	< 
	< 
	< 
	< 	 0.2H2H2JK 0.2H2H2JKr<   r5   N)r7   r8   r9   r:   r  r  r;   r5   r<   r=   r  r    s    

Lr<   r  c                        \ rS rSrS rS rSrg)TestOverloadPreferLiterali  c                   ^^ S mS mS n[        TSS9" U5        [        T5      " U5        [        U4S j5       nU" S5      u  p4nU R                  US5        U R                  US	5        U R                  US
5        [        U4S j5       nU" S5      u  p4nU R                  US5        U R                  US	5        U R                  US
5        g )Nc                     g rO   r5   r}   s    r=   
prefer_lit;TestOverloadPreferLiteral.test_overload.<locals>.prefer_lit  r  r<   c                     g rO   r5   r}   s    r=   non_lit8TestOverloadPreferLiteral.test_overload.<locals>.non_lit  r  r<   c                     [        U [        R                  5      (       a+  U R                  S:X  a  S nU$ [        R
                  " S5      eS nU$ )Nr/   c                     gr  r5   r}   s    r=   rM  ATestOverloadPreferLiteral.test_overload.<locals>.ov.<locals>.impl      %r<   literal valuec                     U S-  $ Nd   r5   r}   s    r=   rM  r        s7Nr<   rD   r	   IntegerLiteralliteral_valuer
   r   r  s     r=   ov3TestOverloadPreferLiteral.test_overload.<locals>.ov  F    !U1122??a'&K ,,_==#r<   Tprefer_literalc                 2   > T" S5      T" S5      T" U 5      4$ Nr/   r   r5   r~   r  s    r=   check_prefer_litATestOverloadPreferLiteral.test_overload.<locals>.check_prefer_lit      a=*Q-A>>r<   r  r     ,  c                 2   > T" S5      T" S5      T" U 5      4$ r  r5   r~   r  s    r=   check_non_lit>TestOverloadPreferLiteral.test_overload.<locals>.check_non_lit      1:wqz71:55r<   r  )r   r   r  )	rH   r  r  ra  rG  rR   r
  r  r  s	          @@r=   test_overload'TestOverloadPreferLiteral.test_overload  s    			 	D1"5"		? 
	? #1%aF#C C 		6 
	6  "aC C C r<   c                    S n[        [        SSS9" U5        [        [        SSS9" U5        [        S 5       nU" [        5       S5      u  p4nU R	                  US	5        U R	                  US
5        U R	                  US5        [        S 5       nU" [        5       S5      u  p4nU R	                  US5        U R	                  US
5        U R	                  US5        g )Nc                     [        U[        R                  5      (       a+  UR                  S:X  a  S nU$ [        R
                  " S5      eS nU$ )Nr/   c                     gr  r5   rH   r~   s     r=   rM  HTestOverloadPreferLiteral.test_overload_method.<locals>.ov.<locals>.impl  r  r<   r  c                     US-  $ r  r5   r  s     r=   rM  r    r  r<   r  )rH   r~   rM  s      r=   r  :TestOverloadPreferLiteral.test_overload_method.<locals>.ov  r  r<   method_prefer_literalTr  method_non_literalFc                 f    U R                  S5      U R                  S5      U R                  U5      4$ r  )r  r   r~   s     r=   r  HTestOverloadPreferLiteral.test_overload_method.<locals>.check_prefer_lit  s8     ++A.++A.++A. r<   r  r  r  r  c                 f    U R                  S5      U R                  S5      U R                  U5      4$ r  )r  r  s     r=   r
  ETestOverloadPreferLiteral.test_overload_method.<locals>.check_non_lit  s8     ((+((+((+ r<   r  r  )rH   r  r  ra  rG  rR   r
  s          r=   test_overload_method.TestOverloadPreferLiteral.test_overload_method  s    	 	0	
 	
 	- 	
 	
 
	 
	 #79a0aF#C C 		 
	  	1-aC C C r<   r5   N)r7   r8   r9   r:   r  r  r;   r5   r<   r=   r  r    s    (!T1!r<   r  c                       \ rS rSrS rSrg)TestIntrinsicPreferLiterali  c                   ^^ S n[        SS9" U5      m[        SS9" U5      m[        U4S j5       nU" S5      u  p4nU R                  US5        U R                  US5        U R                  US	5        [        U4S
 j5       nU" S5      u  p4nU R                  US5        U R                  US5        U R                  US	5        g )Nc                     [        [        R                  U5      n[        U[        R                  5      (       a,  UR
                  S:X  a  S nX#4$ [        R                  " S5      eS nX#4$ )Nr/   c                 p    UR                   S   nU R                  U5      n[        R                  " US5      $ )Nr   r  )r   rX  r   Constant)rI   rW   r+   r   atyper\  s         r=   r;  JTestIntrinsicPreferLiteral.test_intrinsic.<locals>.intrin.<locals>.codegen  s1     )q 1")"8"8"?!{{7F;;r<   r  c                     UR                   nU R                  U5      n[        R                  " US5      nUR	                  US   U5      $ )Nr  r   )r   rX  r   r$  mul)rI   rW   r+   r   r%  r\  int_100s          r=   r;  r&  %  sB    %11E%44U;G kk'37G";;tAw88r<   )r+   r	   r;  rD   r  r  r
   r   )rI   r~   r   r;  s       r=   intrin9TestIntrinsicPreferLiteral.test_intrinsic.<locals>.intrin  s`    EJJ*C!U1122??a'< <' ,,_==9
 |#r<   Tr  Fc                 2   > T" S5      T" S5      T" U 5      4$ r  r5   r  s    r=   r  CTestIntrinsicPreferLiteral.test_intrinsic.<locals>.check_prefer_lit/  r  r<   r  r  r  r  c                 2   > T" S5      T" S5      T" U 5      4$ r  r5   r	  s    r=   r
  @TestIntrinsicPreferLiteral.test_intrinsic.<locals>.check_non_lit8  r  r<   r  )r$   r   r  )	rH   r*  r  ra  rG  rR   r
  r  r  s	          @@r=   test_intrinsic)TestIntrinsicPreferLiteral.test_intrinsic  s    	$* d3F;
51&9		? 
	? #1%aF#C C 		6 
	6  "aC C C r<   r5   N)r7   r8   r9   r:   r0  r;   r5   r<   r=   r   r     s    )!r<   r   c                       \ rS rSrS rSrg)TestNumbaInternalOverloadsiB  c                   ^^ SmU4S jmUU4S jn[        S 5      R                  S5        [        R                  R                  R
                  R                  5       nUR                  5         UR                  nUR                  5        HI  u  pEUR                   H4  n[        USS5      (       d  M  U" UR                  UR                  5        M6     MK     g )Nr   c                   > U R                  S5      (       d  [        [        R                  U 5      n[        R
                  " U5      (       a  UR                  R                  5       nU Hy  nU(       d  M  UR                  5       nUR                  U 5      (       d  M4  U S:X  a  SnSU S3n0 n [        U0 U5        UR                  U 5      n[        R                  " U5      s  $    g g g ! [         a    TS:X  a  [        S5           g f = f)N_seedz
seed(seed)zdef z:
	passr   z%... skipped as cannot parse signature)r!  rw  r   randominspect	isbuiltinr  r   stripexecr  r+   SyntaxErrorr   )r~   thingdocstrlsl	fake_implfnDEBUGs          r=   sig_from_np_random[TestNumbaInternalOverloads.test_signatures_match_overloaded_api.<locals>.sig_from_np_randomS  s    <<$$		1-$$U++"]]557F#1!"B!}}Q// $%;)5B.22$i,@	$&
!A$(B$: *+qB+2+<+<R+@$@- $ , %$ (3 !0',z(- /: );+/!0s   .C))DDc                 >  > TS:X  a  [        SU  35        S nS n [        R                  " U 5      nUGb  [        R                  " U5      n[        UR                  R                  5       5      n[        UR                  R                  5       5      n[        US [        U5       U5       GH  u  pX:w  d  M  UR                  U	   nUR                  UR                  :X  a  TS:X  a  [        S5          g S[        U5      ;   a  TS:X  a  [        S5          g U R                  (       a   U R                  R!                  S	5      (       d?  U" XX65      nTS
:w  a%  TS:X  a  [        S5        U(       a  [        U5          g [        U5      eTS:X  a(  U R                  (       d  [        S5        O[        S5          g    TS:X  a  [        S5        g g g ! [         aG    [	        U SS5      =n(       a/  [	        [
        R                  US5      =n(       a  XP:X  a  T" U5      n GNf = f)Nr   z
Checking: c                    / nU  S[        U S5       S3nUR                  U5        UR                  SU 35        UR                  SU 35        [        R                  " U5      S   n[        R                  " U5      nUR                  [        R                  S   S5      nUR                  S	U S
U 35        SSR                  U5      -   n	U	$ )Nz from module 'r8   z' has mismatched sig.z    - expected: z    -      got: r/   r    zfrom :
)	rw  rx  r9  getsourcelinesgetfilereplacenumba__path__r)  )
r  overload_funcfunc_sigol_sigry  r  lineno
tmpsrcfilesrcfilemsgstrs
             r=   create_messagehTestNumbaInternalOverloads.test_signatures_match_overloaded_api.<locals>.checker.<locals>.create_messaget  s    v^GD,,G+H I+ +

1

-hZ89

-fX67 //>qA$__];
$,,U^^A->C

U7)1VH56		#.r<   r7   Fz.... skipped as positional only arguments found*z... skipped as contains *argsrO  r   z... INVALIDz$... skipped as no __module__ presentz... skipped as Numba internalz... OK)r   r9  r+   r   rw  r   r8  r  
parametersr  zipr  kindPOSITIONAL_ONLYr	  r8   r!  )r  rQ  rX  rR  fname
maybe_funcrS  r~   r   ra  rG  r0  rW  rD  rE  s                r=   checkerPTestNumbaInternalOverloads.test_signatures_match_overloaded_api.<locals>.checkerp  s   z
4&)* HA",,T2 # **=9,,1134**//12'3q6
A.DAv$//266Q%6%66$z % '8 !9! CF]$z %&E F! %)OO(,(B(B7(K(K)78@*J#(A:',z(-m(<'-(-f$)*4V*<$<#(A:+/??(- /8 )9 )..M(N %G /J zh "S $  A#D*e<<5<%,RYYu%EEzE%-'9%'@HAs   G AHHc                      g rO   r5   r5   r<   r=   rb  QTestNumbaInternalOverloads.test_signatures_match_overloaded_api.<locals>.<lambda>  s    dr<   r5   _overload_funcF)r   compilerO  corer   rI   r^  r  _registriesitems	functionsrw  r   re  )	rH   ra  tyctxregskvitemrD  rE  s	          @@r=   $test_signatures_match_overloaded_api?TestNumbaInternalOverloads.test_signatures_match_overloaded_apiD  s     	A:G	(V 	]##B'

!!))113   JJLDA4!1599DHHd&9&9: $ !r<   r5   N)r7   r8   r9   r:   rp  r;   r5   r<   r=   r3  r3  B  s    @;r<   r3  __main__rO   )r9  r   r  r  r  r"  rl  r  r  numpyr   llvmliter   rO  r   r   r   r   r   
numba.corer	   r
   r   r   r   numba.core.typed_passesr   numba.core.registryr   numba.core.imputilsr   numba.tests.supportr   r   r   r   r   r   numba.core.errorsr   r  numba.extendingr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   numba.core.typing.templatesr*   r+   r,   r-   r.   pdlike_usecaser0   r1   scipy.special.cython_specialspecialcython_specialr  r  rq   r3   rr   r@   rP   rM   rs   rS   rE   rY   r[   rt   rb   rv   r   r  mydummy_type_2ry   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   delitemr   getitemr   setitemr  r  r
  iaddr  r  r  r  r  r  r!  r#  r&  r(  r*  r,  r.  r2  r5  r8  r;  r?  rD  rG  rK  rP  rR  rU  rW  rd  rf  Callablerh  r  r  r  r  r  r  r   r  r  r  r6  r  r  r  r  r  r  r  r   r  r  r  r  r   r3  r7   mainr5   r<   r=   <module>r     s      
     	    < < ? ? 8 * .  ,     (  *--	f 	#%,, # 9%
) g  K&* '* { F.. / {4 4/" *A)L &h |4 4	 5!+.
 uuejj!5 " 5 uekk"D #D 2! 2 2
 |[)% *% ! 
%* *b 
% 2 
#  
(,,  
(

" " 
(

" " 
(

" "$ 
(-- $ h' (% 

 
 	 m,# , ,	f 	)enn )D  8** 8 !8 Wog. /  % !% 
"&& .
H .
b^IX ^IBI6X I6X/ %" %" %"P
)UCH UCp 2(++  2F5x00 5@ .VTN 1 ,64. /fe_=.( =.@T
8 T
n	 e- e- e-PLx L8\! \!~*! *!ZB; B;J zMMO KD  	Bs   :	R RR