
    J/Ph                     f   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	Z
d dlmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZ d dlm Z! d dl"Z"e!dz
  Z#	 d dl$Z$n# e%$ r dZ$Y nw xY w	 d dl&Z&n# e%$ r dZ&Y nw xY w ej'                    dk    Z(d Z)d Z*d Z+d5dZ,d6dZ-d7dZ.d7dZ/d8dZ0 G d de          Z1 G d de1          Z2 G d de1          Z3 G d  d!e3          Z4 G d" d#e          Z5 G d$ d%e          Z6 G d& d'e"j                  Z7 G d( d)e"j                  Z8ed9d+            Z9ed8d,            Z:ed-             Z;ee;fd.            Z<d/ Z= G d0 d1ee"j                  Z> G d2 d3e"j                  Z?e@d4k    r e"jA                     dS dS ):    N)chain)StringIO)njitjittypeof	vectorize)typeserrors)_dispatcher)TestCasecaptured_stdout)as_dtype)
Dispatcher)overload)needs_lapackSerialMixin)_TIMEOUTg      N@armv7lc                     | S N xs    [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_dispatcher.pydummyr   '   s    H    c                     | |z   S r   r   r   ys     r   addr    +   s    q5Lr   c                     | |z
  |z   S r   r   r   r   zs      r   addsubr$   /       q519r         c                     | |z
  |z   S r   r   r"   s      r   addsub_defaultsr)   3   r%   r   c                     | ||fS r   r   r"   s      r   star_defaultsr+   7   s    a7Nr      c                 H    t          | t          j                  rd }nd }|S )Nc                     | |z   S r   r   r   s     r   implzgenerated_usecase.<locals>.impl=       q5Lr   c                     | |z
  S r   r   r   s     r   r/   zgenerated_usecase.<locals>.impl@   r0   r   
isinstancer	   Complexr   r   r/   s      r   generated_usecaser6   ;   s>    !U]## 	 	 	 		 	 	Kr   c                 J    t          | t          j                  rd }ndd}|S )Nc                     | S r   r   r   s    r   r/   z#bad_generated_usecase.<locals>.implG       Hr      c                     | |z
  S r   r   r   s     r   r/   z#bad_generated_usecase.<locals>.implJ   r0   r   )r:   r2   r5   s      r   bad_generated_usecaser<   E   sC    !U]## 	 	 	 		 	 	 	Kr   c                 T   t          |t          j        j        t          j        j        f          rt          j        d | |fD              nUt          |t          j        t          j        f          rt          |          nt          dt          |          z            dfd	}|S )Nc              3   R   K   | ]"}t          j        |j        j                  V  #d S r   )npdtypename).0arys     r   	<genexpr>z*dtype_generated_usecase.<locals>.<genexpr>Q   sD       %6 %6'* &(Xcin%=%= %6 %6 %6 %6 %6 %6r   zUnhandled Type %sc                 :    t          j        | j                  S Nr@   )r?   onesshape)abr@   	out_dtypes      r   _fnz$dtype_generated_usecase.<locals>._fnX   s    wqwi0000r   r   )r3   r	   miscNoneTypeOmittedr?   result_typeDTypeNumberClassr   	TypeErrortype)rJ   rK   r@   rM   rL   s       @r   dtype_generated_usecaserV   O   s    %%*-uz/ABCC ;N %6 %6/0!f%6 %6 %6 7			EEK):;	<	< ;UOO		+d5kk9:::1 1 1 1 1 1 Jr   c                   ,    e Zd Z ed          Zd ZdS )BaseTestTnopythonc                 R      fd} t          di  j                  |fS )Nc                  T     | i |} | i |}                     ||           d S r   )assertPreciseEqual)argskwargsexpectedresultfpyfuncselfs       r   checkz$BaseTest.compile_func.<locals>.checkc   sG    vt.v..HQ'''F##FH55555r   r   )r   jit_args)rd   rc   re   rb   s   `` @r   compile_funczBaseTest.compile_funcb   sR    	6 	6 	6 	6 	6 	6 	6 !C  $-  ((%xr   N)__name__
__module____qualname__dictrf   rg   r   r   r   rX   rX   ^   s5        tT"""H    r   rX   c                   *   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Ze ej        ed          d                         Z ej        ed          d             Ze ej        ed          d                         Zd Zd ZdS )TestDispatcherc                     t           d             }t           d             }|                     ||k    d           |                     ||k    d           |                     |d k    d           d S )Nc                     | S r   r   r   s    r   fooz)TestDispatcher.test_equality.<locals>.foon       Hr   c                     | S r   r   r   s    r   barz)TestDispatcher.test_equality.<locals>.barr   rq   r   TFr   assertEqual)rd   rp   rs   s      r   test_equalityzTestDispatcher.test_equalitym   s    		 	 
	 
	 	 
	 	T***U+++e,,,,,r   c                     t           d             } |d           |j                                        \  }|                     |j        j        |j        j                   d S )Nc                     | S r   r   r   s    r   rp   z+TestDispatcher.test_dyn_pyfunc.<locals>.foo~   rq   r      )r   	overloadsvaluesru   entry_pointri   py_func)rd   rp   crs      r   test_dyn_pyfunczTestDispatcher.test_dyn_pyfunc}   se    		 	 
	 	A}##%%2CK4JKKKKKr   c                 :    t           d             } |             d S )Nc                      dS Nry   r   r   r   r   rp   z,TestDispatcher.test_no_argument.<locals>.foo   s    1r   r   rd   rp   s     r   test_no_argumentzTestDispatcher.test_no_argument   s,    		 	 
	 	r   c                 &    t          d          t                    }|                      |dd          t          dd                     |                      |dd          t          dd                     |                      |dd          t          dd                     |                      |dd          t          dd                      t          d	d          t                    }|                      |dd          t          dd                     |                      |dd          t          d
d                     |                     t                    5   |dd           d d d            d S # 1 swxY w Y   d S )NTrY   {   i  g(@gF@y        F@l    F: z(i4, i4)   -   )r   r    r]   assertRaisesrT   )rd   c_adds     r   test_coerce_input_typesz&TestDispatcher.test_coerce_input_types   s    #T"""3''c3S#???dD 1 13tT??CCCdE 2 2Ce4D4DEEEk3 7 7[#9N9NOOO /J...s33c3S#???dD 1 13r2;;???y)) 	 	E$	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ,FF
F
c                    t           d             }d}d}|                      |||          ||z              |                     t          |j                  d           |                      |||          ||z              |                     t          |j                  d           |                      |||          ||z              |                     t          |j                  d           |                      |dd          ||z              |                     t          |j                  dd           dS )	z8Test compiling new version in an ambiguous case
        c                     | |z   S r   r   rJ   rK   s     r   rp   z6TestDispatcher.test_ambiguous_new_version.<locals>.foo       q5Lr   ry         ?r&   r'      zdidn't compile a new versionN)r   assertAlmostEqualru   lenrz   )rd   rp   INTFLTs       r   test_ambiguous_new_versionz)TestDispatcher.test_ambiguous_new_version   sP    
	 	 
	 ss3}}cCi888S]++Q///ss3}}cCi888S]++Q///ss3}}cCi888S]++Q/// 	ss1ayy#)444S]++Q 1: 	; 	; 	; 	; 	;r   c                     g t           d              fdfdt          d          D             }|D ]}|                                 |D ]}|                                                                 dS )zz
        Test that (lazy) compiling from several threads at once doesn't
        produce errors (see issue #908).
        c                     | dz   S r   r   r   s    r   rp   z%TestDispatcher.test_lock.<locals>.foo   r   r   c                      	                       d          d           d S # t          $ r}  j        |            Y d } ~ d S d } ~ ww xY wNry   r&   )ru   	Exceptionappend)er
   rp   rd   s    r   wrapperz)TestDispatcher.test_lock.<locals>.wrapper   so    !  Q+++++ ! ! !a         !s   $ 
