
    ܙdM                        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mZ d dlmZ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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,d7dZ-d8dZ.d9dZ/d9dZ0d:dZ1 G d de          Z2 G d de2          Z3 G d de2          Z4 G d  d!e4          Z5 G d" d#e          Z6 G d$ d%e          Z7 G d& d'e          Z8 G d( d)e#j                  Z9 G d* d+e#j                  Z:ed;d-            Z;ed:d.            Z<ed/             Z=ee=fd0            Z>d1 Z? G d2 d3ee#j                  Z@ G d4 d5e#j                  ZAeBd6k    r e#jC                     dS dS )<    N)chain)StringIO)njitjitgenerated_jittypeof	vectorize)typeserrors)_dispatcher)compile_isolated)TestCasecaptured_stdout)as_dtype)
Dispatcher)needs_lapackSerialMixin)_TIMEOUTg      N@armv7lc                     | S N xs    ;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   r0   zgenerated_usecase.<locals>.impl@   r1   r   
isinstancer
   Complexr   r    r0   s      r   generated_usecaser7   ;   s>    !U]## 	 	 	 		 	 	Kr   c                 J    t          | t          j                  rd }ndd}|S )Nc                     | S r   r   r   s    r   r0   z#bad_generated_usecase.<locals>.implG       Hr      c                     | |z
  S r   r   r   s     r   r0   z#bad_generated_usecase.<locals>.implJ   r1   r   )r;   r3   r6   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rA   )r@   onesshape)abrA   	out_dtypes      r   _fnz$dtype_generated_usecase.<locals>._fnX   s    wqwi0000r   r   )r4   r
   miscNoneTypeOmittedr@   result_typeDTypeNumberClassr   	TypeErrortype)rK   rL   rA   rN   rM   s       @r   dtype_generated_usecaserW   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)re   rd   rf   rc   s   `` @r   compile_funczBaseTest.compile_funcb   sR    	6 	6 	6 	6 	6 	6 	6 !C  $-  ((%xr   N)__name__
__module____qualname__dictrg   rh   r   r   r   rY   rY   ^   s5        tT"""H    r   rY   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   rr   r   TFr   assertEqual)re   rq   rt   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   rq   z+TestDispatcher.test_dyn_pyfunc.<locals>.foo~   rr   r      )r   	overloadsvaluesrv   entry_pointrj   py_func)re   rq   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 Nrz   r   r   r   r   rq   z,TestDispatcher.test_no_argument.<locals>.foo   s    1r   r   re   rq   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 )NTrZ   {   i  g(@gF@y        F@l    F: z(i4, i4)   -   )r   r!   r^   assertRaisesrU   )re   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   rK   rL   s     r   rq   z6TestDispatcher.test_ambiguous_new_version.<locals>.foo       q5Lr   rz         ?r'   r(      zdidn't compile a new versionN)r   assertAlmostEqualrv   lenr{   )re   rq   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   rq   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Nrz   r'   )rv   	Exceptionappend)er   rq   re   s    r   wrapperz)TestDispatcher.test_lock.<locals>.wrapper   so    !  Q+++++ ! ! !a         !s   $ 
A	AA	c                 :    g | ]}t          j                   S ))target)	threadingThread)rC   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)re   threadstr   rq   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(   rz   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^   rv   r   r{   r@   int32r   rU   assertInstr	exceptionfloat32assertRegexpMatchesassertNotInre   rc   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,)rz   z(intc,intc,intc)r(   Tforceobj)r   rU   r   r!   r   r   r   )re   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   rU   rv   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   rK   s    r   rq   z5TestDispatcher.test_disabled_compilation.<locals>.foo  rr   r   
(float32,)(int32,)compilation disabledrz   )
r   compiledisable_compiler   RuntimeErrorrv   r   r   r   
signaturesre   rq   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   rq   zBTestDispatcher.test_disabled_compilation_through_list.<locals>.foo  rr   r   z(complex64,)r   r'   )	r   r   r   r   rv   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                 *   t          dg          d             t           fd            }|                     t                    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   rq   zATestDispatcher.test_disabled_compilation_nested_call.<locals>.foo%  rr   r   c                  X      d             t          j        d                     d S r   )r@   rI   )rq   s   r   rt   zATestDispatcher.test_disabled_compilation_nested_call.<locals>.bar)  s)    CFFFC

OOOOOr   zANo matching definition for argument type(s) array(float64, 1d, C))r   r   rU   rv   r   r   )re   rt   r   mrq   s       @r   %test_disabled_compilation_nested_callz4TestDispatcher.test_disabled_compilation_nested_call$  s    	i[			 	 
		 
	 	 	 	 
	 y)) 	VCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	OV-..22222s   AA"%A"c                 2   t           d             d}|                     t                    5 }t          j        g            ddd           n# 1 swxY w Y   |                     |t          |j                             |                      g           g             t          d          j	                  }|                     t                    5 } |g            ddd           n# 1 swxY w Y   |                     |t          |j                             t           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   rq   z4TestDispatcher.test_fingerprint_failure.<locals>.foo9  rr   r   z(cannot compute fingerprint of empty listNTrZ   c                  b    t                       g } t          d          D ]} |           } | S )N
   )objectr   )r   r   rq   s     r   rt   z4TestDispatcher.test_fingerprint_failure.<locals>.barK  s:    HHHA2YY  CFFHr   rz   )r   r   
ValueErrorr   compute_fingerprintr   r   r   rv   r~   r{   r|   r   lifted)re   errmsgr   
strict_foort   r   rq   s         @r   test_fingerprint_failurez'TestDispatcher.test_fingerprint_failure3  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R"%%%'S$'''44
z** 	fJrNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	fc&"233444 
	 	 	 	 
	 	###}##%%RY+++++s#   AAAC11C58C5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
        TrZ   c                     | dz   S r   r   r   s    r   rq   z.TestDispatcher.test_serialization.<locals>.foo\  r   r   rz   r'   N)r   rv   r   _memo_recentclearr   pickledumpsloadsassertIsidweakrefref)	re   rq   memo	memo_sizeserialized_foofoo_rebuiltid_orignew_foor   s	            r   test_serializationz!TestDispatcher.test_serializationX  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   rq   z:TestDispatcher.test_misaligned_array_dispatch.<locals>.foo  s    9))!Q///r   TrZ   @   rz   rH   c                     t          j        t           j                                                |d d d d f<    |          } |          }t           j                            ||           d S rG   r@   arange
complex128reshapetestingassert_allcloserB   rK   ra   gotrq   jitfoonrs       r   rf   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re   dtcounttmpr  r  r  r  rf   rq   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   rq   z?TestDispatcher.test_immutability_in_array_dispatch.<locals>.foo  s    6!99r   TrZ   r   rz   rH   r  Fc                 
   t          j        t           j                                                |d d d d f<   |rd|j        _         |          } |          }t           j                            ||           d S )NrH   F)r@   r  r  r  flags	writeabler  r  )	rB   rK   disable_write_bitra   r
  rq   r  r  r  s	        r   rf   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   rz   r   r   s    r   rq   zITestDispatcher.test_misaligned_high_dimension_array_dispatch.<locals>.foo  s4    9))!Aq!Q111,<*=qAAAr   TrZ   c                                          | j        j        |           |dk    r                      | j        j        d           |dk    r"                     | j        j        d           d S d S )NCTF)rv   r"  alignedc_contiguousf_contiguous)arrlayoutr,  re   s      r   check_propertieszVTestDispatcher.test_misaligned_high_dimension_array_dispatch.<locals>.check_properties  ss    SY.888}}  !7>>>}}  !7>>>>> }r   i  r(   rz   rH   r  r*  Fr+  c                     t          j        t           j                                                |d d d d f<    |          } |          }t           j                            ||           d S rG   r  r	  s       r   rf   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  )re   r1  r  r  r  r  r  r  r  rf   rq   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   rq   z@TestDispatcher.test_dispatch_recompiles_for_scalars.<locals>.foo  r:   r   TrZ   y      ?       @r   Fr(   rz   )	r   r@   r  r   bool_rv   r   r   r
   )re   rq   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 )NTrZ   c                     | S r   r   r   s    r   rq   zITestDispatcher.test_dispatcher_raises_for_invalid_decoration.<locals>.foo(  rr   r   z8A jit decorator was called on an already jitted functionrq   z.py_funcz&The decorated object is not a function)r   r   rU   r   r   r   rY   rV   )re   rq   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)ri   rj   rk   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   unittestskipIf
_is_armv7lr  r%  r3  r8  r<  r   r   r   rn   rn   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   rn   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#   rz   r;      r    r$   N%too many arguments: expected 3, got 4z'not enough arguments: expected 3, got 0r    zmissing argument 'z')
rh   r%   rv   r   r{   r   rU   r   r   r   re   rc   rf   r   s       r   test_named_argsz%TestSignatureHandling.test_named_args@  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   rC  r#   r$   r   r   r;   rD  rE  NrF  z0not enough arguments: expected at least 1, got 0zmissing argument 'x')rh   r*   r   rU   r   r   r   rH  s       r   test_default_argsz'TestSignatureHandling.test_default_argsW  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;   rD     r   r   rG  Nz!some keyword arguments unexpectedrK  )rh   r,   r   rU   r   r   r   rH  s       r   test_star_argsz$TestSignatureHandling.test_star_argsr  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)ri   rj   rk   __doc__rI  rL  rO  r   r   r   rA  rA  ;  sV         A A A.A A A6N N N N Nr   rA  c                   *    e Zd ZdZ ed          ZdS )TestSignatureHandlingObjectModez<
    Sams as TestSignatureHandling, but in object mode.
    Tr   N)ri   rj   rk   rP  rl   rg   r   r   r   rR  rR    s,          tT"""HHHr   rR  c                   $    e Zd ZdZd Zd Zd ZdS )TestGeneratedDispatcherz#
    Tests for @generated_jit.
    c                     t          d          t                    }|                      |d          d           |                      |d          d           |                      |dd          d           |                      |d          d	           |                      |dd
          d           |                      |dd          d           d S )NTrZ   rN  r(   r   r   r   r   y      @      ?*   y      E@      ?rD  y      @      ?)r   r7   rv   )re   rc   s     r   test_generatedz&TestGeneratedDispatcher.test_generated  s    (M4((():;;1u%%%Q'''Q!e,,,2'''2rG,,,R1v.....r   c           	          t          d          t                    }t          j        dt          j                  }t          j        dt          j                  }|                      |||          j        t          j                   |                      |||t          j        d                    j        t          j                   |                      |||t          j                  j        t          j                   d S )NTrZ   )r   rH   r   )	r   rW   r@   rI   r   float64rv   rA   r   )re   rc   rK   rL   s       r   test_generated_dtypez,TestGeneratedDispatcher.test_generated_dtype  s    (M4((()@AAGE,,,GE,,,1a
3331arx'8'8999?JJJ1arx0006AAAAAr   c                     t          d          t                    }|                     t                    5 } |d           ddd           n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |d           ddd           n# 1 swxY w Y   |                     dt          |j                             dS )zz
        Check error reporting when implementation signature doesn't match
        generating function signature.
        TrZ   r   NzGshould be compatible with signature '(x, y=5)', but has signature '(x)'rz   zLshould be compatible with signature '(x, y=5)', but has signature '(x, y=6)')r   r=   r   rU   r   r   r   )re   rc   r   s      r   test_signature_errorsz-TestGeneratedDispatcher.test_signature_errors  sc   
 )M4((()>??y)) 	VAbEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 0&*++	- 	- 	- y)) 	VAaDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 5&*++	- 	- 	- 	- 	-s#   AAAB66B:=B:N)ri   rj   rk   rP  rW  rZ  r\  r   r   r   rT  rT    sN         / / /B B B- - - - -r   rT  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 )Nrz   c                     | z   S r   r   r   closures    r   rq   z1TestDispatcherMethods.test_recompile.<locals>.foo      w;r   r'   r   r   r(   r   )r   r^   rv   r   r   	recompilere   rq   rb  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 )Nrz   zint32(int32)c                     | z   S r   r   ra  s    r   rq   z<TestDispatcherMethods.test_recompile_signatures.<locals>.foo  rc  r   r'   r   r(   )r   r^   rd  re  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   rq   z4TestDispatcherMethods.test_inspect_llvm.<locals>.foo       =00r   rz   r   r(   rq   rm  rn  )r   inspect_llvmrv   r   r|   r   )re   rq   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   rl  s     r   rq   z3TestDispatcherMethods.test_inspect_asm.<locals>.foo  ro  r   rz   r   r(   rq   )r   inspect_asmrv   r   r|   
