
    sh                     P   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Jr  S SK	r
S SKJrJrJrJr  S SKJrJr  S SKJr  S SK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  S SKJ r!  S SK"r"\!S-
  r# S SK$r$ S SK&r&\RN                  " 5       S:H  r(S r)S r*S r+S1S jr,S2S jr-S3S jr.S3S jr/S4S jr0 " S S\5      r1 " S S\15      r2 " S S\15      r3 " S S\35      r4 " S S \5      r5 " S! S"\5      r6 " S# S$\"R*                  5      r7 " S% S&\"R*                  5      r8\S5S' j5       r9\S4S( j5       r:\S) 5       r;\\;4S* j5       r<S+ r= " S, S-\\"R*                  5      r> " S. S/\"R*                  5      r?\@S0:X  a  \"R                  " 5         gg! \% a    Sr$ GN f = f! \% a    Sr& GN*f = f)6    N)chain)StringIO)njitjittypeof	vectorize)typeserrors)_dispatcher)TestCasecaptured_stdout)as_dtype)
Dispatcher)overload)needs_lapackSerialMixin)_TIMEOUTg      N@armv7lc                     U $ N xs    o/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_dispatcher.pydummyr   '   s    H    c                 
    X-   $ r   r   r   ys     r   addr    +   s	    5Lr   c                     X-
  U-   $ r   r   r   r   zs      r   addsubr$   /       519r   c                     X-
  U-   $ r   r   r"   s      r   addsub_defaultsr'   3   r%   r   c                 
    XU4$ r   r   r"   s      r   star_defaultsr)   7   s    7Nr   c                 T    [        U [        R                  5      (       a  S nU$ S nU$ )Nc                 
    X-   $ r   r   r   s     r   implgenerated_usecase.<locals>.impl=   	    5Lr   c                 
    X-
  $ r   r   r   s     r   r,   r-   @   r.   r   
isinstancer	   Complexr   r   r,   s      r   generated_usecaser4   ;   s)    !U]]##	
 K	Kr   c                 X    [        U [        R                  5      (       a  S nU$ SS jnU$ )Nc                     U $ r   r   r   s    r   r,   #bad_generated_usecase.<locals>.implG       Hr   c                 
    X-
  $ r   r   r   s     r   r,   r7   J   r.   r   )   r0   r3   s      r   bad_generated_usecaser;   E   s)    !U]]##	
 K	Kr   c                 z  ^ [        U[        R                  R                  [        R                  R                  45      (       a  [
        R                  " S X4 5       6 mOR[        U[        R                  [        R                  45      (       a  [        U5      mO[        S[        U5      -  5      eSU4S jjnU$ )Nc              3   v   #    U  H/  n[         R                  " UR                  R                  5      v   M1     g 7fr   )npdtypename).0arys     r   	<genexpr>*dtype_generated_usecase.<locals>.<genexpr>Q   s+      %6.4s &(XXciinn%=%=.4s   79zUnhandled Type %sc                 B   > [         R                  " U R                  TS9$ Nr?   )r>   onesshape)abr?   	out_dtypes      r   _fn$dtype_generated_usecase.<locals>._fnX   s    wwqwwi00r   r   )r1   r	   miscNoneTypeOmittedr>   result_typeDTypeNumberClassr   	TypeErrortype)rJ   rK   r?   rM   rL   s       @r   dtype_generated_usecaserW   O   s    %%**--uzz/A/ABCCNN %6/0f%6 7		EEKK):):;	<	<UO	+d5k9::1 Jr   c                   &    \ rS rSr\" SS9rS rSrg)BaseTest^   Tnopythonc                 V   ^ ^^ UUU 4S jn[        S0 T R                  D6" T5      mTU4$ )Nc                  H   > T" U 0 UD6nT" U 0 UD6nTR                  X25        g r   )assertPreciseEqual)argskwargsexpectedresultfpyfuncselfs       r   check$BaseTest.compile_func.<locals>.checkc   s/    t.v.H''F##F5r   r   )r   jit_args)rf   re   rg   rd   s   `` @r   compile_funcBaseTest.compile_funcb   s)    	6  $-- (%xr   r   N)__name__
__module____qualname____firstlineno__dictri   rj   __static_attributes__r   r   r   rY   rY   ^   s    T"Hr   rY   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\\R(                  " \S5      S 5       5       r\R(                  " \S5      S 5       r\\R(                  " \S5      S 5       5       rS rS rSrg)TestDispatcherk   c                     [         S 5       n[         S 5       nU R                  X:H  S5        U R                  X:H  S5        U R                  US :H  S5        g )Nc                     U $ r   r   r   s    r   foo)TestDispatcher.test_equality.<locals>.foon       Hr   c                     U $ r   r   r   s    r   bar)TestDispatcher.test_equality.<locals>.barr   ry   r   TFr   assertEqual)rf   rw   r{   s      r   test_equalityTestDispatcher.test_equalitym   sb    		 
	 
	 
	 	T*U+e,r   c                     [         S 5       nU" S5        UR                  R                  5       u  nU R                  UR                  R
                  UR                  R
                  5        g )Nc                     U $ r   r   r   s    r   rw   +TestDispatcher.test_dyn_pyfunc.<locals>.foo~   ry   r      )r   	overloadsvaluesr~   entry_pointrm   py_func)rf   rw   crs      r   test_dyn_pyfuncTestDispatcher.test_dyn_pyfunc}   sU    		 
	 	A}}##%22CKK4J4JKr   c                 *    [         S 5       nU" 5         g )Nc                      gNr   r   r   r   r   rw   ,TestDispatcher.test_no_argument.<locals>.foo   s    r   r   rf   rw   s     r   test_no_argumentTestDispatcher.test_no_argument   s    		 
	 	r   c                 f   [        SS9" [        5      nU R                  U" SS5      [        SS5      5        U R                  U" SS5      [        SS5      5        U R                  U" SS5      [        SS5      5        U R                  U" SS5      [        SS5      5        [        S	SS9" [        5      nU R                  U" SS5      [        SS5      5        U R                  U" SS5      [        S
S5      5        U R                  [        5         U" SS5        S S S 5        g ! , (       d  f       g = f)NTr[   {   i  g(@gF@y        F@l    F: z(i4, i4)   -   )r   r    r_   assertRaisesrU   )rf   c_adds     r   test_coerce_input_types&TestDispatcher.test_coerce_input_types   s     T"3'c3S#?dD 13tT?CdE 2Ce4DEk3 7[#9NO J.s3c3S#?dD 13r2;?y)$ *))s   
D""
D0c                     [         S 5       nSnSnU R                  U" X#5      X#-   5        U R                  [        UR                  5      S5        U R                  U" X25      X2-   5        U R                  [        UR                  5      S5        U R                  U" X35      X3-   5        U R                  [        UR                  5      S5        U R                  U" SS5      X"-   5        U R                  [        UR                  5      SS5        g)	z8Test compiling new version in an ambiguous case
        c                 
    X-   $ r   r   rJ   rK   s     r   rw   6TestDispatcher.test_ambiguous_new_version.<locals>.foo   	    5Lr   r         ?         zdidn't compile a new versionN)r   assertAlmostEqualr~   lenr   )rf   rw   INTFLTs       r   test_ambiguous_new_version)TestDispatcher.test_ambiguous_new_version   s     
	 
	 s3}ci8S]]+Q/s3}ci8S]]+Q/s3}ci8S]]+Q/ 	s1ay#)4S]]+Q 1: 	;r   c                    ^ ^^ / m[         S 5       mUUU 4S jn[        S5       Vs/ s H  n[        R                  " US9PM     nnU H  nUR	                  5         M     U H  nUR                  5         M     T R                  T5        gs  snf )zb