A	AA	c                 :    g | ]}t          j                   S ))target)	threadingThread)rB   ir   s     r   
<listcomp>z,TestDispatcher.test_lock.<locals>.<listcomp>   s'    GGG9#7333GGGr      N)r   rangestartjoinassertFalse)rd   threadstr
   rp   r   s   `  @@@r   	test_lockzTestDispatcher.test_lock   s    
 		 	 
		! 	! 	! 	! 	! 	! 	! HGGGU2YYGGG 	 	AGGIIII 	 	AFFHHHH     r   c                     t          d          t                    }|                      |dd          d           |                     t	          |j                  d|j                    t          ddg          t                    }|                      |dd          d           |                      |dd          d           |                      |t          j        d          d          d	           |                     t                    5 } |d
d
           d d d            n# 1 swxY w Y   | 
                    dt          |j                             |                     t	          |j                  d|j                    t          ddg          t                    }|                      |t          j        d          t          j        d                    d           |                      |dd          d            t          g d          t                    }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     dt          |j                             d S )N(int64,int64)r         @r'   ry   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]   ru   r   rz   r?   int32r   rT   assertInstr	exceptionfloat32assertRegexassertNotInrd   rb   cms      r   test_explicit_signaturesz'TestDispatcher.test_explicit_signatures   s	    C  %%#sQ///Q[))1ak:::7C"5677<<!Q+++#sS111"(1++s 3 3S999y)) 	RAb"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	.BL0A0ABBBQ[))1ak:::;C$&9:;;C@@"*Q--F1C1C D DcJJJ!V.@AAA#C " " " # ##&( ( y)) 	RAc3KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	/	
 	
 	
 	#bl"3"344444s$   D00D47D4I&&I*-I*c                    d}|                      t                    5 } t          d          t                     d d d            n# 1 swxY w Y   |                     |dz  t          |j                             |                      t                    5 } t          d          t                     d d d            n# 1 swxY w Y   |                     |dz  t          |j                             |                      t                    5 } t          d          t                     d d d            n# 1 swxY w Y   |                     |dz  t          |j                              t          dd	          t                     |                      t                    5 } t          dd	          t                     d d d            n# 1 swxY w Y   |                     |dz  t          |j                             d S )
NzKSignature mismatch: %d argument types given, but function takes 2 argumentsz()r   z(intc,)ry   z(intc,intc,intc)r'   Tforceobj)r   rT   r   r    r   r   r   )rd   tmplr   s      r   test_signature_mismatchz&TestDispatcher.test_signature_mismatch   s   $y)) 	RCIIcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	dQhBL 1 1222y)) 	 RC	NN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 dQhBL 1 1222y)) 	)R#C"##C(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)dQhBL 1 1222 D4   %%%y)) 	/R)C	D)))#...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/dQhBL 1 122222sG   AAACCCD;;D?D?* GGGc                     t          d          t                    }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nz(intc,intc)r   zBNo matching definition for argument type(s) complex128, complex128)r   r    r   rT   ru   r   r   r   s      r   test_matching_error_messagez*TestDispatcher.test_matching_error_message  s    Cs##y)) 	RAb"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**2	3 	3 	3 	3 	3s   AAAc                    t           d             }|                    d           |                                 |                     t                    5 }|                    d           d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     t          |j	                  d           d S )Nc                     | S r   r   rJ   s    r   rp   z5TestDispatcher.test_disabled_compilation.<locals>.foo  rq   r   
(float32,)(int32,)compilation disabledry   )
r   compiledisable_compiler   RuntimeErrorru   r   r   r   
signaturesrd   rp   raisess      r   test_disabled_compilationz(TestDispatcher.test_disabled_compilation  s   		 	 
	 	L!!!|,, 	$KK
###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$V-..0FGGGS^,,a00000s   A66A:=A:c                 h   t          ddg          d             }|                     t                    5 }|                    d           d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     t          |j                  d           d S )Nr   r   c                     | S r   r   r   s    r   rp   zBTestDispatcher.test_disabled_compilation_through_list.<locals>.foo  rq   r   z(complex64,)r   r&   )	r   r   r   r   ru   r   r   r   r   r   s      r   &test_disabled_compilation_through_listz5TestDispatcher.test_disabled_compilation_through_list  s    	lJ'	(	(	 	 
)	(	 |,, 	(KK'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(V-..0FGGGS^,,a00000s   AAAc                 4   t          dg          d             t           fd            }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   d}|                     t          |j                  |           d S )Nz(intp,)c                     | S r   r   r   s    r   rp   zATestDispatcher.test_disabled_compilation_nested_call.<locals>.foo%  rq   r   c                  X      d             t          j        d                     d S r   )r?   rH   )rp   s   r   rs   zATestDispatcher.test_disabled_compilation_nested_call.<locals>.bar)  s)    CFFFC

OOOOOr   z?.*Invalid use of.*with parameters \(array\(float64, 1d, C\)\).*)r   r   r
   TypingErrorr   r   r   )rd   rs   r   mrp   s       @r   %test_disabled_compilation_nested_callz4TestDispatcher.test_disabled_compilation_nested_call$  s    	i[			 	 
		 
	 	 	 	 
	 v122 	fCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 OV-..22222s   A##A'*A'c                 R   d }d}|                      t                    5 }t          j        g            ddd           n# 1 swxY w Y   |                     |t          |j                              t          d          |          |                      g           g             t          d          |          }|                      t                    5 } |g            ddd           n# 1 swxY w Y   |                     |t          |j                             t          d          fd            }|                      |            g            |j	        
                                \  }|                     t          |j                  d           dS )	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                     | S r   r   r   s    r   rp   z4TestDispatcher.test_fingerprint_failure.<locals>.foo:  r9   r   z(cannot compute fingerprint of empty listNTr   rY   c                  b    t                       g } t          d          D ]} |           } | S )N
   )objectr   )r   r   objmode_foos     r   rs   z4TestDispatcher.test_fingerprint_failure.<locals>.barL  s:    HHHA2YY # #KNNHr   ry   )r   
ValueErrorr   compute_fingerprintr   r   r   r   ru   rz   r{   r   lifted)rd   rp   errmsgr   
strict_foors   r~   r   s          @r   test_fingerprint_failurez'TestDispatcher.test_fingerprint_failure4  s   	 	 	 <z** 	0f+B///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0fc&"233444(c4(((--R"---'S$''',,
z** 	fJrNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	fc&"233444 
d				 	 	 	 
		 	###}##%%RY+++++s#   AA	A C88C<?C<c                    t          d          d             }|                      |d          d           t          j        }t          j                                         t          |          }t          j        |          }|                     |dz   t          |                     t          j	        |          }|                     |dz   t          |                     | 
                    ||           t          |          }~~|                     |dz   t          |                     t          j	        |          }|                     |t          |                     t          j        |          }~t          j                                         |                     |t          |                     t          j	        |           | 
                     |            d           dS )z:
        Test serialization of Dispatcher objects
        TrY   c                     | dz   S r   r   r   s    r   rp   z.TestDispatcher.test_serialization.<locals>.foo]  r   r   ry   r&   N)r   ru   r   _memo_recentclearr   pickledumpsloadsassertIsidweakrefref)	rd   rp   memo	memo_sizeserialized_foofoo_rebuiltid_orignew_foor   s	            r   test_serializationz!TestDispatcher.test_serializationY  s    
d				 	 
		 	Q###   """II	  c**QD		222 l>22QD		222c;''' [//QD		222,~.."W++... k'""  """CII... 	^$$$cceeT"""""r   zUnaligned loads unsupportedc                   	
 d 	 t          d          	          
dt          t          j                            t          j        }t          j                    j         |            j        z  }t          j        |z  dz   |          }|d d                             t          j                  	                              }|dd                              t          j                  	                              }|j
        }|j
        }	
fd} |d	|            |d
|            |d|            |d|           d S )Nc                 B    t           j                            | d          S r   r?   linalgmatrix_powerr   s    r   rp   z:TestDispatcher.test_misaligned_array_dispatch.<locals>.foo  s    9))!Q///r   TrY   @   ry   rG   c                     t          j        t           j                                                |d d d d f<    |          } |          }t           j                            ||           d S rF   r?   arange
complex128reshapetestingassert_allcloserA   rJ   r`   gotrp   jitfoonrs       r   re   z<TestDispatcher.test_misaligned_array_dispatch.<locals>.check  sq    i777??1EEAaaadGs1vvH&))CJ&&x55555r   C_contig_alignedF_contig_alignedC_contig_misalignedF_contig_misalignedr   intr?   sqrtint8r  itemsizer  viewr  Trd   dtcounttmpr  r  r  r  re   rp   r  r  r  s            @@@@r   test_misaligned_array_dispatchz-TestDispatcher.test_misaligned_array_dispatch  ss   	0 	0 	0 $d###C((

