
    J/Ph[                     6   d dl mZmZmZ d dlZ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mZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ  G d d	e          Z G d
 dee          Ze                                 e dk    r ej!                     dS dS )    )print_functionabsolute_importdivisionN)njitset_num_threadsget_num_threadsprangeconfigthreading_layerguvectorize)get_thread_id)TypingError)TestCaseskip_parfors_unsupportedtag)TestInSubprocessc                      e Zd ZdZd Zd Zed             Ze ej	        e
j        dk     d          d                         Ze ej	        e
j        dk     d          d                         Ze ej	        e
j        dk     d          d	                         Ze ej	        e
j        dk     d          d
                         Ze ej	        e
j        dk     d          d                         Ze ej	        e
j        dk     d          d                         Ze ej	        e
j        dk     d          d                         Ze ej	        e
j        dk     d          d                         Ze ej	        e
j        dk     d          d                         Ze ej	        e
j        dk     d          d                         Ze ej	        e
j        dk     d          d                         Ze ej	        e
j        dk     d           ej	        ej                            d           d          d                                     Zd Zed             ZdS )TestNumThreadsFc                 8    t          t          j                   d S Nr   r
   NUMBA_NUM_THREADSselfs    \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_num_threads.pysetUpzTestNumThreads.setUp   s     	011111    c                     t                      dk    r-|                     t          j        ||k                         d S t                      dv r"t          j                            ||           d S J d            )Ntbb)omp	workqueuer   unreachable)r   