Test that (lazy) compiling from several threads at once doesn't
produce errors (see issue #908).
c                     U S-   $ r   r   r   s    r   rw   %TestDispatcher.test_lock.<locals>.foo       q5Lr   c                     >  TR                  T" S5      S5        g ! [         a  n TR                  " U 5         S n A g S n A ff = fNr   r   )r~   	Exceptionappend)er
   rw   rf   s    r   wrapper)TestDispatcher.test_lock.<locals>.wrapper   s;    !  Q+ !a  !s    
A=A   )targetN)r   range	threadingThreadstartjoinassertFalse)rf   r   ithreadstr
   rw   s   `    @@r   	test_lockTestDispatcher.test_lock   s    
 		 
		! >C2YGY9##73YGAGGI AFFH   Hs   Bc                    [        S5      " [        5      nU R                  U" SS5      S5        U R                  [	        UR
                  5      SUR
                  5        [        SS/5      " [        5      nU R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" [        R                  " S5      S5      S	5        U R                  [        5       nU" S
S
5        S S S 5        U R                  S[        WR                  5      5        U R                  [	        UR
                  5      SUR
                  5        [        SS/5      " [        5      nU R                  U" [        R                  " S5      [        R                  " S5      5      S5        U R                  U" SS5      S5        [        / SQ5      " [        5      nU R                  [        5       nU" SS5        S S S 5        U R                  [        UR                  5      S5        U R                  S[        UR                  5      5        g ! , (       d  f       GN^= f! , (       d  f       Nk= f)N(int64,int64)r         @r   r   z(float64,float64)r   g      @      @              ?zNo matching definitionz(float32,float32)g      `>      ?g     ?)z(float32,float64)z(float64,float32)r          @zAmbiguous overloading for <function add [^>]*> \(float64, float64\):\n\(float32, float64\) -> float64\n\(float64, float32\) -> float64int64)r   r    r_   r~   r   r   r>   int32r   rU   assertInstr	exceptionfloat32assertRegexassertNotInrf   rd   cms      r   test_explicit_signatures'TestDispatcher.test_explicit_signatures   s    %#sQ/Q[[)1akk:"567<!Q+#sS1"((1+s 3S9y)Rb"I *.BLL0ABQ[[)1akk:$&9:;C@"**Q-F1C DcJ!V.@A " ##&( y)Rc3K * 	/	
 	#bll"341 *) *)s   *