OOW(BBDDM9iE	AR000 ss8==77??1EE!!""gll2=99AA!QGG+-13	6 	6 	6 	6 	6 	6 	6 	6 	 "2333 "2333#%8999#%899999r   c                   	
 d 	 t          d          	          
dt          t          j                            t          j        }t          j                    j         |            j        z  }t          j        |z  dz   |          }|d d                             t          j                  	                              }|dd                              t          j                  	                              }|j
        }|j
        }d	
fd		} |d
|d            |d|d            |d|d            |d|d           d S )Nc                 *    t          j        |           S r   )r?   sumr   s    r   rp   z?TestDispatcher.test_immutability_in_array_dispatch.<locals>.foo  s    6!99r   TrY   r  ry   rG   r  Fc                 
   t          j        t           j                                                |d d d d f<   |rd|j        _         |          } |          }t           j                            ||           d S )NrG   F)r?   r  r  r  flags	writeabler  r	  )	rA   rJ   disable_write_bitr`   r  rp   r  r  r  s	        r   re   zATestDispatcher.test_immutability_in_array_dispatch.<locals>.check  s    i777??1EEAaaadG  *$)!s1vvH&))CJ&&x55555r   r  )r%  r  r  r  )Fr  r  s            @@@@r   #test_immutability_in_array_dispatchz2TestDispatcher.test_immutability_in_array_dispatch  s   	 	 	 $d###C((

OOW(BBDDM9iE	AR000 ss8==77??1EE!!""gll2=99AA!QGG+-13	6 	6 	6 	6 	6 	6 	6 	6 	6 	 "2dKKKK "2dKKKK#%8 $	& 	& 	& 	&#%8 $	& 	& 	& 	& 	& 	&r   c                    
 d 
 t          d          
           fd}ddt          j        }t          j                    j         |            j        z  }t          j        |z  dz   |          }|d d	                             t          j                                                } ||d
d           |dd                              t          j                                                } ||d
d           |j        } ||dd           |j        } ||dd           
fd}	 |	d|            |	d|            |	d|            |	d|           d S )Nc           
      b    t           j                            | ddddd d d d f         d          S Nr   ry   r   r   s    r   rp   zITestDispatcher.test_misaligned_high_dimension_array_dispatch.<locals>.foo  s4    9))!Aq!Q111,<*=qAAAr   TrY   c                                          | j        j        |           |dk    r                      | j        j        d           |dk    r"                     | j        j        d           d S d S )NCTF)ru   r#  alignedc_contiguousf_contiguous)arrlayoutr-  rd   s      r   check_propertieszVTestDispatcher.test_misaligned_high_dimension_array_dispatch.<locals>.check_properties  ss    SY.888}}  !7>>>}}  !7>>>>> }r   i  r'   ry   rG   r  r+  Fr,  c                     t          j        t           j                                                |d d d d f<    |          } |          }t           j                            ||           d S rF   r  r
  s       r   re   zKTestDispatcher.test_misaligned_high_dimension_array_dispatch.<locals>.check  s{    i7771aAq)) aaadGs1vvH&))CJ&&x55555r   r  r  r  r  )	r   r?   r  r  r  r  r  r  r  )rd   r2  r  r  r  r  r  r  r  re   rp   r  r  r  s   `         @@@@r   -test_misaligned_high_dimension_array_dispatchz<TestDispatcher.test_misaligned_high_dimension_array_dispatch  s   	B 	B 	B $d###C((	? 	? 	? 	? 	? W(BBDDM9iE	AR000 ss8==77GAq!Q1%% 	)3555!!""gll2=99GAq!Q1%% 	,c5999+-)355513,c5999	6 	6 	6 	6 	6 	6 	6 	6 	#%8999 "2333 "2333#%899999r   c                 Z   d } t          d          |          } |t          j        d                      |t          j        d                      |t          j        d                     |                     t          |j                  d           t          j        ft          j        ft          j        fg}|                     |j        |            t          t          j        fgd          |          } |t          j        d                      |t          j        d                      |t          j        d                     |                     t          |j                  d           t          j        fg}|                     |j        |           d S )	Nc                     | S r   r   r   s    r   rp   z@TestDispatcher.test_dispatch_recompiles_for_scalars.<locals>.foo  r9   r   TrY   y      ?       @r   Fr'   ry   )	r   r?   r  r   bool_ru   r   r   r	   )rd   rp   r  expected_sigss       r   $test_dispatch_recompiles_for_scalarsz3TestDispatcher.test_dispatch_recompiles_for_scalars
  s   	 	 	 $d###C((r}V$$%%%rx||rxV.//333*,u{nu{nM*M::: ;u')*T:::3??r}V$$%%%rx||rxV.//333*,-*M:::::r   c                    t          d          d             }|                     t                    5 }t          |           d d d            n# 1 swxY w Y   t          |j                  }|                     d|           |                     d|           |                     d|           |                     t                    5 }t          t                     d d d            n# 1 swxY w Y   t          |j                  }|                     d|           |                     t          t                     |           d S )NTrY   c                     | S r   r   r   s    r   rp   zITestDispatcher.test_dispatcher_raises_for_invalid_decoration.<locals>.foo)  rq   r   z8A jit decorator was called on an already jitted functionrp   z.py_funcz&The decorated object is not a function)r   r   rT   r   r   r   rX   rU   )rd   rp   r   err_msgs       r   -test_dispatcher_raises_for_invalid_decorationz<TestDispatcher.test_dispatcher_raises_for_invalid_decoration&  s    