assertTrue)re   rq   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{}{}.rz   r   z^digraph "CFG for \'_ZN{}{}{})	formatr   ri   splitr   r   rw  callabledisplay)re   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222 	--.....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   rq   z3TestDispatcherMethods.test_inspect_cfg.<locals>.foo      ==??"r   rz   rz   rz   rz   rz   rz   r(   c                 "    t          |           fS r   )r   r   s    r   <lambda>z8TestDispatcherMethods.test_inspect_cfg.<locals>.<lambda>2  s    F1II< r   r   	signature)r   r@   rI   inspect_cfgrv   r   keyssetmapr|   r  listr   )
re   rq   a1a2a3cfgss1s2s3r  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   rq   zGTestDispatcherMethods.test_inspect_cfg_with_python_wrapper.<locals>.foo@  r  r   rz   r  r  r   python)r  show_wrappercpython)r   )r   r@   rI   r  r   r  )re   rq   r  r  r  r  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   rq   z5TestDispatcherMethods.test_inspect_types.<locals>.fooR  r   r   rz   r'   r   )	r   inspect_typesr   r   r{   r   type_annotationr   getvalue)re   rq   ra   outs       r   test_inspect_typesz(TestDispatcherMethods.test_inspect_typesQ  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   rq   zDTestDispatcherMethods.test_inspect_types_with_signature.<locals>.fooa  r   r   rz   r   r   r  )r   r   r  r   rv   r  )re   rq   totalfirstseconds        r   !test_inspect_types_with_signaturez7TestDispatcherMethods.test_inspect_types_with_signature`  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   rq   z<TestDispatcherMethods.test_inspect_types_pretty.<locals>.foov  r   r   rz   r'   T)prettyFpygments_linesspan)filer  z$`file` must be None if `pretty=True`)r   r   r  annitemsrw  r   r   r   r   r   r   )re   rq   r  kv
span_foundliner   s           r   test_inspect_types_prettyz/TestDispatcherMethods.test_inspect_types_prettys  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   rq   z;TestDispatcherMethods.test_get_annotation_info.<locals>.foo  r   r   rz   g?c              3   f   K   | ]+}                     |                                          V  ,d S r   )get_annotation_infor  )rC   r   rq   s     r   rE   zATestDispatcherMethods.test_get_annotation_info.<locals>.<genexpr>  sY       ,E ,E01 -0,C,CA,F,F,L,L,N,N ,E ,E ,E ,E ,E ,Er   )r   rl   r   from_iterabler   r  rv   )re   ra   rb   rq   s      @r   test_get_annotation_infoz.TestDispatcherMethods.test_get_annotation_info  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   rd   zKTestDispatcherMethods.test_issue_with_array_layout_conflict.<locals>.pyfunc  s    QT7Nr   r   g        r   g      @r*  )orderr+  rz   r   N)r   r@   arrayrv   )
re   rd   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_conflict  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   )r{  )ri   rj   rk   rf  ri  rs  rz  r  r  r  r  r  r=  r>  jinja2pygmentsr  r  r  r   r   r   r^  r^    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   r^  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 )
NTrZ   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   rt   zITestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.bar  s    2a55Lr   c                      |           S r   r   )r   r  rt   s    r   rq   zITestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.foo  s    3tQ<<r   rz   g333333&@r   c                     g | ]}|d z   S rz   r   )rC   r   s     r   r   zPTestDispatcherFunctionBoundaries.test_pass_dispatcher_as_arg.<locals>.<listcomp>  s    222aAE222r   )r   r@   r  zipr^   )re   rq   inputsexpected_resultsargexpectr  rt   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 )NTrZ   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   )rz   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   rv   r  r  r   )re   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 )NTrZ   c                     | S r   r   )r  s    r   rq   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   ru   )re   rq   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 )
NTrZ   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   rz   r'   r   )fnsr   s     r   choosezPTestDispatcherFunctionBoundaries.test_dispatcher_in_sequence_arg.<locals>.choose  s3    3q6!99fc!fQiiQ22r   rz   )r'   r(   r   )r'   r'   r'   ru   )re   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)ri   rj   rk   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                 0   d }t          |t          j        d          f          }|                     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   rq   z<TestBoxingDefaultError.test_unbox_runtime_error.<locals>.foo	  s    Dr   
dummy_typezcan't unbox dummy_type type)	r   r
   Dummyr   rU   r}   rv   r   r   )re   rq   cresr   s       r   test_unbox_runtime_errorz/TestBoxingDefaultError.test_unbox_runtime_error  s    	 	 	ek,&?&?%ABBy)) 	#V T"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	V-..0MNNNNNs   A##A'*A'c                    d }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   rq   z:TestBoxingDefaultError.test_box_runtime_error.<locals>.foo  s    Or   r   z/cannot convert native Module.* to Python object)r   r   rU   r}   r   r   r   )re   rq   r
  r   pats        r   test_box_runtime_errorz-TestBoxingDefaultError.test_box_runtime_error  s    	 	 	R((y)) 	V 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 @  V%5!6!6<<<<<s   AAAN)ri   rj   rk   r  r  r   r   r   r  r    s5        	O 	O 	O	= 	= 	= 	= 	=r   r  c                   *    e Zd ZdZd Zd Zd Z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   rz   r   r'   )	_compilerrv   r   _failed_cacher   r   TypingError)re   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 )NTrZ   c                     | d         S r  r   r   s    r   rq   z8TestNoRetryFailedSignature.test_direct_call.<locals>.foo3      Q4Kr   r   r  r   s     r   test_direct_callz+TestNoRetryFailedSignature.test_direct_call2  sA    	d				 	 
		 	cr   c                     t          d          d             t          d          fd            t          d          fd            }|                     |           d S )NTrZ   c                     | d         S r  r   r   s    r   rt   z8TestNoRetryFailedSignature.test_nested_call.<locals>.bar:  r  r   c                      |            d S r   r   )r   rt   s    r   foobarz;TestNoRetryFailedSignature.test_nested_call.<locals>.foobar>  s    CFFFFFr   c                 2     |            |           z   S r   r   )r   rt   r!  s    r   rq   z8TestNoRetryFailedSignature.test_nested_call.<locals>.fooB  s    3q66FF1II%%r   r  )re   rq   rt   r!  s     @@r   test_nested_callz+TestNoRetryFailedSignature.test_nested_call9  s    	d				 	 
		 