I.
I
I
I+c                    SnU R                  [        5       n[        S5      " [        5        S S S 5        U R	                  US-  [        WR                  5      5        U R                  [        5       n[        S5      " [        5        S S S 5        U R	                  US-  [        UR                  5      5        U R                  [        5       n[        S5      " [        5        S S S 5        U R	                  US-  [        UR                  5      5        [        SSS	9" [        5        U R                  [        5       n[        SSS	9" [        5        S S S 5        U R	                  US-  [        UR                  5      5        g ! , (       d  f       GN\= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Nl= f)
NzKSignature mismatch: %d argument types given, but function takes 2 argumentsz()r   z(intc,)r   z(intc,intc,intc)r   Tforceobj)r   rU   r   r    r   r   r   )rf   tmplr   s      r   test_signature_mismatch&TestDispatcher.test_signature_mismatch   s0   $y)RIcN *dQhBLL 12y)R	N3 *dQhBLL 12y)R"#C( *dQhBLL 12D4 %y)R	D)#. *dQhBLL 12 *) *) *)
 *)s/   F3FF'=F8
F
F$'
F58
Gc                     [        S5      " [        5      nU R                  [        5       nU" SS5        S S S 5        U R	                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nz(intc,intc)r   zBNo matching definition for argument type(s) complex128, complex128)r   r    r   rU   r~   r   r   r   s      r   test_matching_error_message*TestDispatcher.test_matching_error_message  sV    s#y)Rb"I *R\\*2	3 *)s   
A##
A1c                 r   [         S 5       nUR                  S5        UR                  5         U R                  [        5       nUR                  S5        S S S 5        U R                  [        WR                  5      S5        U R                  [        UR                  5      S5        g ! , (       d  f       NY= f)Nc                     U $ r   r   rJ   s    r   rw   5TestDispatcher.test_disabled_compilation.<locals>.foo  ry   r   
(float32,)(int32,)compilation disabledr   )
r   compiledisable_compiler   RuntimeErrorr~   r   r   r   
signaturesrf   rw   raisess      r   test_disabled_compilation(TestDispatcher.test_disabled_compilation  s    		 
	 	L!|,KK
# -V--.0FGS^^,a0 -,s   B((
B6c                 >   [        SS/5      S 5       nU R                  [        5       nUR                  S5        S S S 5        U R	                  [        WR                  5      S5        U R	                  [        UR                  5      S5        g ! , (       d  f       NY= f)Nr   r   c                     U $ r   r   r   s    r   rw   BTestDispatcher.test_disabled_compilation_through_list.<locals>.foo  ry   r   z(complex64,)r   r   )	r   r   r   r   r~   r   r   r   r   r   s      r   &test_disabled_compilation_through_list5TestDispatcher.test_disabled_compilation_through_list  s    	lJ'	(	 
)	 |,KK' -V--.0FGS^^,a0 -,s   B
Bc                   ^ [        S/5      S 5       m[         U4S j5       nU R                  [        R                  5       nU" 5         S S S 5        SnU R	                  [        WR                  5      U5        g ! , (       d  f       N6= f)Nz(intp,)c                     U $ r   r   r   s    r   rw   ATestDispatcher.test_disabled_compilation_nested_call.<locals>.foo%  ry   r   c                  N   > T " S5        T " [         R                  " S5      5        g r   )r>   rH   )rw   s   r   r{   ATestDispatcher.test_disabled_compilation_nested_call.<locals>.bar)  s    F
Or   z?.*Invalid use of.*with parameters \(array\(float64, 1d, C\)\).*)r   r   r
   TypingErrorr   r   r   )rf   r{   r   mrw   s       @r   %test_disabled_compilation_nested_call4TestDispatcher.test_disabled_compilation_nested_call$  s~    	i[		 
	 
	 
	 v112fE 3 OV--.2	 32s   A::
Bc                   ^ S nSnU R                  [        5       n[        R                  " / 5        SSS5        U R	                  U[        WR                  5      5        [        SS9" U5      mU R                  T" / 5      / 5        [        SS9" U5      nU R                  [        5       nU" / 5        SSS5        U R	                  U[        UR                  5      5        [        SS9U4S j5       nU R                  U" 5       / 5        UR                  R                  5       u  nU R                  [        UR                  5      S5        g! , (       d  f       GN = f! , (       d  f       N= f)	z
Failure in computing the fingerprint cannot affect a nopython=False
function.  On the other hand, with nopython=True, a ValueError should
be raised to report the failure with fingerprint.
c                     U $ r   r   r   s    r   rw   4TestDispatcher.test_fingerprint_failure.<locals>.foo:  r8   r   z(cannot compute fingerprint of empty listNTr   r[   c                  T   > [        5         / n [        S5       H  nT" U 5      n M     U $ )N
   )objectr   )r   r   objmode_foos     r   r{   4TestDispatcher.test_fingerprint_failure.<locals>.barL  s)    HA2YN Hr   r   )r   
ValueErrorr   compute_fingerprintr   r   r   r   r~   r   r   r   lifted)rf   rw   errmsgr   
strict_foor{   r   r  s          @r   test_fingerprint_failure'TestDispatcher.test_fingerprint_failure4  s   	 <z*f++B/ +fc&"2"2344(-R"-$',
z*frN +fc&"2"234 
d		 
	 	#}}##%RYY+1 +* +*s   E+	E
E
E,c                 h   [        SS9S 5       nU R                  U" S5      S5        [        R                  n[        R                  R                  5         [        U5      n[        R                  " U5      nU R                  US-   [        U5      5        [        R                  " U5      nU R                  US-   [        U5      5        U R                  X5        [        U5      nAAU R                  US-   [        U5      5        [        R                  " U5      nU R                  U[        U5      5        [        R                  " U5      nA[        R                  R                  5         U R                  U[        U5      5        [        R                  " U5        U R                  U" 5       S5        g)z*
Test serialization of Dispatcher objects
Tr[   c                     U S-   $ r   r   r   s    r   rw   .TestDispatcher.test_serialization.<locals>.foo]  r   r   r   r   N)r   r~   r   _memo_recentclearr   pickledumpsloadsassertIsidweakrefref)	rf   rw   memo	memo_sizeserialized_foofoo_rebuiltid_orignew_foor  s	            r   test_serialization!TestDispatcher.test_serializationY  sW    
d		 
	 	Q#   "I	  c*QD	2 ll>2QD	2c' [/QD	2,,~."W+. kk'"  "CI. 	^$ceT"r   zUnaligned loads unsupportedc                 |  ^	^
^^ S m	[        SS9" T	5      m
Sm[        [        R                  " T5      5      m[        R                  n[        R
                  " 5       R                  U" 5       R                  -  n[        R                  " TU-  S-   US9nUS S R                  [        R
                  5      R                  TT5      nUSS  R                  [        R
                  5      R                  TT5      nUR                  nUR                  nU	U
UU4S jnU" S	U5        U" S
U5        U" SU5        U" SU5        g )Nc                 B    [         R                  R                  U S5      $ r   r>   linalgmatrix_powerr   s    r   rw   :TestDispatcher.test_misaligned_array_dispatch.<locals>.foo  s    99))!Q//r   Tr[   @   r   rG   c                    > [         R                  " T[         R                  S9R                  TT5      US S 2S S 24'   T" U5      nT" U5      n[         R                  R                  X#5        g rF   r>   arange
complex128reshapetestingassert_allcloser@   rJ   rb   gotrw   jitfoonrs       r   rg   <TestDispatcher.test_misaligned_array_dispatch.<locals>.check  sP    ii7??1EAadG1vH)CJJ&&x5r   C_contig_alignedF_contig_alignedC_contig_misalignedF_contig_misalignedr   intr>   sqrtint8r+  itemsizer*  viewr,  Trf   dtcounttmpr5  r7  r6  r8  rg   rw   r1  r2  r3  s            @@@@r   test_misaligned_array_dispatch-TestDispatcher.test_misaligned_array_dispatch  s   	0 d#C(
OWW((BDMM9iiE	AR0 s8==7??1E!!"gll2==9AA!QG+--133	6 	6 	 "23 "23#%89#%89r   c                 x  ^	^
^^ S m	[        SS9" T	5      m
Sm[        [        R                  " T5      5      m[        R                  n[        R
                  " 5       R                  U" 5       R                  -  n[        R                  " TU-  S-   US9nUS S R                  [        R
                  5      R                  TT5      nUSS  R                  [        R
                  5      R                  TT5      nUR                  nUR                  nSU	U
UU4S jjnU" S	USS
9  U" SUSS
9  U" SUSS
9  U" SUSS
9  g )Nc                 .    [         R                  " U 5      $ r   )r>   sumr   s    r   rw   ?TestDispatcher.test_immutability_in_array_dispatch.<locals>.foo  s    66!9r   Tr[   r&  r   rG   r'  c                   > [         R                  " T[         R                  S9R                  TT5      US S 2S S 24'   U(       a  SUR                  l        T" U5      nT" U5      n[         R                  R                  X45        g )NrG   F)r>   r*  r+  r,  flags	writeabler-  r.  )	r@   rJ   disable_write_bitrb   r0  rw   r1  r2  r3  s	        r   rg   ATestDispatcher.test_immutability_in_array_dispatch.<locals>.check  s_    ii7??1EAadG $)!1vH)CJJ&&x5r   r5  )rM  r6  r7  r8  )Fr9  r@  s            @@@@r   #test_immutability_in_array_dispatch2TestDispatcher.test_immutability_in_array_dispatch  s   	 d#C(
OWW((BDMM9iiE	AR0 s8==7??1E!!"gll2==9AA!QG+--133	6 	6 	 "2dK "2dK#%8 $	&#%8 $	&r   c                   ^ ^
^^^ S m
[        SS9" T
5      mU 4S jnSmSm[        R                  n[        R                  " 5       R                  U" 5       R                  -  n[        R
                  " TU-  S-   US9nUS S	 R                  [        R                  5      R                  TTTTTT5      nU" US
S5        USS  R                  [        R                  5      R                  TTTTTT5      nU" US
S5        UR                  nU" USS5        UR                  nU" USS5        U
UUU4S jn	U	" SU5        U	" SU5        U	" SU5        U	" SU5        g )Nc           
      \    [         R                  R                  U SSSSS S 2S S 24   S5      $ Nr   r   r"  r   s    r   rw   ITestDispatcher.test_misaligned_high_dimension_array_dispatch.<locals>.foo  s+    99))!Aq!Q1,<*=qAAr   Tr[   c                   > TR                  U R                  R                  U5        US:X  a&  TR                  U R                  R                  S5        US:X  a'  TR                  U R                  R                  S5        g g )NCTF)r~   rK  alignedc_contiguousf_contiguous)arrlayoutrX  rf   s      r   check_propertiesVTestDispatcher.test_misaligned_high_dimension_array_dispatch.<locals>.check_properties  sd    SYY..8}  !7!7>}  !7!7> r   i  r   r   rG   r'  rV  FrW  c                    > [         R                  " T[         R                  S9R                  TTTTTT5      US S 2S S 24'   T" U5      nT" U5      n[         R                  R                  X#5        g rF   r)  r/  s       r   rg   KTestDispatcher.test_misaligned_high_dimension_array_dispatch.<locals>.check  sZ    ii71aAq) adG1vH)CJJ&&x5r   r8  r5  r6  r7  )	r   r>   r<  r+  r=  r*  r>  r,  r?  )rf   r]  rA  rB  rC  r5  r7  r6  r8  rg   rw   r1  r2  r3  s   `         @@@@r   -test_misaligned_high_dimension_array_dispatch<TestDispatcher.test_misaligned_high_dimension_array_dispatch  sP   	B d#C(	? WW((BDMM9iiE	AR0 s8==7GAq!Q1% 	)35!!"gll2==9GAq!Q1% 	,c59+--)35133,c59	6 	6 	#%89 "23 "23#%89r   c                 D   S n[        SS9" U5      nU" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U R                  [        UR                  5      S5        [        R                  4[        R                  4[        R                  4/nU R                  UR                  U5        [        [        R                  4/SS9" U5      nU" [        R                  " S5      5        U" [        R                  " S5      5        U" [        R                  " S5      5        U R                  [        UR                  5      S5        [        R                  4/nU R                  UR                  U5        g )	Nc                     U $ r   r   r   s    r   rw   @TestDispatcher.test_dispatch_recompiles_for_scalars.<locals>.foo  r8   r   Tr[   y      ?       @r   Fr   r   )	r   r>   r+  r   bool_r~   r   r   r	   )rf   rw   r1  expected_sigss       r   $test_dispatch_recompiles_for_scalars3TestDispatcher.test_dispatch_recompiles_for_scalars
  s-   	 d#C(r}}V$%rxx|rxxV../3**,u{{nu{{nM**M: u'')*T:3?r}}V$%rxx|rxxV../3**,-**M:r   c                 6   [        SS9S 5       nU R                  [        5       n[        U5        S S S 5        [        WR                  5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  [        5       n[        [        5        S S S 5        [        UR                  5      nU R                  SU5        U R                  [        [        5       U5        g ! , (       d  f       N= f! , (       d  f       Ng= f)NTr[   c                     U $ r   r   r   s    r   rw   ITestDispatcher.test_dispatcher_raises_for_invalid_decoration.<locals>.foo)  ry   r   z8A jit decorator was called on an already jitted functionrw   z.py_funcz&The decorated object is not a function)r   r   rU   r   r   r   rY   rV   )rf   rw   r   err_msgs       r   -test_dispatcher_raises_for_invalid_decoration<TestDispatcher.test_dispatcher_raises_for_invalid_decoration&  s     
d		 
	 y)VH *f&&'F	QeW%j'*y)VM *f&&'>Hh(73 *) *)s   C9D
9
D

Dr   N)rl   rm   rn   ro   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r   unittestskipIf
_is_armv7lrD  rO  ra  rh  rn  rq   r   r   r   rs   rs   k   s    - L$;*!0$5L3$3
113 #,J+#Z __Z!>?$: @ $:L __Z!>?&& @&&P __Z!>?/: @ /:b;84r   rs   c                   *    \ rS rSrSrS rS rS rSrg)TestSignatureHandlingi<  z4
Test support for various parameter passing styles.
c                    U R                  [        5      u  pU" SSSS9  U" SSS5        U" SSSS9  U R                  [        UR                  5      S5        U R                  [        5       nU" SSSSS	9  S
S
S
5        U R                  S[        WR                  5      5        U R                  [        5       nU" 5         S
S
S
5        U R                  S[        UR                  5      5        U R                  [        5       nU" SSSS9  S
S
S
5        U R                  S[        UR                  5      5        g
! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NV= f)z/
Test passing named arguments to a dispatcher.
r   r   r   r#   r   r"   r   r:      r   r#   N%too many arguments: expected 3, got 4z'not enough arguments: expected 3, got 0r   zmissing argument 'z')
rj   r$   r~   r   r   r   rU   r   r   r   rf   rd   rg   r   s       r   test_named_args%TestSignatureHandling.test_named_argsA  s    $$V,a2aBQ"Q[[)1-y)Raa1 *=",,'	)y)RC *?",,'	)y)RaaL *,c",,.?@ *) *) *)s$   ,
D98E
	E9
E

E
E)c                    U R                  [        5      u  pU" SSSS9  U" SSS5        U" SSSS9  U" SSS9  U" SS5        U" SSS9  U" S5        U" SS9  U R                  [        5       nU" SSS	S
S9  SSS5        U R	                  S[        WR                  5      5        U R                  [        5       nU" 5         SSS5        U R	                  S[        UR                  5      5        U R                  [        5       nU" S	S
S9  SSS5        U R	                  S[        UR                  5      5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NV= f)z/
Test omitting arguments with a default value.
r   r   r   rv  r"   r#   r   r   r:   rw  rx  Nry  z0not enough arguments: expected at least 1, got 0zmissing argument 'x')rj   r'   r   rU   r   r   r   r{  s       r   test_default_args'TestSignatureHandling.test_default_argsX  s&    $$_5a2aBQ"a2aQa
y)Raa1 *=",,'	)y)RC *H",,'	)y)RQK *,c",,.?@ *) *) *)s$   ,
D88E	E8
E	
E
E(c                    U R                  [        5      u  pU" S5        U" SS5        U" SSS5        U" SSSS5        U" SSSSS5        U" SS9  U" SSS9  U" SSS9  U R                  [        5       nU" SSSS9  S	S	S	5        U R	                  S
[        WR                  5      5        U R                  [        5       nU" SSSS9  S	S	S	5        U R	                  S
[        UR                  5      5        U R                  [        5       nU" SSS9  S	S	S	5        U R	                  S
[        UR                  5      5        g	! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NV= f)z:
Test a compiled function with starargs in the signature.
r      r:   rw     r   r   rz  Nz!some keyword arguments unexpectedr  )rj   r)   r   rU   r   r   r   r{  s       r   test_star_args$TestSignatureHandling.test_star_argss  s)    $$]3aaaAaAqaAq!
Qa1y)RaaL *93r||;LMy)RaaL *93r||;LMy)Ra1I *93r||;LM *) *) *)s$   3	D?>	E	E!?
E
E!
E/r   N)	rl   rm   rn   ro   __doc__r|  r  r  rq   r   r   r   rt  rt  <  s    A.A6Nr   rt  c                   $    \ rS rSrSr\" SS9rSrg)TestSignatureHandlingObjectModei  z4
Sams as TestSignatureHandling, but in object mode.
Tr   r   N)rl   rm   rn   ro   r  rp   ri   rq   r   r   r   r  r    s     T"Hr   r  c                       \ rS rSrS rS rS rS rSS jrS r	S r
S	 rS
 r\R                  " \SL S5      \R                  " \SL S5      S 5       5       rS rS rSrg)TestDispatcherMethodsi  c                   ^ Sm[         U4S j5       nU R                  U" S5      S5        U R                  U" S5      S5        U R                  [        UR                  5      S5        SmU R                  U" S5      S5        UR                  5         U R                  [        UR                  5      S5        U R                  U" S5      S5        U R                  U" S5      S5        g )Nr   c                    > U T-   $ r   r   r   closures    r   rw   1TestDispatcherMethods.test_recompile.<locals>.foo      w;r   r   r   r   r   r   )r   r_   r~   r   r   	recompilerf   rw   r  s     @r   test_recompile$TestDispatcherMethods.test_recompile  s    		 
	A*C#.S^^,a0A*S^^,a0A*C#.r   c                 F  ^ Sm[        S5      U4S j5       nU R                  U" S5      S5        U R                  U" S5      S5        SmU R                  U" S5      S5        UR                  5         U R                  U" S5      S5        U R                  U" S5      S5        g )Nr   zint32(int32)c                    > U T-   $ r   r   r  s    r   rw   <TestDispatcherMethods.test_recompile_signatures.<locals>.foo  r  r   r   r   r   )r   r_   r  r  s     @r   test_recompile_signatures/TestDispatcherMethods.test_recompile_signatures  s    	^		 
	A*C!,A*A*C!,r   c                 B   [         S 5       nU" SS5        U" SS5        U" SS5        UR                  5       nU R                  [        U5      S5        UR	                  5        H9  nU R                  SU5        U R                  SU5        U R                  SU5        M;     g )Nc                 
    X-   $ r   r   explicit_arg1explicit_arg2s     r   rw   4TestDispatcherMethods.test_inspect_llvm.<locals>.foo       00r   r   r   r   rw   r  r  )r   inspect_llvmr~   r   r   r   )rf   rw   llvmsllvm_bcs       r   test_inspect_llvm'TestDispatcherMethods.test_inspect_llvm  s    		1 
	1 	Aq	CC   "UQ' ||~GMM%) MM/73MM/73 &r   c                     [         S 5       nU" SS5        U" SS5        U" SS5        UR                  5       nU R                  [        U5      S5        UR	                  5        H  nU R                  SU;   5        M     g )Nc                 
    X-   $ r   r   r  s     r   rw   3TestDispatcherMethods.test_inspect_asm.<locals>.foo  r  r   r   r   r   rw   )r   inspect_asmr~   r   r   
assertTrue)rf   rw   asmsasms       r   test_inspect_asm&TestDispatcherMethods.test_inspect_asm  su    		1 
	1 	Aq	CC  TA& ;;=COOESL) !r   c                 4   U(       a  SR                  [        U5      U5      n[        R                  SS5      S   n[        U5      nSR                  UUU5      nU R	                  [        U5      U5        U R                  [        UR                  5      5        g )Nz{}{}.r   r   z^digraph "CFG for \'_ZN{}{}{})	formatr   rl   splitr   r   r  callabledisplay)rf   cfgr   module_name
module_lenprefixs         r   _check_cfg_display(TestDispatcherMethods._check_cfg_display  s~    mmCL':GnnS!,Q/%
1889C9DF 	S6* 	-.r   c                    [         S 5       n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      nU" U5        U" U5        U" U5        UR                  5       nU R	                  [        U5      S5        UR                  5       u  pgnU R	                  [        XgU/5      [        [        S X#U/5      5      5        UR                  5        H  n	U R                  U	5        M     U R	                  [        [        UR                  5       5      5      S5        UR                  UR                  S   S9n	U R                  U	5        g )	Nc                 "    U R                  5       $ r   rH  	the_arrays    r   rw   3TestDispatcherMethods.test_inspect_cfg.<locals>.foo      ==?"r   r   r   r   r   r   r   r   c                     [        U 5      4$ r   )r   r   s    r   <lambda>8TestDispatcherMethods.test_inspect_cfg.<locals>.<lambda>	  s
    F1I<r   r   	signature)r   r>   rH   inspect_cfgr~   r   keyssetmapr   r  listr   )
rf   rw   a1a2a3cfgss1s2s3r  s
             r   test_inspect_cfg&TestDispatcherMethods.test_inspect_cfg  s!    
	# 
	# WWQZWWV_WWYBBB   	TA& yy{bb\*S!7""FG	I ;;=C##C( !T$++-0115 ooq(9o:$r   c                 *   [         S 5       n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      nU" U5        U" U5        U" U5        UR                  UR                  S   SS9nU R                  USS	9  g )
Nc                 "    U R                  5       $ r   r  r  s    r   rw   GTestDispatcherMethods.test_inspect_cfg_with_python_wrapper.<locals>.foo  r  r   r   r  r  r   python)r  show_wrappercpython)r   )r   r>   rH   r  r   r  )rf   rw   r  r  r  r  s         r   $test_inspect_cfg_with_python_wrapper:TestDispatcherMethods.test_inspect_cfg_with_python_wrapper  s     
	# 
	# WWQZWWV_WWYBBB ooq(9+3  5Y7r   c                 R   [         S 5       nU" SS5        UR                  [        5       5        [        UR                  UR
                  S      R                  5      n[        5        nUR                  5         S S S 5        UWR                  5       ;   d   eg ! , (       d  f       N%= f)Nc                 
    X-   $ r   r   r   s     r   rw   5TestDispatcherMethods.test_inspect_types.<locals>.foo)  r   r   r   r   r   )	r   inspect_typesr   r   r   r   type_annotationr   getvalue)rf   rw   rb   outs       r   test_inspect_types(TestDispatcherMethods.test_inspect_types(  s    		 
	 	Aq	(*% s}}S^^A%67GGH# 3<<>))) s   (B
B&c                 "   [         S 5       nU" S5        U" S5        [        5        nUR                  5         S S S 5        [        5        nUR                  UR                  S   S9  S S S 5        [        5        nUR                  UR                  S   S9  S S S 5        U R	                  WR                  5       WR                  5       WR                  5       -   5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Np= f)Nc                     U S-   $ r   r   r   s    r   rw   DTestDispatcherMethods.test_inspect_types_with_signature.<locals>.foo8  r   r   r   r   r   r  )r   r   r  r   r~   r  )rf   rw   totalfirstseconds        r   !test_inspect_types_with_signature7TestDispatcherMethods.test_inspect_types_with_signature7  s    		 
	 	AC%  %q(9:  &q(9:  	)5>>+;foo>O+OP   s#   C
C/9D 
C,/
C= 
DNz#please install the 'jinja2' packagez%please install the 'pygments' packagec                 
   [         S 5       nU" SS5        [        5          UR                  SS9nS S S 5        WR                  R	                  5        H1  u  p4SnUS    H  nSUS   ;   d  M  SnM     U R                  U5        M3     U R                  [        5       nUR                  [        5       SS	9  S S S 5        U R                  S
[        WR                  5      5        g ! , (       d  f       N= f! , (       d  f       NE= f)Nc                 
    X-   $ r   r   r   s     r   rw   <TestDispatcherMethods.test_inspect_types_pretty.<locals>.fooM  r   r   r   r   T)prettyFpygments_linesspan)filer  z$`file` must be None if `pretty=True`)r   r   r  annitemsr  r   r  r   r   r   r   )rf   rw   r  kv
span_foundliner   s           r   test_inspect_types_pretty/TestDispatcherMethods.test_inspect_types_prettyJ  s     
	 
	 	Aq	 ##4#0C  GGMMODAJ*+T!W$!%J , OOJ' $ z*f8:d; + 	<&**+	-  +*s   C#C4#
C14
Dc                    ^ [         S 5       mT" S5        T" S5        [        [        R                  " U4S jTR                   5       5      5      nTR                  5       nU R                  X5        g )Nc                     U S-   $ r   r   r   s    r   rw   ;TestDispatcherMethods.test_get_annotation_info.<locals>.foog  r   r   r   g?c              3   b   >#    U  H$  nTR                  U5      R                  5       v   M&     g 7fr   )get_annotation_infor  )rA   r   rw   s     r   rC   ATestDispatcherMethods.test_get_annotation_info.<locals>.<genexpr>n  s0      ,E5C -0,C,CA,F,L,L,N,N5Cs   ,/)r   rp   r   from_iterabler   r  r~   )rf   rb   rc   rw   s      @r   test_get_annotation_info.TestDispatcherMethods.test_get_annotation_infof  sm    		 
	 	AC++ ,E58^^,E E F((**r   c                    S n[        U5      n[        R                  " S//5      n[        R                  " SS/SS//SS9n[        R                  " SS/SS//SS9nU" US	S
5      nU" US	S
5      nU R                  SU" US
S
5      5        U" US	S
5      nU" US	S
5      n	U R                  Xh5        U R                  Xy5        g)a  
This test an issue with the dispatcher when an array that is both
C and F contiguous is supplied as the first signature.
The dispatcher checks for F contiguous first but the compiler checks
for C contiguous first. This results in an C contiguous code inserted
as F contiguous function.
c                     XU4   $ r   r   )Ar   js      r   re   KTestDispatcherMethods.test_issue_with_array_layout_conflict.<locals>.pyfunc{  s    T7Nr   r   g        r   g      @rV  )orderrW  r   r   N)r   r>   arrayr~   )
rf   re   cfuncary_c_and_fary_cary_fexp_cexp_fgot_cgot_fs
             r   %test_issue_with_array_layout_conflict;TestDispatcherMethods.test_issue_with_array_layout_conflicts  s    	 Fhhv&2r(RH-S92r(RH-S9ua#ua#U;156eQ"eQ"&&r   r   ) )rl   rm   rn   ro   r  r  r  r  r  r  r  r  r  rp  rq  jinja2pygmentsr  r  r  rq   r   r   r   r  r    sz    /$- 40*(/ %D8**Q& __Vt^%JK__X%'NO- P L-4+'r   r  c                   ,    \ rS rSrS rS rS rS rSrg) TestDispatcherFunctionBoundariesi  c                   ^^ [        SS9S 5       m[        SS9S 5       m[        SS9UU4S j5       nSS[        R                  " S5      /nU Vs/ s H  o3S-   PM	     nn[        X$5       H  u  pVU R	                  U" U5      U5        M     [        X$5       H  u  pVU R	                  T" TU5      U5        M      g s  snf )	NTr[   c                     U S-   $ r   r   r   s    r   add1JTestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.add1  r   r   c                     U " U5      $ r   r   )fnr   s     r   r{   ITestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.bar  s    a5Lr   c                    > T" TU 5      $ r   r   )r   r!  r{   s    r   rw   ITestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.foo  s    tQ<r   r   g333333&@r   )r   r>   r*  zipr_   )	rf   rw   inputsr   expected_resultsargexpectr!  r{   s	          @@r   test_pass_dispatcher_as_arg<TestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg  s    	d		 
	 
d		 
	 
d		  
	  T299R=)+126aE62v8KC##CHf5 9 v8KC##CcNF; 9 3s   B;c                    [        SS9S 5       nU" / SQ[        S 5      S9nU R                  US5        U" [        [        [	        S5      [	        S5      S S S	2   5      5      [        S
 5      S9nU R                  US5        U" [        [        [	        S5      [	        S5      S S S	2   5      5      [        S 5      S9nU R                  US5        g )NTr[   c                 L    U S   nU SS   H  nU" X#5      nUS:  d  M  UnM     U$ rS  r   )seqcmpfnrC  eachcmpvals        r   maximumPTestDispatcherFunctionBoundaries.test_dispatcher_as_arg_usecase.<locals>.maximum  s8    a&CABs)A:C   Jr   )r   r   r   r   c                 
    X-
  $ r   r   r   s     r   r  QTestDispatcherFunctionBoundaries.test_dispatcher_as_arg_usecase.<locals>.<lambda>  s    15r   )r2  r   r  r'  c                     U S   US   -
  $ Nr   r   r   s     r   r  r8        QqTAaD[r   )r   r   c                     U S   US   -
  $ r   r   r   s     r   r  r8    r;  r   )r   r   )r   r~   r  r(  r   )rf   r5  r0  s      r   test_dispatcher_as_arg_usecase?TestDispatcherFunctionBoundaries.test_dispatcher_as_arg_usecase  s    	d		 
	 l#.@*ABa d3uQxq$B$89 89;f%d3uQxq$B$89 89;f%r   c                 j    [        SS9S 5       n[        S 5      nU R                  U" U5      U5        g )NTr[   c                     U $ r   r   )r$  s    r   rw   RTestDispatcherFunctionBoundaries.test_dispatcher_can_return_to_python.<locals>.foo  s    Ir   c                     U $ r   r   r   s    r   r  WTestDispatcherFunctionBoundaries.test_dispatcher_can_return_to_python.<locals>.<lambda>  s    1r   r}   )rf   rw   r$  s      r   $test_dispatcher_can_return_to_pythonETestDispatcherFunctionBoundaries.test_dispatcher_can_return_to_python  s9    	d		 
	 R"%r   c                    ^ [        SS9S 5       m[        SS9U4S j5       n[        SS9U4S j5       n[        SS9S 5       nU R                  U" TX4S5      S5        U R                  U" TTT/S5      S	5        g )
NTr[   c                     U S-   $ r   r   r   s    r   oneMTestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg.<locals>.one  r   r   c                     > T" T" U 5      5      $ r   r   r   rH  s    r   twoMTestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg.<locals>.two  s    s1v;r   c                 ,   > T" T" T" U 5      5      5      $ r   r   rK  s    r   threeOTestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg.<locals>.three  s    s3q6{##r   c                 B    U S   " U5      U S   " U5      U S   " U5      4$ )Nr   r   r   r   )fnsr   s     r   choosePTestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg.<locals>.choose  s'    q6!9c!fQiQ22r   r   )r   r   r   )r   r   r   r}   )rf   rL  rO  rS  rH  s       @r   test_dispatcher_in_sequence_arg@TestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg  s    	d		 
	 
d		 
	 
d		$ 
	$ 
d		3 
	3 	c 115yAc33Y?r   r   N)	rl   rm   rn   ro   r-  r=  rD  rU  rq   r   r   r   r  r    s    <2&&&@r   r  c                        \ rS rSrS rS rSrg)TestBoxingDefaultErrori  c                 >   S n[         R                  " S5      4n[        U5      " U5      R                  U   nU R	                  [
        5       nUR                  S 5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nc                     g r   r   r   s    r   rw   <TestBoxingDefaultError.test_unbox_runtime_error.<locals>.foo  s    r   
dummy_typezcan't unbox dummy_type type)
r	   Dummyr   r   r   rU   r   r~   r   r   )rf   rw   argtyscresr   s        r   test_unbox_runtime_error/TestBoxingDefaultError.test_unbox_runtime_error  s    	++l+- F|C **62y)V T" * 	V--.0MN	 *)s   B
Bc                     [         S 5       nU R                  [        5       nU" 5         S S S 5        SnU R                  [	        WR
                  5      U5        g ! , (       d  f       N6= f)Nc                      [         $ r   )rp  r   r   r   rw   :TestBoxingDefaultError.test_box_runtime_error.<locals>.foo  s    Or   z/cannot convert native Module.* to Python object)r   r   rU   r   r   r   )rf   rw   r   pats       r   test_box_runtime_error-TestBoxingDefaultError.test_box_runtime_error  sW    		 
	y)VE *?V--.4 *)s   A
A(r   N)rl   rm   rn   ro   r`  rf  rq   r   r   r   rX  rX    s    O5r   rX  c                   N    \ rS rSrSrS rS rS r\R                  S 5       r
Srg)	TestNoRetryFailedSignaturei  z?Test that failed-to-compile signatures are not recompiled.
    c                    UR                   nU R                  [        UR                  5      S5        U R	                  [
        R                  5         U" S5        S S S 5        U R                  [        UR                  5      S5        U R	                  [
        R                  5         U" S5        S S S 5        U R                  [        UR                  5      S5        U R	                  [
        R                  5         U" S5        S S S 5        U R                  [        UR                  5      S5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NV= f)Nr   r   r   r   )	_compilerr~   r   _failed_cacher   r
   r   )rf   funcfcoms      r   run_test#TestNoRetryFailedSignature.run_test  s    ~~T//0!4v112G 3T//0!4v112G 3T//0!4v112I 3T//0!4 32 32 32s$   	D2&	E;	E2
E 
E
E"c                 D    [        SS9S 5       nU R                  U5        g )NTr[   c                     U S   $ r:  r   r   s    r   rw   8TestNoRetryFailedSignature.test_direct_call.<locals>.foo      Q4Kr   r   ro  r   s     r   test_direct_call+TestNoRetryFailedSignature.test_direct_call
  s'    	d		 
	 	cr   c                    ^^ [        SS9S 5       m[        SS9U4S j5       m[        SS9UU4S j5       nU R                  U5        g )NTr[   c                     U S   $ r:  r   r   s    r   r{   8TestNoRetryFailedSignature.test_nested_call.<locals>.bar  rt  r   c                    > T" U 5        g r   r   )r   r{   s    r   foobar;TestNoRetryFailedSignature.test_nested_call.<locals>.foobar  s
    Fr   c                 &   > T" U 5      T" U 5      -   $ r   r   )r   r{   r|  s    r   rw   8TestNoRetryFailedSignature.test_nested_call.<locals>.foo  s    q6F1I%%r   ru  )rf   rw   r{   r|  s     @@r   test_nested_call+TestNoRetryFailedSignature.test_nested_call  sZ    	d		 
	 
d		 
	 
d		& 
	& 	cr   c                 ~   ^  U 4S jnU" SS5      nU" SS5      nT R                  US5        T R                  US5        g )Nc                   >^^	^
 SnSS0m
S n[        U5      U
U4S j5       n[        SS9S 5       nU4U	4S	 jjm	T	" U4U-  5      n[        R                  " S
5      nT(       a[  TR	                  [
        R                  5       nU" US5        S S S 5        TR                  S[        WR                  5      5        T
S   $ U" US5        T
S   $ ! , (       d  f       NF= f)Nr   cr   c                      S5       e)Nunreachabler   r   s    r   triggerKTestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.trigger,  s    '-'qr   c                 ^   > TS==   S-  ss'   T(       a  [         R                  " S5      eS $ )Nr  r   invoke_failedc                     U $ r   r   r   s    r   r  `TestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.ol_trigger.<locals>.<lambda>5  s    r   )r
   r   )r   counter
would_fails    r   
ol_triggerNTestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.ol_trigger/  s-     ! ,,_==""r   Tr[   c                     g r   r   )r  r   s     r   identITestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.ident7  s    r   c                 f   >^^ U S   U S S smn[        SS9UU4S j5       nU(       a  T" X#5      $ U$ )Nr'  Tr[   c                 <   > T" X5        U S==   T" U5      -  ss'   g r:  r   )r  r   innertab_heads     r   assign`TestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.chain_assign.<locals>.assign>  s    #MFhqk)Fr   r   )fsr  tab_tailr  r  chain_assigns    `  @r   r  PTestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.chain_assign;  sE    %'VRW"(d#* $* '99!Mr   r   r   r  )
r   r   r>   rH   r   r
   r   r   r   r   )fieldr  r  r  r  r  r   r  r   r  r  rf   s    `       @@r   rg   :TestNoRetryFailedSignature.test_error_count.<locals>.check$  s    
 AAhG( g# # $   (- " !'a0E''!*C&&v'9'9:f#qM ;os63C3C/DE
 3< c1 3< ;:s   
C
CrJ   Fr  Tr   )r~   )rf   rg   ct_okct_bads   `   r   test_error_count+TestNoRetryFailedSignature.test_error_count   sE    .	 ` c5!sD! 	"#r   r   N)rl   rm   rn   ro   r  ro  rv  r  rp  expectedFailurer  rq   r   r   r   ri  ri    s0    5  6$ 6$r   ri  c                 
    X-   $ r   r   r   s     r   add_y1r  \  	    5Lr   c                      X(       a  S-   $ S-   $ r   r   r   s     r   	add_ynoner  a  s    QAr   c                 
    X-  $ r   r   r   s     r   multr  f  r  r   c                     X" X 5      -   $ r   r   )r   rm  s     r   add_funcr  k  s    tAz>r   c                 >    U " U5      U R                  U5      :X  d   eg r   )r   )f1r+  s     r   _checkerr  p  s    c7bjjo%%%r   c                   ,    \ rS rSrS rS rS rS rSrg)$TestMultiprocessingDefaultParametersit  c                     [         R                  " S5      nS HY  nUR                  [        X4S9nUR                  5         UR                  [        5        U R                  UR                  S5        M[     g ! [         a	    [         n Nrf = f)Nspawn)r   r   r   )r   r`   r   )
multiprocessingget_contextAttributeErrorProcessr  r   r   _TEST_TIMEOUTr~   exitcode)rf   fcctxrJ   ps        r   run_fc_multiproc5TestMultiprocessingDefaultParameters.run_fc_multiprocu  sv    	"!--g6C A82(;AGGIFF=!QZZ+	   	"!C	"s   A8 8B
Bc                 .    U R                  [        5        g)zTests issue #4888N)r  r  rf   s    r   test_int_def_param7TestMultiprocessingDefaultParameters.test_int_def_param  s     	f%r   c                 .    U R                  [        5        g)z!Tests None as a default parameterNr  r  r  s    r   test_none_def_param8TestMultiprocessingDefaultParameters.test_none_def_param       	h'r   c                 .    U R                  [        5        g)z'Tests a function as a default parameterNr  r  s    r   test_function_def_param<TestMultiprocessingDefaultParameters.test_function_def_param  r  r   r   N)	rl   rm   rn   ro   r  r  r  r  rq   r   r   r   r  r  t  s    ,"&
(
(r   r  c                       \ rS rSrSrS rSrg)TestVectorizeDifferentTargetsi  zDTest that vectorize can be reapplied if the target is different
    c                 h    [         S 5       n[        / S SS9nU" U5        [        / S SS9nU" U5        g )Nc                 
    X-   $ r   r   r   s     r   r    ?TestVectorizeDifferentTargets.test_cpu_vs_parallel.<locals>.add  r   r   cpu)identityr   parallel)r   r   )rf   r    custom_vectorizecustom_vectorize_2s       r   test_cpu_vs_parallel2TestVectorizeDifferentTargets.test_cpu_vs_parallel  sD    		 
	 %R$uE&rDL3r   r   N)rl   rm   rn   ro   r  r  rq   r   r   r   r  r    s     r   r  __main__)r   r   )r   )r  r   )r   )Br  platformr   r  r  	itertoolsr   ior   numpyr>   numbar   r   r   r   
numba.corer	   r
   r   numba.tests.supportr   r   numba.np.numpy_supportr   numba.core.dispatcherr   numba.extendingr   r   r   numba.testing.mainr   _RUNNER_TIMEOUTrp  r  r  ImportErrorr  machinerr  r   r    r$   r'   r)   r4   r;   rW   rY   rs   rt  r  r  r  rX  ri  r  r  r  r  r  r  r  rl   mainr   r   r   <module>r     s           . . $  9 + , $ 9 :   #% 8+

x 
N4X N4bLNH LN^#&; #y'H y'xJ@x J@Z5X.. 54c$!2!2 c$L         &(;8I8I (D H$5$5  $ zMMO Y$  F
  Hs$   1F
 6F 
FFF%$F%