d				 	 
		 y)) 	VHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	f&''F	Q 	Q 	QeW%%%j'***y)) 	VMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	f&''>HHHh)733333s#   AAAC,,C03C0N)rh   ri   rj   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   unittestskipIf
_is_armv7lr  r&  r4  r9  r=  r   r   r   rm   rm   k   s       - - - L L L    $; ; ;*! ! !0$5 $5 $5L3 3 3$3 3 3
1 
1 
11 1 13 3 3 #, #, #,J+# +# +#Z X_Z!>??$: $: @? \$:L X_Z!>??&& && @?&&P X_Z!>??/: /: @? \/:b; ; ;84 4 4 4 4r   rm   c                   $    e Zd ZdZd Zd Zd ZdS )TestSignatureHandlingz<
    Test support for various parameter passing styles.
    c                 L   |                      t                    \  }} |ddd            |ddd            |ddd           |                     t          |j                  d           |                     t                    5 } |dddd	           d
d
d
           n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |             d
d
d
           n# 1 swxY w Y   |                     dt          |j	                             |                     t                    5 } |ddd           d
d
d
           n# 1 swxY w Y   |                     dt          |j	                             d
S )z?
        Test passing named arguments to a dispatcher.
        r'   r   r   r#   r   r"   ry   r:      r   r#   N%too many arguments: expected 3, got 4z'not enough arguments: expected 3, got 0r   zmissing argument 'z')
rg   r$   ru   r   rz   r   rT   r   r   r   rd   rb   re   r   s       r   test_named_argsz%TestSignatureHandling.test_named_argsA  sT    $$V,,5a2aBQ"Q[))1---y)) 	RAaa1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	=",''	) 	) 	)y)) 	RACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?",''	) 	) 	)y)) 	RAaaLLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,c",.?.?@@@@@s6   	B%%B),B)2D		DDE11E58E5c                 t   |                      t                    \  }} |ddd            |ddd            |ddd            |dd            |dd            |dd            |d            |d           |                     t                    5 } |ddd	d
           ddd           n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |             ddd           n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |d	d
           ddd           n# 1 swxY w Y   |                     dt          |j                             dS )z?
        Test omitting arguments with a default value.
        r'   r   r   rD  r"   r#   r   r   r:   rE  rF  NrG  z0not enough arguments: expected at least 1, got 0zmissing argument 'x')rg   r)   r   rT   r   r   r   rI  s       r   test_default_argsz'TestSignatureHandling.test_default_argsX  s    $$_555a2aBQ"a2aQa



y)) 	RAaa1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	=",''	) 	) 	)y)) 	RACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	H",''	) 	) 	)y)) 	RAQKKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,c",.?.?@@@@@s6   B::B>B>DD"%D"+FF	F	c                 |   |                      t                    \  }} |d            |dd            |ddd            |dddd            |ddddd            |d            |dd            |dd           |                     t                    5 } |ddd           d	d	d	           n# 1 swxY w Y   |                     d
t          |j                             |                     t                    5 } |ddd           d	d	d	           n# 1 swxY w Y   |                     d
t          |j                             |                     t                    5 } |dd           d	d	d	           n# 1 swxY w Y   |                     d
t          |j                             d	S )zJ
        Test a compiled function with starargs in the signature.
        r   r,   r:   rE     r   r   rH  Nz!some keyword arguments unexpectedrL  )rg   r+   r   rT   r   r   r   rI  s       r   test_star_argsz$TestSignatureHandling.test_star_argss  ss    $$]335aaaAaAqaAq!