assertTruenpalltestingassert_equal)r   expectedresults      r   
check_maskzTestNumThreads.check_mask   sz     %%OOBF6X#56677777"666J##Hf55555#m###r   c                 "   t           d             }d}|t          f|j        t          ffD ]d\  }}|                     |          5 } |             d d d            n# 1 swxY w Y   |                     |t          |j                             ed S )Nc                  $    t          d           d S )N
wrong_type)r    r   r   fooz5TestNumThreads.test_set_num_threads_type.<locals>.foo)   s    L)))))r   z2The number of threads specified must be an integer)r   r   py_func	TypeErrorassertRaisesassertInstr	exception)r   r/   r(   fnerrtyraisess         r   test_set_num_threads_typez(TestNumThreads.test_set_num_threads_type&   s     
	* 	* 
	* H,s{I.FG 	; 	;IB""5)) V              MM(C(8$9$9::::	; 	;s   AA	"A	   zNot enough CPU coresc                 2   t           j        }|                     t                      |           t	          d           |                     t                      d           t	          |           |                     t                      |           |                     t                    5  t	          d           d d d            n# 1 swxY w Y   |                     t                    5  t	          |dz              d d d            d S # 1 swxY w Y   d S )Nr:   r      )r
   r   assertEqualr   r   r2   
ValueError)r   max_threadss     r   _test_set_num_threads_basicz*TestNumThreads._test_set_num_threads_basic3   s    .**K888**A...$$$**K888z** 	 	A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 z** 	- 	-K!O,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s$   +CCC,DDDc                    t           j        }t          d             }|                      |            |           t	          d           |                      |            d           t	          |           |                      |            |           t          d             }|                      |d          d           |                      ||          |           d S )Nc                      t                      S r   r   r.   r   r   get_nz=TestNumThreads._test_set_num_threads_basic_jit.<locals>.get_nI       "$$$r   r:   c                 <    t          |            t                      S r   r   r   ns    r   	set_get_nzATestNumThreads._test_set_num_threads_basic_jit.<locals>.set_get_nS   s    A"$$$r   )r
   r   r   r=   r   )r   r?   rD   rJ   s       r   _test_set_num_threads_basic_jitz.TestNumThreads._test_set_num_threads_basic_jitD   s     .		% 	% 
	% 	+...!$$$$$$+...		% 	% 
	% 	1q)));//=====r   c                    t           j        }t          dgddd          d             }t          j        dt          j                  } ||           t          j                            ||           t          d	           t          j        dt          j                  } ||           t          j                            |d	           t          |           t          j        dt          j                  } ||           t          j                            ||           t          dgddd          d
             }t          j        dt          j                  }d	|d<    ||           t          j                            |d	           t          j        dt          j                  }||d<    ||           t          j                            ||           d S )Nvoid(int64[:])(n)Tparallelnopythontargetc                 ,    t                      | d d <   d S r   rC   xs    r   rD   zETestNumThreads._test_set_num_threads_basic_guvectorize.<locals>.get_n`       
 #$$AaaaDDDr   @KL dtyper:   c                 V    t          | d                    t                      | d d <   d S Nr   rG   rH   s    r   rJ   zITestNumThreads._test_set_num_threads_basic_guvectorize.<locals>.set_get_ns   -    
 AaD!!!"$$AaaaDDDr   r   )	r
   r   r   r$   zerosint64r&   r'   r   )r   r?   rD   rU   rJ   s        r   '_test_set_num_threads_basic_guvectorizez6TestNumThreads._test_set_num_threads_basic_guvectorize[   s    .	&'"&
( 
( 
(	% 	%	
( 
(	% HZrx000a

;///HZrx000a

1%%%$$$HZrx000a

;///	&'"&
( 
( 
(	% 	%	
( 
(	% HZrx000!	!

1%%%HZrx000!	!

;/////r   c                 z   t          d           t          d          d             }t          dgddd          d	             } |            }t          j                            |d           t          j        d
t          j                  } ||           t          j                            |d           d S )Nr:   TrO   c                  z    d} t          j        | f          }t          |           D ]}t                      ||<   |S N   )r$   emptyr	   r   rU   bufis      r   	test_funczCTestNumThreads._test_set_num_threads_outside_jit.<locals>.test_func   sA    A(A4..CAYY + +(**AJr   rM   rN   rO   rP   c                 ,    t                      | d d <   d S r   rC   rT   s    r   test_gufunczETestNumThreads._test_set_num_threads_outside_jit.<locals>.test_gufunc   rV   r   rW   rY   )r   r   r   r$   r&   r'   r^   r_   )r   rj   rl   outrU   s        r   !_test_set_num_threads_outside_jitz0TestNumThreads._test_set_num_threads_outside_jit   s    
 		t				 	 
		 
&'"&
( 
( 
(	% 	%	
( 
(	% ikk

Q'''HZrx000A

1%%%%%r   c                     t          d          d             }d} ||          }t          j                            ||           d S )NTrb   c                     d}t          j        |f          }t          |            t          |          D ]}t	                      ||<   |S rd   )r$   rf   r   r	   r   )nthreadsrU   rh   ri   s       r   rj   zBTestNumThreads._test_set_num_threads_inside_jit.<locals>.test_func   sO    A(A4..CH%%%AYY + +(**AJr   r:   )r   r$   r&   r'   )r   rj   maskrm   s       r    _test_set_num_threads_inside_jitz/TestNumThreads._test_set_num_threads_inside_jit   s[     
t				 	 
		 ioo

T*****r   c                     t          dgddd          d             }t          j        dt          j                  }d	}||d
<    ||           t          j                            ||           d S )NrM   rN   TrO   rP   c                 V    t          | d                    t                      | d d <   d S r\   rG   rT   s    r   rj   zJTestNumThreads._test_set_num_threads_inside_guvectorize.<locals>.test_func   r]   r   rW   rY   r:   r   )r   r$   r^   r_   r&   r'   )r   rj   rU   rr   s       r   (_test_set_num_threads_inside_guvectorizez7TestNumThreads._test_set_num_threads_inside_guvectorize   s     
&'"&
( 
( 
(	% 	%	
( 
(	% HZrx000!	!

4(((((r   c           	         t          dt          dt          j        dz                       D ]}t	          |           t          d          d             } |            }|                     ||f|           t          dgddd	
          d             }t          j	        ddt          j
                                      d          }t          j        dt          j
                  } |||           |                     ||           |                     |t          t          j        |                               d S )Nr:      r<   Trb   c                      d} t          j        | f          }t          |           D ]}t                      ||<   t	          t          j        |                    t                      fS NrX   )r$   rf   r	   r   lenuniquer   rg   s      r   rj   zITestNumThreads._test_get_num_threads_truth_outside_jit.<locals>.test_func   s[    htnn - -A*__CFF29S>>**O,=,===r   void(int64[:], int64[:])(n), (m)rO   rP   c                 N    t                      | d d <   t                      |d<   d S r\   )r   r   )rU   rm   s     r   rl   zKTestNumThreads._test_get_num_threads_truth_outside_jit.<locals>.test_gufunc   s(    
 %!!!(**Ar   rW   rY   d   iP  r<   )rangeminr
   r   r   r   r*   r   r$   fullr_   reshaper^   r{   r|   )r   rr   rj   rm   rl   rU   s         r   '_test_get_num_threads_truth_outside_jitz6TestNumThreads._test_get_num_threads_truth_outside_jit   sX    !SF$<q$@AABB 	5 	5DD!!! 4   > > ! > )++COOT4L#...45#"& *, , ,+ +	, ,+
 
Bbh777??MMA(4rx000CK3OOD#&&&OOD#bill"3"34444;	5 	5r   c           	      v   t          dt          dt          j        dz                       D ]
t	          d          fd            } |            }|                     f|           t          dgddd	
          fd            }t          j        ddt          j	                  
                    d          }t          j        dt          j	                  } |||           |                     |           |                     t          t          j        |                               d S )Nr:   rx   r<   Trb   c                      t                     d} t          j        | f          }t          |           D ]}t	                      ||<   t          t          j        |                    t                      fS rz   )r   r$   rf   r	   r   r{   r|   r   )rU   rh   ri   rr   s      r   rj   zHTestNumThreads._test_get_num_threads_truth_inside_jit.<locals>.test_func   sj    %%%htnn - -A*__CFF29S>>**O,=,===r   r}   r~   rO   rP   c                 n    t                     t                      | d d <   t                      |d<   d S r\   )r   r   r   )rU   rm   rr   s     r   rl   zJTestNumThreads._test_get_num_threads_truth_inside_jit.<locals>.test_gufunc   s7    
  %%%$!!!(**Ar   rW   r   rY   r   r   )r   r   r
   r   r   r*   r   r$   r   r_   r   r^   r{   r|   )r   rj   rm   rl   rU   rr   s        @r   &_test_get_num_threads_truth_inside_jitz5TestNumThreads._test_get_num_threads_truth_inside_jit   s_    !SF$<q$@AABB 	5 	5D 4   > > > > ! > )++COOT4L#...45#"& *, , ,+ + + +	, ,+ 
Bbh777??MMA(4rx000CK3OOD#&&&OOD#bill"3"34444=	5 	5r   c                 N   t                      dk    r|                     d           t          j        dz
  t          j        dt          j        z  t	          d          d             fd}d	D ]*} ||          } |          \  }} |d
          \  }}t
          j                            ||           t
          j                            ||           dt          j                  z  z   }|dk    r|	                    df          }	nt          j
        |          }	t
          j                            |	|           t          j        f          }
t          d          D ]}||
|d d f<   t
          j                            |
|           ,d S )Nr!   workqueue is not threadsafer<   r:   Trb   c                 d    | j         \  }}t          |          D ]}t                      | ||f<   d S r   )shaper	   r   rh   fidMNri   s        r   
child_funcz=TestNumThreads._test_nested_parallelism_1.<locals>.child_func  sA    9DAqAYY 0 0-//CF0 0r   c                 F    | dk    r
dfd	}n| dk    r	dfd	}|S )Nr   Fc                     t          d          fd            }|r|                    |           S  ||           S )NTrb   c                     d}t          j        f          }t          |            t                    D ]<}d|z  z   }t          |           |k     r ||           |t	                      z  }=||fS Nr   r<   )r$   r^   r   r	   r   )	rq   accrh   ri   
local_maskr   r   r   rr   s	        r   
_test_funczbTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func.<locals>._test_func"  s     h1v..'111!' 5 5A)*QXJ+J777)A~~ *
3
 ; ; ;?#4#44CC"Cxr   )r   r0   )rq   r0   r   r   r   r   rr   s      r   rj   zNTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func!  so    4(((( ( ( ( ( ( ( )((  4)11(;;;)z(333r   r   c                     	
 fd}t          j        	ft           j                  }t          j        dft           j                  }dt          j                  z  z                       df          }dg}d}|s t          ||dd          |          }n t          ||d	          |          } ||||           ||fS )
Nc                     t                     t          |d                    |d         k     r ||d                    | dxx         t                      z  cc<   d S r\   rG   )r   rh   r   r   r   rq   s      r   r   zbTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func.<locals>._test_func6  sh    '111'
1666%a=1,,&JsJqM:::A/"3"33r   rY   r<   z%void(int64[:], int64[:, :], int64[:])z(p), (n, m), (p)TrO   rP   forceobj)r$   r^   r_   aranger   r   )rq   r0   r   rh   r   r   siglayoutr   r   r   rr   s   `       r   rj   zNTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func5  s!   4 4 4 4 4 4 4 (Aq6:::C(Aq6:::C"#billT&9"9!B!BAq6!J!JJBCC/F" L&D[ft8B&D &D &DDN&P &P

&@[f:>&@ &@ &@@J&L &L
JsC4448Or   )Fr.   )	test_typerj   r   r   r   rr   s     r   get_testz;TestNumThreads._test_nested_parallelism_1.<locals>.get_test  s    F""4 4 4 4 4 4 4 4 4 4& m++$ $ $ $ $ $ $ $ $. r   r   r   )r0   r   )r   skipTestr
   r   r   r$   r&   r'   r   r   sumr^   r   )r   r   r   rj   got_accgot_arrexp_accexp_arrmath_acc_expmath_accmath_arrri   r   r   r   rr   s               @@@@r   _test_nested_parallelism_1z)TestNumThreads._test_nested_parallelism_1  s    ++MM7888 '!+$((	t				0 	0 
		0
-	 -	 -	 -	 -	 -	 -	 -	^ 1 	7 	7I ++I(yGW(yt<<<GWJ##GW555J##GW555 ry||d22LM))'//A776,//J##Hg666xA''H1a[[ # #!"AAAJ##Hg6666)	7 	7r   c                   	
 t                      dk    r|                     d           t          j        dz   
dt          j        z  dz   		
fd}t          j        dz
  i }dD ]=}dD ]8}|dk    r|dk    rt	                       |||                    |||f<   9>|d	         }|                                D ]"}t          j                            ||           #t          j	        	