d				 	 	 	 
		 
d				& 	& 	& 	& 	& 
		& 	cr   c                       fd} |dd          } |dd          }                      |d                                 |d           d S )Nc                   	 d}ddi	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                 V    dxx         dz  cc<   rt          j        d          d S )Nr&  rz   invoke_failedc                     | S r   r   r   s    r   r  z]TestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.trigger.<locals>.<lambda>W  s     r   )r   r  )r   counter
would_fails    r   triggerzKTestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.triggerQ  s<     ! > ,_==="{"r   TrZ   c                     d S r   r   )r  r   s     r   identzITestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.identY  s    r   c                     | d         | d d         c}t          d          fd            }|r ||          S |S )Nr  TrZ   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   )fsr1  tab_tailr3  r2  chain_assigns    `  @r   r6  zPTestNoRetryFailedSignature.test_error_count.<locals>.check.<locals>.chain_assign]  sr    %'VRW"(d###* * * * * $#*  "'<&999!Mr   r'   rz   r(  )
r   r   r@   rI   r   r   r  r   r   r   )fieldr+  r  r,  r.  r   r  r   r6  r*  re   s    `      @@r   rf   z:TestNoRetryFailedSignature.test_error_count.<locals>.checkI  si   
 AAhG# # # # # ]# $    (- " " " " " " !L'a00E'!**C &&v'9:: "fE#qMMM" " " " " " " " " " " " " " "os63C/D/DEEEEc1 3<s   BB"BrK   Fr&  Trz   )rv   )re   rf   ct_okct_bads   `   r   test_error_countz+TestNoRetryFailedSignature.test_error_countH  su    +	  +	  +	  +	  +	 Z c5!!sD!! 	"""#####r   N)ri   rj   rk   rP  r  r  r#  r:  r   r   r   r  r    sZ         5 5 5     3$ 3$ 3$ 3$ 3$r   r  rz   c                     | |z   S r   r   r   s     r   add_y1r<  ~      q5Lr   c                     | |rdndz   S r   r   r   s     r   	add_ynoner?    s    QAr   c                     | |z  S r   r   r   s     r   multrA    r=  r   c                      |  || |           z   S r   r   )r   r  s     r   add_funcrC    s    ttAqzz>r   c                 N     | |          |                      |          k    sJ d S r   )r~   )f1r  s     r   _checkerrF    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)rz   r'   r(   )r   r_   r   )