Qa1y)) 	RAaaLLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	93r|;L;LMMMy)) 	RAaaLLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	93r|;L;LMMMy)) 	RAa1IIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	93r|;L;LMMMMMs6   B::B>B>D""D&)D&/F		FFN)rh   ri   rj   __doc__rJ  rM  rP  r   r   r   rB  rB  <  sV         A A A.A A A6N N N N Nr   rB  c                   *    e Zd ZdZ ed          ZdS )TestSignatureHandlingObjectModez<
    Sams as TestSignatureHandling, but in object mode.
    Tr   N)rh   ri   rj   rQ  rk   rf   r   r   r   rS  rS    s,          tT"""HHHr   rS  c                       e Zd Zd Zd Zd Zd ZddZd Zd Z	d	 Z
d
 Z ej        edu d           ej        edu d          d                         Zd Zd ZdS )TestDispatcherMethodsc                 2   dt           fd            }|                      |d          d           |                      |d          d           |                     t          |j                  d           d|                      |d          d           |                                 |                     t          |j                  d           |                      |d          d           |                      |d          d           d S )Nry   c                     | z   S r   r   r   closures    r   rp   z1TestDispatcherMethods.test_recompile.<locals>.foo      w;r   r&   r   r   r'   r   )r   r]   ru   r   r   	recompilerd   rp   rY  s     @r   test_recompilez$TestDispatcherMethods.test_recompile  s   		 	 	 	 
	A***C#...S^,,a000A***S^,,a000A***C#.....r   c                    dt          d          fd            }|                      |d          d           |                      |d          d           d|                      |d          d           |                                 |                      |d          d           |                      |d          d           d S )Nry   zint32(int32)c                     | z   S r   r   rX  s    r   rp   z<TestDispatcherMethods.test_recompile_signatures.<locals>.foo  rZ  r   r&   r   r'   )r   r]   r[  r\  s     @r   test_recompile_signaturesz/TestDispatcherMethods.test_recompile_signatures  s    	^			 	 	 	 
		A***C!,,,A***A***C!,,,,,r   c                    t           d             } |dd            |dd            |dd           |                                }|                     t          |          d           |                                D ]D}|                     d|           |                     d|           |                     d|           Ed S )Nc                     | |z   S r   r   explicit_arg1explicit_arg2s     r   rp   z4TestDispatcherMethods.test_inspect_llvm.<locals>.foo       =00r   ry   r   r'   rp   rd  re  )r   inspect_llvmru   r   r{   r   )rd   rp   llvmsllvm_bcs       r   test_inspect_llvmz'TestDispatcherMethods.test_inspect_llvm  s    		1 	1 
	1 	Aq			CC   ""UQ''' ||~~ 	4 	4GMM%))) MM/7333MM/73333	4 	4r   c                 8   t           d             } |dd            |dd            |dd           |                                }|                     t          |          d           |                                D ]}|                     d|v            d S )Nc                     | |z   S r   r   rc  s     r   rp   z3TestDispatcherMethods.test_inspect_asm.<locals>.foo  rf  r   ry   r   r'   rp   )r   inspect_asmru   r   r{   
assertTrue)rd   rp   asmsasms       r   test_inspect_asmz&TestDispatcherMethods.test_inspect_asm  s    		1 	1 
	1 	Aq			CC   TA&&& ;;== 	* 	*COOESL))))	* 	*r    c                 r   |r#d                     t          |          |          }t                              dd          d         }t          |          }d                     |||          }|                     t          |          |           |                     t          |j                             d S )Nz{}{}.ry   r   z^digraph "CFG for \'_ZN{}{}{})	formatr   rh   splitr   r   rn  callabledisplay)rd   cfgr   module_name
module_lenprefixs         r   _check_cfg_displayz(TestDispatcherMethods._check_cfg_display  s     	;mmCLL'::GnnS!,,Q/%%
1889C9DF F 	S6*** 	--.....r   c                 P   t           d             }t          j        d          }t          j        d          }t          j        d          } ||            ||            ||           |                                }|                     t          |          d           |                                \  }}}|                     t          |||g          t          t          d |||g                               |	                                D ]}	| 
                    |	           |                     t          t          |	                                                    d           |                    |j        d                   }	| 
                    |	           d S )	Nc                 *    |                                  S r   r!  	the_arrays    r   rp   z3TestDispatcherMethods.test_inspect_cfg.<locals>.foo      ==??"r   ry   ry   ry   ry   ry   ry   r'   c                 "    t          |           fS r   )r   r   s    r   <lambda>z8TestDispatcherMethods.test_inspect_cfg.<locals>.<lambda>	  s    F1II< r   r   	signature)r   r?   rH   inspect_cfgru   r   keyssetmapr{   r}  listr   )
rd   rp   a1a2a3cfgss1s2s3ry  s
             r   test_inspect_cfgz&TestDispatcherMethods.test_inspect_cfg  s    
	# 	# 
	# WQZZWV__WYBBB    	TA&&& yy{{Rb"b\**S!7!7"b"FFGG	I 	I 	I ;;== 	) 	)C##C((((T$++--00111555 ooq(9o::$$$$$r   c                 R   t           d             }t          j        d          }t          j        d          }t          j        d          } ||            ||            ||           |                    |j        d         d          }|                     |d	           d S )
Nc                 *    |                                  S r   r  r  s    r   rp   zGTestDispatcherMethods.test_inspect_cfg_with_python_wrapper.<locals>.foo  r  r   ry   r  r  r   python)r  show_wrappercpython)r   )r   r?   rH   r  r   r}  )rd   rp   r  r  r  ry  s         r   $test_inspect_cfg_with_python_wrapperz:TestDispatcherMethods.test_inspect_cfg_with_python_wrapper  s     
	# 	# 
	# WQZZWV__WYBBB ooq(9+3  5 5Y77777r   c                 x   t           d             } |dd           |                    t                                 t          |j        |j        d                  j                  }t                      5 }|                                 d d d            n# 1 swxY w Y   ||                                v sJ d S )Nc                     | |z   S r   r   r   s     r   rp   z5TestDispatcherMethods.test_inspect_types.<locals>.foo)  r   r   ry   r&   r   )	r   inspect_typesr   r   rz   r   type_annotationr   getvalue)rd   rp   r`   outs       r   test_inspect_typesz(TestDispatcherMethods.test_inspect_types(  s    		 	 
	 	Aq			(**%%% s}S^A%67GHH 	 #	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 3<<>>))))))s   6BBBc                    t           d             } |d            |d           t                      5 }|                                 d d d            n# 1 swxY w Y   t                      5 }|                    |j        d                    d d d            n# 1 swxY w Y   t                      5 }|                    |j        d                    d d d            n# 1 swxY w Y   |                     |                                |                                |                                z              d S )Nc                     | dz   S r   r   r   s    r   rp   zDTestDispatcherMethods.test_inspect_types_with_signature.<locals>.foo8  r   r   ry   r   r   r  )r   r   r  r   ru   r  )rd   rp   totalfirstseconds        r   !test_inspect_types_with_signaturez7TestDispatcherMethods.test_inspect_types_with_signature7  s   		 	 
	 	AC 	 %	  	  	  	  	  	  	  	  	  	  	  	  	  	  	   	;%q(9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;  	;&q(9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	))5>>+;+;foo>O>O+OPPPPPs5   AAA/"BB!$B!6"C$$C(+C(Nz#please install the 'jinja2' packagez%please install the 'pygments' packagec                 J   t           d             } |dd           t                      5  |                    d          }d d d            n# 1 swxY w Y   |j                                        D ]3\  }}d}|d         D ]}d|d         v rd}|                     |           4|                     t                    5 }|                    t                      d	           d d d            n# 1 swxY w Y   | 	                    d
t          |j                             d S )Nc                     | |z   S r   r   r   s     r   rp   z<TestDispatcherMethods.test_inspect_types_pretty.<locals>.fooM  r   r   ry   r&   T)prettyFpygments_linesspan)filer  z$`file` must be None if `pretty=True`)r   r   r  annitemsrn  r   r   r   r   r   r   )rd   rp   r  kv
span_foundliner   s           r   test_inspect_types_prettyz/TestDispatcherMethods.test_inspect_types_prettyJ  s    
	 	 
	 	Aq			  	1 	1##4#00C	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 GMMOO 	( 	(DAqJ*+ & &T!W$$!%JOOJ'''' z** 	<f8::d;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<&*++	- 	- 	- 	- 	-s#   AAA $C00C47C4c                    t           d              d            d           t          t          j        fdj        D                                 }                                }|                     ||           d S )Nc                     | dz   S r   r   r   s    r   rp   z;TestDispatcherMethods.test_get_annotation_info.<locals>.foog  r   r   ry   g?c              3   f   K   | ]+}                     |                                          V  ,d S r   )get_annotation_infor  )rB   r   rp   s     r   rD   zATestDispatcherMethods.test_get_annotation_info.<locals>.<genexpr>n  sY       ,E ,E01 -0,C,CA,F,F,L,L,N,N ,E ,E ,E ,E ,E ,Er   )r   rk   r   from_iterabler   r  ru   )rd   r`   ra   rp   s      @r   test_get_annotation_infoz.TestDispatcherMethods.test_get_annotation_infof  s    		 	 
	 	AC+ ,E ,E ,E ,E58^,E ,E ,E E E F F((**6*****r   c                    d }t          |          }t          j        dgg          }t          j        ddgddggd          }t          j        ddgddggd          } ||d	d
          } ||d	d
          }|                     d ||d
d
                      ||d	d
          } ||d	d
          }	|                     ||           |                     ||	           dS )aO  
        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                     | ||f         S r   r   )Ar   js      r   rc   zKTestDispatcherMethods.test_issue_with_array_layout_conflict.<locals>.pyfunc{  s    QT7Nr   r   g        r   g      @r+  )orderr,  ry   r   N)r   r?   arrayru   )
rd   rc   cfuncary_c_and_fary_cary_fexp_cexp_fgot_cgot_fs
             r   %test_issue_with_array_layout_conflictz;TestDispatcherMethods.test_issue_with_array_layout_conflicts  s   	 	 	 Fhv&&2r(RH-S9992r(RH-S999ua##ua##UU;155666eQ""eQ""&&&&&&&&r   )rr  )rh   ri   rj   r]  r`  rj  rq  r}  r  r  r  r  r>  r?  jinja2pygmentsr  r  r  r   r   r   rU  rU    s       / / /$- - - 4 4 40* * *(/ / / / %  %  %D8 8 8** * *Q Q Q& X_Vt^%JKKX_X%'NOO- - PO LK-4+ + +' ' ' ' 'r   rU  c                   &    e Zd Zd Zd Zd Zd ZdS ) TestDispatcherFunctionBoundariesc                    t          d          d             t          d          d             t          d          fd            }ddt          j        d          g}d	 |D             }t          ||          D ]$\  }}|                      ||          |           %t          ||          D ]%\  }}|                      |          |           &d S )
NTrY   c                     | dz   S r   r   r   s    r   add1zJTestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.add1  r   r   c                      | |          S r   r   )fnr   s     r   rs   zITestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.bar  s    2a55Lr   c                      |           S r   r   )r   r  rs   s    r   rp   zITestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.foo  s    3tQ<<r   ry   g333333&@r   c                     g | ]}|d z   S ry   r   )rB   r   s     r   r   zPTestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.<listcomp>  s    222aAE222r   )r   r?   r  zipr]   )rd   rp   inputsexpected_resultsargexpectr  rs   s         @@r   test_pass_dispatcher_as_argz<TestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg  s<   	d				 	 
		 
d				 	 
		 
d				  	  	  	  	  
		  T29R==)226222v'788 	6 	6KC##CCHHf5555 v'788 	< 	<KC##CCcNNF;;;;	< 	<r   c                 Z   t          d          d             } |g dt          d                     }|                     |d            |t          t          t	          d          t	          d          d d d	                             t          d
                     }|                     |d            |t          t          t	          d          t	          d          d d d	                             t          d                     }|                     |d           d S )NTrY   c                 X    | d         }| dd          D ]} |||          }|dk     r|}|S r)  r   )seqcmpfnr  eachcmpvals        r   maximumzPTestDispatcherFunctionBoundaries.test_dispatcher_as_arg_usecase.<locals>.maximum  sG    a&CABB  sD))A::CJr   )ry   r&   r'   r   c                     | |z
  S r   r   r   s     r   r  zQTestDispatcherFunctionBoundaries.test_dispatcher_as_arg_usecase.<locals>.<lambda>  s
    1q5 r   )r  r   r,   r  c                 $    | d         |d         z
  S Nr   r   r   s     r   r  zQTestDispatcherFunctionBoundaries.test_dispatcher_as_arg_usecase.<locals>.<lambda>      QqTAaD[ r   )r   r   c                 $    | d         |d         z
  S r   r   r   s     r   r  zQTestDispatcherFunctionBoundaries.test_dispatcher_as_arg_usecase.<locals>.<lambda>  r  r   )r   r   )r   ru   r  r  r   )rd   r  r  s      r   test_dispatcher_as_arg_usecasez?TestDispatcherFunctionBoundaries.test_dispatcher_as_arg_usecase  s3   	d				 	 
		 glll#.@.@*A*ABBBa   gd3uQxxq$$B$8899 8 899; ; ;f%%%gd3uQxxq$$B$8899 8 899; ; ;f%%%%%r   c                     t          d          d             }t          d           }|                      ||          |           d S )NTrY   c                     | S r   r   )r  s    r   rp   zRTestDispatcherFunctionBoundaries.test_dispatcher_can_return_to_python.<locals>.foo  s    Ir   c                     | S r   r   r   s    r   r  zWTestDispatcherFunctionBoundaries.test_dispatcher_can_return_to_python.<locals>.<lambda>  s    1 r   rt   )rd   rp   r  s      r   $test_dispatcher_can_return_to_pythonzETestDispatcherFunctionBoundaries.test_dispatcher_can_return_to_python  s\    	d				 	 
		 R"%%%%%r   c                 d   t          d          d             t          d          fd            }t          d          fd            }t          d          d             }|                      |||fd          d           |                      |gd          d	           d S )
NTrY   c                     | dz   S r   r   r   s    r   onezMTestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg.<locals>.one  r   r   c                 ,      |                     S r   r   r   r  s    r   twozMTestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg.<locals>.two  s    3ss1vv;;r   c                 >       |                               S r   r   r  s    r   threezOTestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg.<locals>.three  s#    3ss33q66{{###r   c                 f     | d         |           | d         |           | d         |          fS )Nr   ry   r&   r   )fnsr   s     r   choosezPTestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg.<locals>.choose  s3    3q6!99fc!fQiiQ22r   ry   )r&   r'   r   )r&   r&   r&   rt   )rd   r  r  r  r  s       @r   test_dispatcher_in_sequence_argz@TestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg  s
   	d				 	 
		 
d				 	 	 	 
		 
d				$ 	$ 	$ 	$ 
		$ 
d				3 	3 
		3 	c5 1155yAAAc333Y?????r   N)rh   ri   rj   r  r  r  r  r   r   r   r  r    sU        < < <2& & &&& & &@ @ @ @ @r   r  c                       e Zd Zd Zd ZdS )TestBoxingDefaultErrorc                 Z   d }t          j        d          f} t          |          |          j        |         }|                     t
                    5 }|                    d            d d d            n# 1 swxY w Y   |                     t          |j	                  d           d S )Nc                     d S r   r   r   s    r   rp   z<TestBoxingDefaultError.test_unbox_runtime_error.<locals>.foo  s    Dr   
dummy_typezcan't unbox dummy_type type)
r	   Dummyr   rz   r   rT   r|   ru   r   r   )rd   rp   argtyscresr   s        r   test_unbox_runtime_errorz/TestBoxingDefaultError.test_unbox_runtime_error  s    	 	 	+l++- tF||C  *62y)) 	#V T"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	V-..0MNNNNNs   A88A<?A<c                     t           d             }|                     t                    5 } |             d d d            n# 1 swxY w Y   d}|                     t	          |j                  |           d S )Nc                      t           S r   )r>  r   r   r   rp   z:TestBoxingDefaultError.test_box_runtime_error.<locals>.foo  s    Or   z/cannot convert native Module.* to Python object)r   r   rT   r   r   r   )rd   rp   r   pats       r   test_box_runtime_errorz-TestBoxingDefaultError.test_box_runtime_error  s    		 	 
	y)) 	VCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?V-..44444s   AA	AN)rh   ri   rj   r  r  r   r   r   r  r    s5        O O O5 5 5 5 5r   r  c                   D    e Zd ZdZd Zd Zd Zej        d             Z	dS )TestNoRetryFailedSignaturez?Test that failed-to-compile signatures are not recompiled.
    c                    |j         }|                     t          |j                  d           |                     t
          j                  5   |d           d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     t
          j                  5   |d           d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     t
          j                  5   |d           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nr   ry   r   r&   )	_compilerru   r   _failed_cacher   r
   r   )rd   funcfcoms      r   run_testz#TestNoRetryFailedSignature.run_test  s   ~T/00!444v122 	 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	T/00!444v122 	 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	T/00!444v122 	 	DIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	T/00!44444s6   A''A+.A+9CCC#D;;D?D?c                 b    t          d          d             }|                     |           d S )NTrY   c                     | d         S r  r   r   s    r   rp   z8TestNoRetryFailedSignature.test_direct_call.<locals>.foo      Q4Kr   r   r  r   s     r   test_direct_callz+TestNoRetryFailedSignature.test_direct_call
  sA    	d				 	 
		 	cr   c                     t          d          d             t          d          fd            t          d          fd            }|                     |           d S )NTrY   c                     | d         S r  r   r   s    r   rs   z8TestNoRetryFailedSignature.test_nested_call.<locals>.bar  r  r   c                      |            d S r   r   )r   rs   s    r   foobarz;TestNoRetryFailedSignature.test_nested_call.<locals>.foobar  s    CFFFFFr   c                 2     |            |           z   S r   r   )r   rs   r  s    r   rp   z8TestNoRetryFailedSignature.test_nested_call.<locals>.foo  s    3q66FF1II%%r   r  )rd   rp   rs   r  s     @@r   test_nested_callz+TestNoRetryFailedSignature.test_nested_call  s    	d				 	 
		 
d				 	 	 	 
		 
d				& 	& 	& 	& 	& 
		& 	cr   c                       fd} |dd          } |dd          }                      |d                                 |d           d S )Nc                   	
 d}ddi
d }t          |          
fd            }t          d          d             }|f	fd			 	|f|z            }t          j        d
          }rl                    t
          j                  5 } ||d           d d d            n# 1 swxY w Y                       dt          |j	                             n ||d           
d         S )Nr   cr   c                     J d            )Nr   unreachabler   r   s    r   triggerzKTestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.trigger,  s    '-'''r   c                 V    dxx         dz  cc<   rt          j        d          d S )Nr  ry   invoke_failedc                     | S r   r   r   s    r   r  z`TestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.ol_trigger.<locals>.<lambda>5  s     r   )r
   r   )r   counter
would_fails    r   
ol_triggerzNTestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.ol_trigger/  s<     ! > ,_==="{"r   TrY   c                     d S r   r   )r  r   s     r   identzITestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.ident7  s    r   c                     | d         | d d         c}t          d          fd            }|r ||          S |S )Nr  TrY   c                 R     | |           | dxx          |          z  cc<   d S r  r   )r  r   innertab_heads     r   assignz`TestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.chain_assign.<locals>.assign>  s4    E#qMMMFFFhhqkk)FFFFFr   r   )fsr+  tab_tailr-  r,  chain_assigns    `  @r   r0  zPTestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.chain_assign;  sr    %'VRW"(d###* * * * * $#*  "'<&999!Mr   r&   ry   r"  )
r   r   r?   rH   r   r
   r   r   r   r   )fieldr%  r  r   r&  r(  r   r  r   r0  r$  rd   s    `       @@r   re   z:TestNoRetryFailedSignature.test_error_count.<locals>.check$  s   
 AAhG( ( ( g# # # # # # $    (- " " " " " " !L'a00E'!**C &&v'9:: "fE#qMMM" " " " " " " " " " " " " " "os63C/D/DEEEEc1 3<s   B&&B*-B*rJ   Fr  Try   )ru   )rd   re   ct_okct_bads   `   r   test_error_countz+TestNoRetryFailedSignature.test_error_count   su    .	  .	  .	  .	  .	 ` c5!!sD!! 	"""#####r   N)