f          }t          dt          j                  D ]}|||d d f<   t          j                            ||           d S )
Nr!   r   r<      c                    | dk    rt          d          }n | dk    rt          d          }n	| dk    rd }|d             |d	v rH|dk    rt          d          n |dk    rt          d          n	|dk    rd
 fd            }n=|dk    rt          dgddd          n|dk    rt          dgdd          fd}|S )NrO   Trb   r   Fnonec                     | S r   r.   rT   s    r   	child_deczNTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.child_decx  s    Hr   c                     | j         \  }}t          |           t          |          D ]}t                      | ||f<   d S r   )r   r   r	   r   r   s        r   childzJTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.child{  sO    y1$$$ 4 4A"1"3"3CQKK4 4r   rO   r   r   c                     | S r   r.   rT   s    r   test_deczMTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_dec  s     r   c                     t          j        f          }t          |            t                    D ]:}d|z  z   }|t          j        k     r  ||           t                      |k    sJ ;|S )Nr<   )r$   r^   r   r	   r
   r   r   )rq   rh   ri   r   r   r   r   rr   s       r   rj   zNTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_func  s    (Aq6**C#H---#AYY C C%&T\
 &(@@@!E#z222#2#4#4
#B#B#B#BJr   r   zint64[:,:], int64[:]z(n, m), (k)rP   guvectorize-objr   c                       fd            }t          j        ft           j                  }dt          j                  z  z                       df          } |||           |S )Nc                     t                     |d         t          j        k     r, | |d                    t                      |d         k    sJ d S d S r\   )r   r
   r   r   )rh   r   r   rq   s     r   r   zbTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_func.<locals>._test_func  se    '111 &a=6+CCC!E#z!}555#2#4#4
1#E#E#E#E DC#E#Er   rY   r<   )r$   r^   r_   r   r   )	rq   r   rh   r   r   r   r   rr   r   s	   `   r   rj   zNTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_func  s    F F F F F XF (Aq6:::C"#billT&9"9!B!BAq6!J!JJJsJ///Jr   r   )	
child_typer   r   rj   r   r   r   r   rr   s	       @@r   get_implz;TestNumThreads._test_nested_parallelism_2.<locals>.get_implq  s   Z'' $///		v%% %000		v%%   4 4 Y4 888
**#T222HH&((#U333HH&((! ! !          --*,B+C+842< >  >  >HH "333*,B+C+84 I  I  IH          r   )rO   r   r   r   r   r   r   )r   r   )r   r   r
   r   r   valuesr$   r&   r'   r^   r   )r   r   
res_arraysr   r   py_arrarrr   ri   r   r   rr   s            @@@r   _test_nested_parallelism_2z)TestNumThreads._test_nested_parallelism_2f  s    ++MM7888 $q(((1,@	 @	 @	 @	 @	 @	 @	D '!+
< 	1 	1I: 1 1
''I,?,?%%%5+HH	5+ 5++/51 51
9j011	1 N+$$&& 	1 	1CJ##C0000 8QF##q&233 	 	AHQTNN

&11111r      c                   	 t                      dk    r|                     d           dt          d          fd            	t          d          	fd            }d}|z  }|d	z   } ||          \  }}|                     ||           |                     ||           	fd
} ||          \  }}|                     ||           |                     ||           d S )Nr!   r   i@B Trb   c                     t          j                  }d}t          |            t                    D ]}|dz  }t	                      ||<   |t          j        |          fS r   )r$   r^   r   r	   r   r|   )local_nttidr   ri   BIGs       r   workz7TestNumThreads._test_nested_parallelism_3.<locals>.work  sc    (3--CCH%%%C[[ ) )q&A	#&&r   c                     t          |            t          j        |           }d}t          |           D ]*} | dz             \  }}t	          |          ||<   ||z  }+|t          j        |          fS r   )r   r$   r^   r	   r{   r|   )rq   lenstotalri   my_acctidsr   s         r   test_func_jitz@TestNumThreads._test_nested_parallelism_3.<locals>.test_func_jit  s    H%%%8H%%DEH%%    #tHqL11d))Q")D//))r   r:   r<   c                 \    t          dgddd           fd            }t          j         dft          j                  }t          j         t          j                                       df          } |||           |                                t          j        |          fS )	Nzint64[:], int64[:]z(n), (n)TrO   rP   c                 n     dz             \  }}t          |          |d<   | dxx         |z  cc<   d S )Nr<   r   )r{   )r   r   r   r   rq   r   s       r   test_func_guvectorizezbTestNumThreads._test_nested_parallelism_3.<locals>.test_guvectorize.<locals>.test_func_guvectorize  sE    
  $tHqL11d))QaF"r   r<   rY   )r   r$   r^   r_   r   r   r|   )rq   r   r   r   r   s   `   r   test_guvectorizezCTestNumThreads._test_nested_parallelism_3.<locals>.test_guvectorize  s    ./#"& *, , ,# # # # #	, ,#
 Hh]"(;;;E8HBH555==xmLLD!!%...99;;	$//r   )r   r   r   r=   r*   )