multiprocessingget_contextAttributeErrorProcessrF  r   r   _TEST_TIMEOUTrv   exitcode)re   fcctxrK   ps        r   run_fc_multiprocz5TestMultiprocessingDefaultParameters.run_fc_multiproc  s    	"!-g66CC 	" 	" 	"!CCC	"  	, 	,A82q(;;AGGIIIFF=!!!QZ++++		, 	,s    ++c                 :    |                      t                     dS )z Tests issue #4888N)rT  r<  re   s    r   test_int_def_paramz7TestMultiprocessingDefaultParameters.test_int_def_param  s     	f%%%%%r   c                 :    |                      t                     dS )z" Tests None as a default parameterNrT  rC  rV  s    r   test_none_def_paramz8TestMultiprocessingDefaultParameters.test_none_def_param       	h'''''r   c                 :    |                      t                     dS )z( Tests a function as a default parameterNrY  rV  s    r   test_function_def_paramz<TestMultiprocessingDefaultParameters.test_function_def_param  r[  r   N)ri   rj   rk   rT  rW  rZ  r]  r   r   r   rH  rH    sP        , , ,"& & &
( ( (
( ( ( ( (r   rH  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	   )re   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)ri   rj   rk   rP  rg  r   r   r   r_  r_    s-                  r   r_  __main__)r'   r(   )r'   )r-   r   r  )DrK  platformr   r   r   	itertoolsr   ior   numpyr@   numbar   r   r   r   r	   
numba.corer
   r   r   numba.core.compilerr   numba.tests.supportr   r   numba.np.numpy_supportr   numba.core.dispatcherr   r   r   numba.testing.mainr   _RUNNER_TIMEOUTr=  rO  r  ImportErrorr  machiner?  r   r!   r%   r*   r,   r7   r=   rW   rY   rn   rA  rR  rT  r^  r  r  r  r<  r?  rA  rC  rF  rH  r_  ri   mainr   r   r   <module>rx     s(                              = = = = = = = = = = = = = = $ $ $ $ $ $ $ $       0 0 0 0 0 0 9 9 9 9 9 9 9 9 + + + + + + , , , , , , 9 9 9 9 9 9 9 9 : : : : : :   #%MMMM   FFFOOOO   HHH X8+
                     
 
 
 
 
x 
 
 
M4 M4 M4 M4 M4X M4 M4 M4`LN LN LN LN LNH LN LN LN^# # # # #&; # # #'- '- '- '- '-h '- '- '-Ty' y' y' y' y'H y' y' y'xJ@ J@ J@ J@ J@x J@ J@ J@Z= = = = =X. = = =2]$ ]$ ]$ ]$ ]$!2 ]$ ]$ ]$@                & & &( ( ( ( (;8I ( ( (D         H$5      $ zHMOOOOO s$   3A8 8BBB BB