rh   ri   rj   rQ  r  r  r  r>  expectedFailurer4  r   r   r   r	  r	    sj         5 5 5      6$ 6$ 6$ 6$ 6$r   r	  ry   c                     | |z   S r   r   r   s     r   add_y1r7  \      q5Lr   c                     | |rdndz   S r   r   r   s     r   	add_ynoner:  a  s    QAr   c                     | |z  S r   r   r   s     r   multr<  f  r8  r   c                      |  || |           z   S r   r   )r   r  s     r   add_funcr>  k  s    ttAqzz>r   c                 N     | |          |                      |          k    sJ d S r   )r}   )f1r  s     r   _checkerrA  p  s+    2c77bjjoo%%%%%%r   c                   &    e Zd Zd Zd Zd Zd ZdS )$TestMultiprocessingDefaultParametersc                 8   	 t          j        d          }n# t          $ r
 t           }Y nw xY wdD ]i}|                    t          ||f          }|                                 |                    t                     |                     |j	        d           jd S )Nspawn)ry   r&   r'   )r   r^   r   )
multiprocessingget_contextAttributeErrorProcessrA  r   r   _TEST_TIMEOUTru   exitcode)rd   fcctxrJ   ps        r   run_fc_multiprocz5TestMultiprocessingDefaultParameters.run_fc_multiprocu  s    	"!-g66CC 	" 	" 	"!CCC	"  	, 	,A82q(;;AGGIIIFF=!!!QZ++++		, 	,s    ++c                 :    |                      t                     dS )z Tests issue #4888N)rO  r7  rd   s    r   test_int_def_paramz7TestMultiprocessingDefaultParameters.test_int_def_param  s     	f%%%%%r   c                 :    |                      t                     dS )z" Tests None as a default parameterNrO  r>  rQ  s    r   test_none_def_paramz8TestMultiprocessingDefaultParameters.test_none_def_param       	h'''''r   c                 :    |                      t                     dS )z( Tests a function as a default parameterNrT  rQ  s    r   test_function_def_paramz<TestMultiprocessingDefaultParameters.test_function_def_param  rV  r   N)rh   ri   rj   rO  rR  rU  rX  r   r   r   rC  rC  t  sP        , , ,"& & &
( ( (
( ( ( ( (r   rC  c                       e Zd ZdZd ZdS )TestVectorizeDifferentTargetszDTest that vectorize can be reapplied if the target is different
    c                     t           d             }t          g d d          } ||           t          g d d          } ||           d S )Nc                     | |z   S r   r   r   s     r   r    z?TestVectorizeDifferentTargets.test_cpu_vs_parallel.<locals>.add  r   r   cpu)identityr   parallel)r   r   )rd   r    custom_vectorizecustom_vectorize_2s       r   test_cpu_vs_parallelz2TestVectorizeDifferentTargets.test_cpu_vs_parallel  so    		 	 
	 %R$uEEE&rDLLL3r   N)rh   ri   rj   rQ  rb  r   r   r   rZ  rZ    s-                  r   rZ  __main__)r&   r'   )r&   )r,   r   r  )BrF  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_TIMEOUTr>  rJ  r  ImportErrorr  machiner@  r   r    r$   r)   r+   r6   r<   rV   rX   rm   rB  rS  rU  r  r  r	  r7  r:  r<  r>  rA  rC  rZ  rh   mainr   r   r   <module>rs     s                              . . . . . . . . . . . . $ $ $ $ $ $ $ $       9 9 9 9 9 9 9 9 + + + + + + , , , , , , $ $ $ $ $ $ 9 9 9 9 9 9 9 9 : : : : : :   #%MMMM   FFFOOOO   HHH X8+
                     
 
 
 
 
x 
 
 
N4 N4 N4 N4 N4X N4 N4 N4bLN LN LN LN LNH LN LN LN^# # # # #&; # # #y' y' y' y' y'H y' y' y'xJ@ J@ J@ J@ J@x J@ J@ J@Z5 5 5 5 5X. 5 5 54c$ c$ c$ c$ c$!2 c$ c$ c$L                & & &( ( ( ( (;8I ( ( (D         H$5      $ zHMOOOOO s$   1A6 6B ?B B	 	BB