r   r   NTexpected_accexpected_thread_countr   got_tcr   r   r   s
           @@r   _test_nested_parallelism_3z)TestNumThreads._test_nested_parallelism_3  sI    ++MM7888 	t				' 	' 	' 	' 
		' 
t				* 	* 	* 	* 
		* Rx "Q'-++w///-v666	0 	0 	0 	0 	0" +*2..w///-v66666r   linuxz
Linux onlyc                     t          j        d          }t          d             fd}d}|                                  t          j                   t          |           |                                  |           |                                }|                    ||f          }|	                                 |
                                 |                     |                                |           d S )Nforkc                      t                      S r   rC   r.   r   r   r/   z8TestNumThreads._test_threadmask_across_fork.<locals>.foo  rE   r   c                 B    |                                              d S r   )put)queuer/   s    r   wrapz9TestNumThreads._test_threadmask_across_fork.<locals>.wrap  s!    IIcceer   r<   )rR   args)multiprocessingget_contextr   r=   r
   r   r   QueueProcessstartjoinget)r   forkctxr   rr   shared_queuepr/   s         @r   _test_threadmask_across_forkz+TestNumThreads._test_threadmask_across_fork  s     "-f55		% 	% 
	%	 	 	 	 	  8999%%%}}OO4|oO>>					))++T22222r   c                 8    t          t          j                   d S r   r   r   s    r   tearDownzTestNumThreads.tearDown$  s    011111r   c                    t                      }d}t          d          d             }t          d          d             }|                     |d            ||          \  }}|                     |d           t          j                            |d            ||          \  }}|                     |d           t          j                            |d           d S )N   Frb   c                     t                      }t          j        |           }t          |           D ]}t                      ||<   ||fS r   )r   r$   onesr	   )sizenjit_par_false_tidresri   s       r   	par_falsezBTestNumThreads._test_get_thread_id_not_parallel.<locals>.par_false,  sH    !.'$--CD\\ ) )&A%s**r   Tc                     t                      }t          j        |           }t          |           D ]}t                      ||<   ||fS r   )r   r$   r   r   )r   njit_par_true_tidr   ri   s       r   par_truezATestNumThreads._test_get_thread_id_not_parallel.<locals>.par_true4  sH     -'$--C4[[ ) )&A$c))r   r   )r   r   r=   r$   r&   r'   )	r   python_get_thread_idcheck_array_sizer   r   r   njit_par_false_arrr   njit_par_true_arrs	            r    _test_get_thread_id_not_parallelz/TestNumThreads._test_get_thread_id_not_parallel'  s   ,	u				+ 	+ 
		+ 
t				* 	* 
		* 	-q1111:;K1L1L..+Q///

 2A666/7x8H/I/I,,*A...

 1155555r   N)__name__
__module____qualname___numba_parallel_test_r   r*   r   r9   unittestskipIfr
   r   r@   rK   r`   rn   rs   rv   r   r   r   r   r   sysplatform
startswithr   r   r  r.   r   r   r   r      s       !2 2 2
$ $ $ 
; 
; 
; X_V-13IJJ- - KJ - X_V-13IJJ> > KJ >* X_V-13IJJ%0 %0 KJ %0N X_V-13IJJ& & KJ &6 X_V-13IJJ+ + KJ + X_V-13IJJ) ) KJ )  X_V-13IJJ5 5 KJ 5B X_V-13IJJ 5  5 KJ  5H X_V-13IJJS7 S7 KJ S7n X_V-13IJJa2 a2 KJ a2N X_V-13IJJ97 97 KJ 97v X_V-13IJJX_00999<HH3 3 IH KJ 3*2 2 2 6 6 6 6 6r   r   c                   `    e Zd ZeZdZd dD             Zd Zed             Z	ed             Z
dS )TestNumThreadsBackendsFc                 2    g | ]}|t           j        k    |S r.   )r
   r   ).0ri   s     r   
<listcomp>z!TestNumThreadsBackends.<listcomp>J  s%    PPP!v7O2O2O12O2O2Or   )r<   r:   r   r      c                     t           j                                        }t          |          |d<   t          |          |d<   t          j        ddd|g}|                     ||          S )NNUMBA_THREADING_LAYERr   z-mznumba.runtestsz-v)osenvironcopyr4   r	  
executablerun_cmd)r   testr   num_threadsenv_copycmdlines         r   run_test_in_separate_processz3TestNumThreadsBackends.run_test_in_separate_processL  s`    :??$$,/,@,@()(+K(8(8$%>4)94F||GX...r   c           	         	 | j         }| j        j        }|d|d|		fd}|dd          ddd}t          | | t	          d           ||                               d S )N.c                 |   |                                \  }}| j        rt          d|d|d           t          j        d|          }|(|                     |                    d                     |                     d|           |                     d|v           |                     d|v           d S )	Nz
stdout:
 "z"
 stderr:
 ""z\.\.\. skipped '(.*?)'r<   OKFAILERROR)	r  _DEBUGprintresearchr   groupr3   r#   )r   oembackendinjected_methodr  s       r   test_templatez5TestNumThreadsBackends._inject.<locals>.test_templateY  s    44_g5@B BDAq{ B111aaa@AAA 	3Q77A}aggajj)))MM$"""OOF!O,,,OOG1,-----r   r<   __threadslong_running)r  _classr  setattrr   )
clsnamer-  backend_guardr  themodtheclsr/  injected_testr.  s
     ` `    @r   _injectzTestNumThreadsBackends._injectS  s    $(.=	. 	. 	. 	. 	. 	. 	. /3122hhhM]#N##MM-$@$@AA	C 	C 	C 	C 	Cr   c           	          | j         j                                        D ]Y}| j                                        D ]=\  }}| j        D ]0}|                    d          s|                     ||||           1>Zd S )N_test_)r3  __dict__r  backendsitemsr  r  r;  )r5  r6  r-  r7  r  s        r   generatezTestNumThreadsBackends.generatek  s    J',,.. 	K 	KD*-,*<*<*>*> K K&#&? K KK??844 ! KKg}kJJJJKK	K 	Kr   N)r  r  r  r   r3  r%  r  r  classmethodr;  rA  r.   r   r   r  r  E  s        FF QP.PPPK/ / / C C [C. K K [K K Kr   r  __main__)"
__future__r   r   r   r	  r  r'  r   r  numpyr$   numbar   r   r   r	   r
   r   r   numba.np.ufunc.parallelr   numba.core.errorsr   numba.tests.supportr   r   r   !numba.tests.test_parallel_backendr   r   r  rA  r  mainr.   r   r   <module>rL     s   @ @ @ @ @ @ @ @ @ @ 



 				 				         1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ) ) ) ) ) ) G G G G G G G G G G > > > > > >n6 n6 n6 n6 n6X n6 n6 n6b-K -K -K -K -K-x -K -K -K`    ! ! !zHMOOOOO r   