
    i[                     "   S SK JrJrJr  S SKrS SKrS SKrS SKrS SKrS SK	r
S SKJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJrJrJr  S SKJr   " S S	\5      r " S
 S\\5      r\R?                  5         \ S:X  a  \RB                  " 5         gg)    )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                      \ rS rSrSrS rS r\S 5       r\\	R                  " \R                  S:  S5      S 5       5       r\\	R                  " \R                  S:  S5      S	 5       5       r\\	R                  " \R                  S:  S5      S
 5       5       r\\	R                  " \R                  S:  S5      S 5       5       r\\	R                  " \R                  S:  S5      S 5       5       r\\	R                  " \R                  S:  S5      S 5       5       r\\	R                  " \R                  S:  S5      S 5       5       r\\	R                  " \R                  S:  S5      S 5       5       r\\	R                  " \R                  S:  S5      S 5       5       r\\	R                  " \R                  S:  S5      S 5       5       r\\	R                  " \R                  S:  S5      S 5       5       r\\	R                  " \R                  S:  S5      \	R                  " \R2                  R5                  S5      (       + S5      S 5       5       5       rS r\S 5       rSrg)TestNumThreads   Fc                 6    [        [        R                  5        g Nr   r
   NUMBA_NUM_THREADSselfs    W/var/www/html/trading/venv/lib/python3.13/site-packages/numba/tests/test_num_threads.pysetUpTestNumThreads.setUp   s     	001    c                     [        5       S:X  a(  U R                  [        R                  " X!:*  5      5        g [        5       S;   a   [        R                  R                  X5        g  S5       e)Ntbb)omp	workqueueunreachable)r   
assertTruenpalltestingassert_equal)r   expectedresults      r   
check_maskTestNumThreads.check_mask   sO     %OOBFF6#567"66JJ##H5#m#1r   c                    [         S 5       nSnU[        4UR                  [        44 HK  u  p4U R	                  U5       nU" 5         S S S 5        U R                  U[        WR                  5      5        MM     g ! , (       d  f       N8= f)Nc                      [        S5        g )N
wrong_type)r    r   r   foo5TestNumThreads.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   r2   r*   fnerrtyraisess         r   test_set_num_threads_type(TestNumThreads.test_set_num_threads_type&   sx     
	* 
	* H,s{{I.FGIB""5)V *MM(C(8(8$9: H))s   A99
B	   zNot enough CPU coresc                    [         R                  nU R                  [        5       U5        [	        S5        U R                  [        5       S5        [	        U5        U R                  [        5       U5        U R                  [        5         [	        S5        S S S 5        U R                  [        5         [	        US-   5        S S S 5        g ! , (       d  f       N;= f! , (       d  f       g = f)Nr?   r      )r
   r   assertEqualr   r   r6   
ValueError)r   max_threadss     r   _test_set_num_threads_basic*TestNumThreads._test_set_num_threads_basic3   s     ..*K8*A.$*K8z*A + z*K!O, +* +* +*s   
C3C
C
C*c                 j   [         R                  n[        S 5       nU R                  U" 5       U5        [	        S5        U R                  U" 5       S5        [	        U5        U R                  U" 5       U5        [        S 5       nU R                  U" S5      S5        U R                  U" U5      U5        g )Nc                      [        5       $ r   r   r1   r   r   get_n=TestNumThreads._test_set_num_threads_basic_jit.<locals>.get_nI       "$$r   r?   c                 ,    [        U 5        [        5       $ r   r   r   ns    r   	set_get_nATestNumThreads._test_set_num_threads_basic_jit.<locals>.set_get_nS   s    A"$$r   )r
   r   r   rB   r   )r   rD   rJ   rQ   s       r   _test_set_num_threads_basic_jit.TestNumThreads._test_set_num_threads_basic_jitD   s     ..		% 
	% 	+.!$$+.		% 
	% 	1q);/=r   c                    [         R                  n[        S/SSSS9S 5       n[        R                  " S[        R
                  S9nU" U5        [        R                  R                  X15        [        S	5        [        R                  " S[        R
                  S9nU" U5        [        R                  R                  US	5        [        U5        [        R                  " S[        R
                  S9nU" U5        [        R                  R                  X15        [        S/SSSS9S
 5       n[        R                  " S[        R
                  S9nS	US'   U" U5        [        R                  R                  US	5        [        R                  " S[        R
                  S9nXS'   U" U5        [        R                  R                  X15        g )Nvoid(int64[:])(n)Tparallelnopythontargetc                     [        5       U S S & g r   rI   xs    r   rJ   ETestNumThreads._test_set_num_threads_basic_guvectorize.<locals>.get_n`       
 #$AaDr   @KL dtyper?   c                 :    [        U S   5        [        5       U S S & g Nr   rN   rO   s    r   rQ   ITestNumThreads._test_set_num_threads_basic_guvectorize.<locals>.set_get_ns       
 AaD!"$AaDr   r   )	r
   r   r   r&   zerosint64r(   r)   r   )r   rD   rJ   r^   rQ   s        r   '_test_set_num_threads_basic_guvectorize6TestNumThreads._test_set_num_threads_basic_guvectorize[   sd    ..	&'"&
(	%	
(	% HHZrxx0a


/HHZrxx0a


1%$HHZrxx0a


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


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


/r   c                 B   [        S5        [        SS9S 5       n[        S/SSSS9S	 5       nU" 5       n[        R                  R                  US5        [        R                  " S
[        R                  S9nU" U5        [        R                  R                  US5        g )Nr?   TrX   c                  t    Sn [         R                  " U 45      n[        U 5       H  n[        5       X'   M     U$ N   )r&   emptyr	   r   r^   bufis      r   	test_funcCTestNumThreads._test_set_num_threads_outside_jit.<locals>.test_func   s3    A((A4.CAY(* Jr   rV   rW   rX   rY   c                     [        5       U S S & g r   rI   r]   s    r   test_gufuncETestNumThreads._test_set_num_threads_outside_jit.<locals>.test_gufunc   r`   r   ra   rc   )r   r   r   r&   r(   r)   ri   rj   )r   rv   ry   outr^   s        r   !_test_set_num_threads_outside_jit0TestNumThreads._test_set_num_threads_outside_jit   s    
 		t		 
	 
&'"&
(	%	
(	% k


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


1%r   c                 t    [        SS9S 5       nSnU" U5      n[        R                  R                  X25        g )NTrn   c                     Sn[         R                  " U45      n[        U 5        [        U5       H  n[	        5       X#'   M     U$ rp   )r&   rr   r   r	   r   )nthreadsr^   rt   ru   s       r   rv   BTestNumThreads._test_set_num_threads_inside_jit.<locals>.test_func   s;    A((A4.CH%AY(* Jr   r?   )r   r&   r(   r)   )r   rv   maskr{   s       r    _test_set_num_threads_inside_jit/TestNumThreads._test_set_num_threads_inside_jit   s=     
t		 
	 o


*r   c                     [        S/SSSS9S 5       n[        R                  " S[        R                  S9nS	nX2S
'   U" U5        [        R                  R                  X#5        g )NrV   rW   TrX   rY   c                 :    [        U S   5        [        5       U S S & g rf   rN   r]   s    r   rv   JTestNumThreads._test_set_num_threads_inside_guvectorize.<locals>.test_func   rh   r   ra   rc   r?   r   )r   r&   ri   rj   r(   r)   )r   rv   r^   r   s       r   (_test_set_num_threads_inside_guvectorize7TestNumThreads._test_set_num_threads_inside_guvectorize   se     
&'"&
(	%	
(	% HHZrxx0!!


(r   c           	      *   [        S[        S[        R                  S-   5      5       H  n[	        U5        [        SS9S 5       nU" 5       nU R                  X4U5        [        S/SSS	S
9S 5       n[        R                  " SS[        R                  S9R                  S5      n[        R                  " S[        R                  S9nU" XS5        U R                  X5        U R                  U[        [        R                  " U5      5      5        M     g )Nr?      rA   Trn   c                      Sn [         R                  " U 45      n[        U 5       H  n[        5       X'   M     [	        [         R
                  " U5      5      [        5       4$ Nrb   )r&   rr   r	   r   lenuniquer   rs   s      r   rv   ITestNumThreads._test_get_num_threads_truth_outside_jit.<locals>.test_func   sH    hhtnA*_CF #299S>*O,===r   void(int64[:], int64[:])(n), (m)rX   rY   c                 8    [        5       U S S & [        5       US'   g rf   )r   r   )r^   r{   s     r   ry   KTestNumThreads._test_get_num_threads_truth_outside_jit.<locals>.test_gufunc   s    
 %!(*Ar   ra   rc   d   iP  rA   )rangeminr
   r   r   r   r,   r   r&   fullrj   reshaperi   r   r   )r   r   rv   r{   ry   r^   s         r   '_test_get_num_threads_truth_outside_jit6TestNumThreads._test_get_num_threads_truth_outside_jit   s     !SF$<$<q$@ABDD! 4 > !> +COOTL#.45#"& *,+	,+
 
Bbhh7??MA((4rxx0COOD&OOD#biil"34; Cr   c           	      &  ^ [        S[        S[        R                  S-   5      5       H  m[	        SS9U4S j5       nU" 5       nU R                  TT4U5        [        S/SSS	S
9U4S j5       n[        R                  " SS[        R                  S9R                  S5      n[        R                  " S[        R                  S9nU" XB5        U R                  TU5        U R                  T[        [        R                  " U5      5      5        M     g )Nr?   r   rA   Trn   c                     > [        T5        Sn [        R                  " U 45      n[        U 5       H  n[	        5       X'   M     [        [        R                  " U5      5      [        5       4$ r   )r   r&   rr   r	   r   r   r   r   )r^   rt   ru   r   s      r   rv   HTestNumThreads._test_get_num_threads_truth_inside_jit.<locals>.test_func   sQ    %hhtnA*_CF #299S>*O,===r   r   r   rX   rY   c                 P   > [        T5        [        5       U S S & [        5       US'   g rf   )r   r   r   )r^   r{   r   s     r   ry   JTestNumThreads._test_get_num_threads_truth_inside_jit.<locals>.test_gufunc   s$    
  %$!(*Ar   ra   r   rc   r   r   )r   r   r
   r   r   r,   r   r&   r   rj   r   ri   r   r   )r   rv   r{   ry   r^   r   s        @r   &_test_get_num_threads_truth_inside_jit5TestNumThreads._test_get_num_threads_truth_inside_jit   s     !SF$<$<q$@ABD 4 > !> +COOT4L#.45#"& *,+	,+ 
Bbhh7??MA((4rxx0COOD#&OOD#biil"34= Cr   c                 (  ^^^^ [        5       S:X  a  U R                  S5        [        R                  S-
  m[        R                  mS[        R                  -  m[	        SS9S 5       mUUUU4S jnS	 GH  nU" U5      nU" T5      u  pEU" TSS
9u  pg[
        R                  R                  Xd5        [
        R                  R                  Xu5        S[
        R                  " T5      T-  -   nUS:X  a  UR                  TS45      n	O[
        R                  " U5      n	[
        R                  R                  X5        [
        R                  " TT45      n
[        ST5       H  nXUS S 24'   M     [
        R                  R                  X5        GM     g )Nr#   workqueue is not threadsaferA   r?   Trn   c                 `    U R                   u  p#[        U5       H  n[        5       XU4'   M     g r   )shaper	   r   rt   fidMNru   s        r   
child_func=TestNumThreads._test_nested_parallelism_1.<locals>.child_func  s)    99DAAY-/F r   c                 P   > U S:X  a  SUUUU4S jjnU$ U S:X  a  SUUUU4S jjnW$ )Nr   c                 n   > [        SS9UUUU4S j5       nU(       a  UR                  U 5      $ U" U 5      $ )NTrn   c                    > Sn[         R                  " TT45      n[        U 5        [        T5       H1  nSUT-  -   n[        U5        UT:  a  T" X$5        U[	        5       -  nM3     X4$ Nr   rA   )r&   ri   r   r	   r   )	r   accrt   ru   
local_maskr   r   r   r   s	        r   
_test_funcbTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func.<locals>._test_func"  sj     hh1v.'1!'A)*QXJ+J7)A~ *3 ;?#44C "+  #xr   )r   r4   )r   r4   r   r   r   r   r   s      r   rv   NTestNumThreads._test_nested_parallelism_1.<locals>.get_test.<locals>.test_func!  s;    4(( )( )11(;;)(33r   r   c                 x  >^  U	U
U 4S jn[         R                  " TT	4[         R                  S9n[         R                  " TS4[         R                  S9nS[         R                  " T5      T-  -   R	                  TS45      nS/nSnU(       d  [        XgSSS9" U5      nO[        XgSS	9" U5      nU" XCU5        XC4$ )
Nc                    > [        T5        [        US   5        US   T:  a  T" XS   5        U S==   [        5       -  ss'   g rf   rN   )r   rt   r   r   r   r   s      r   r   r   6  s@    '1'
16%a=1,&sqM:A/"33r   rc   rA   z%void(int64[:], int64[:, :], int64[:])z(p), (n, m), (p)TrX   rY   forceobj)r&   ri   rj   aranger   r   )r   r4   r   rt   r   r   siglayoutr   r   r   r   s   `       r   rv   r   5  s    4 ((Aq6:C((Aq6:C"#biilT&9"9!B!BAq6!JJBCC/F"%0t8B&DDN&P
 &1:>&@@J&L
s48Or   )Fr1   )	test_typerv   r   r   r   r   s     r   get_test;TestNumThreads._test_nested_parallelism_1.<locals>.get_test  s:    F"4 4V 1 m+$ $. r   r   r   )r4   r   )r   skipTestr
   r   r   r&   r(   r)   r   r   sumri   r   )r   r   r   rv   got_accgot_arrexp_accexp_arrmath_acc_expmath_accmath_arrru   r   r   r   r   s               @@@@r   _test_nested_parallelism_1)TestNumThreads._test_nested_parallelism_1  sW    +MM78 ''!+$$(((	t		0 
	0
-	 -	^ 1I +I(G(t<GJJ##G5JJ##G5 ryy|d22LM)'//A766,/JJ##H6xxA'H1a[!"A ! JJ##H6) 1r   c                   ^	^
^ [        5       S:X  a  U R                  S5        [        R                  S-   m
S[        R                  -  S-   m	U	U
U4S jn[        R                  S-
  m0 nS H7  nS H.  nUS:X  a  US:w  a  M  [	        T5        U" XC5      " T5      X#U4'   M0     M9     US	   nUR                  5        H"  n[        R                  R                  Xe5        M$     [        R                  " T	T
45      n[        S[        R                  5       H  nXUS S 24'   M     [        R                  R                  Xu5        g )
Nr#   r   rA      c                 L  >^^ U S:X  a
  [        SS9nOU S:X  a
  [        SS9nO	U S:X  a  S nWS 5       mUS	;   a9  US:X  a
  [        SS9mOUS:X  a
  [        SS9mO	US:X  a  S
 mTUUUU4S j5       nU$ US:X  a  [        S/SSSS9mOUS:X  a  [        S/SSS9mUUUUU4S jnU$ )NrX   Trn   r   Fnonec                     U $ r   r1   r]   s    r   	child_decNTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.child_decx  s    Hr   c                 v    U R                   u  p#[        U5        [        U5       H  n[        5       XU4'   M     g r   )r   r   r	   r   r   s        r   childJTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.child{  s1    yy$A"1"3CQK #r   rX   r   r   c                     U $ r   r1   r]   s    r   test_decMTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_dec  s     r   c                    > [         R                  " TT45      n[        U 5        [        T5       H9  nSUT-  -   nU[        R
                  :  d  M!  T" X5        [        5       U:X  a  M9   e   U$ )NrA   )r&   ri   r   r	   r
   r   r   )r   rt   ru   r   r   r   r   r   s       r   rv   NTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_func  sh    ((Aq6*C#H-#AY%&T\
 &(@(@@!#2#2#4
#BB#B ' Jr   r   zint64[:,:], int64[:]z(n, m), (k)rY   guvectorize-objr   c                    >^  TUU 4S j5       n[         R                  " TT4[         R                  S9nS[         R                  " T5      T-  -   R	                  TS45      nU" X#5        U$ )Nc                    > [        T5        US   [        R                  :  a  T" XS   5        [        5       US   :X  d   eg g rf   )r   r
   r   r   )rt   r   r   r   s     r   r   bTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.test_func.<locals>._test_func  sF    '1 &a=6+C+CC!#!}5#2#4
1#EE#E Dr   rc   rA   )r&   ri   rj   r   r   )	r   r   rt   r   r   r   r   r   r   s	   `   r   rv   r     sd    F F ((Aq6:C"#biilT&9"9!B!BAq6!JJs/Jr   r   )	
child_typer   r   rv   r   r   r   r   r   s	       @@r   get_impl;TestNumThreads._test_nested_parallelism_2.<locals>.get_implq  s    Z' $/	v% %0	v% 4 4 88
*#T2H&(#U3H&(!  J 1 -*,B+C+842< >H "33*,B+C+84 IH   r   )rX   r   r   r   r   r   r   )r   r   )r   r   r
   r   r   valuesr&   r(   r)   ri   r   )r   r   
res_arraysr   r   py_arrarrr   ru   r   r   r   s            @@@r   _test_nested_parallelism_2)TestNumThreads._test_nested_parallelism_2f  s*    +MM78 $$q((((1,@	D ''!+
<I:
'I,?%4<5++/51
j01	 ;< N+$$&CJJ##C0 ' 88QF#q&223AQTN 4 	

1r      c                 f  ^^	 [        5       S:X  a  U R                  S5        Sm[        SS9U4S j5       m	[        SS9U	4S j5       nSnTU-  nUS	-   nU" U5      u  pVU R                  X55        U R	                  XF5        U	4S
 jnU" U5      u  pVU R                  X55        U R	                  XF5        g )Nr#   r   i@B Trn   c                    > [         R                  " T5      nSn[        U 5        [        T5       H  nUS-  n[	        5       X'   M     U[         R
                  " U5      4$ r   )r&   ri   r   r	   r   r   )local_nttidr   ru   BIGs       r   work7TestNumThreads._test_nested_parallelism_3.<locals>.work  sR    ((3-CCH%C[q& ! 		#&&r   c                    > [        U 5        [        R                  " U 5      nSn[        U 5       H!  nT" U S-   5      u  pE[	        U5      X'   X$-  nM#     U[        R
                  " U5      4$ r   )r   r&   ri   r	   r   r   )r   lenstotalru   my_acctidsr   s         r   test_func_jit@TestNumThreads._test_nested_parallelism_3.<locals>.test_func_jit  sd    H%88H%DEH%#HqL1d) & "))D/))r   r?   rA   c                 B  >^  [        S/SSSS9U U4S j5       n[        R                  " T S4[        R                  S9n[        R                  " T [        R                  S9R	                  T S45      nU" X#5        UR                  5       [        R                  " U5      4$ )	Nzint64[:], int64[:]z(n), (n)TrX   rY   c                 V   > T" TS-   5      u  p#[        U5      US'   U S==   U-  ss'   g )NrA   r   )r   )r   r   r   r   r   r   s       r   test_func_guvectorizebTestNumThreads._test_nested_parallelism_3.<locals>.test_guvectorize.<locals>.test_func_guvectorize  s0    
  $HqL1d)QaF"r   rA   rc   )r   r&   ri   rj   r   r   r   )r   r   r   r   r   s   `   r   test_guvectorizeCTestNumThreads._test_nested_parallelism_3.<locals>.test_guvectorize  s    ./#"& *,#	,#
 HHh]"((;E88HBHH5==xmLD!%.99;		$//r   )r   r   r   rB   r,   )
r   r   NTexpected_accexpected_thread_countr   got_tcr   r   r   s
           @@r   _test_nested_parallelism_3)TestNumThreads._test_nested_parallelism_3  s     +MM78 	t		' 
	' 
t		* 
	* Rx "Q'+/-6	0" +2./-6r   linuxz
Linux onlyc                   ^ [         R                  " S5      n[        S 5       mU4S jnSnU R                  T" 5       [        R
                  5        [        U5        U R                  T" 5       U5        UR                  5       nUR                  X$4S9nUR                  5         UR                  5         U R                  UR                  5       U5        g )Nforkc                      [        5       $ r   rI   r1   r   r   r2   8TestNumThreads._test_threadmask_across_fork.<locals>.foo  rL   r   c                 2   > U R                  T" 5       5        g r   )put)queuer2   s    r   wrap9TestNumThreads._test_threadmask_across_fork.<locals>.wrap  s    IIcer   rA   )r[   args)multiprocessingget_contextr   rB   r
   r   r   QueueProcessstartjoinget)r   forkctxr  r   shared_queuepr2   s         @r   _test_threadmask_across_fork+TestNumThreads._test_threadmask_across_fork  s     "--f5		% 
	%	  8 89%}}OO4oO>			))+T2r   c                 6    [        [        R                  5        g r   r   r   s    r   tearDownTestNumThreads.tearDown$  s    001r   c                 l   [        5       nSn[        SS9S 5       n[        SS9S 5       nU R                  US5        U" U5      u  pVU R                  US5        [        R                  R                  US5        U" U5      u  pxU R                  US5        [        R                  R                  US5        g )N   Frn   c                     [        5       n[        R                  " U 5      n[        U 5       H  n[        5       X#'   M     X4$ r   )r   r&   onesr	   )sizenjit_par_false_tidresru   s       r   	par_falseBTestNumThreads._test_get_thread_id_not_parallel.<locals>.par_false,  s7    !.''$-CD\& "%**r   Tc                     [        5       n[        R                  " U 5      n[        U 5       H  n[        5       X#'   M     X4$ r   )r   r&   r$  r   )r%  njit_par_true_tidr'  ru   s       r   par_trueATestNumThreads._test_get_thread_id_not_parallel.<locals>.par_true4  s7     -''$-C4[& !$))r   r   )r   r   rB   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_parallel/TestNumThreads._test_get_thread_id_not_parallel'  s    ,	u		+ 
	+ 
t		* 
	* 	-q11:;K1L.+Q/


 2A6/78H/I,*A.


 115r   r1   N)__name__
__module____qualname____firstlineno___numba_parallel_test_r   r,   r   r=   unittestskipIfr
   r   rE   rS   rk   r|   r   r   r   r   r   r   r  sysplatform
startswithr  r  r2  __static_attributes__r1   r   r   r   r      s   !2
$ 
; 
; __V--13IJ- K - __V--13IJ> K >* __V--13IJ%0 K %0N __V--13IJ& K &6 __V--13IJ+ K + __V--13IJ) K )  __V--13IJ5 K 5B __V--13IJ 5 K  5H __V--13IJS7 K S7n __V--13IJa2 K a2N __V--13IJ97 K 97v __V--13IJ__0099<H3 I K 3*2 6 6r   r   c                       \ rS rSr\rSrS V VVs/ s H  o[        R                  ::  d  M  UPM     snnn r	S r
\S 5       r\S 5       rSrgs  snnn f )	TestNumThreadsBackendsiE  F)rA   r?   r   r"     c                     [         R                  R                  5       n[        U5      US'   [        U5      US'   [        R
                  SSSU/nU R                  XT5      $ )NNUMBA_THREADING_LAYERr   z-mznumba.runtestsz-v)osenvironcopyr8   r;  
executablerun_cmd)r   testr   num_threadsenv_copycmdlines         r   run_test_in_separate_process3TestNumThreadsBackends.run_test_in_separate_processL  sV    ::??$,/,@()(+K(8$%>>4)94F||G..r   c           	         ^^^	 U R                   nU R                  R                  nU< SU< SU< 3m	UU	U4S jnUSS  < ST< ST< S3n[        X[	        S5      " U" U5      5      5        g )N.c                 b  > U R                  TTT5      u  pU R                  (       a  [        SU< SU< S35        [        R                  " SU5      nUb   U R                  UR                  S5      5        U R                  SU5        U R                  SU;  5        U R                  SU;  5        g )	Nz
stdout:
 "z"
 stderr:
 ""z\.\.\. skipped '(.*?)'rA   OKFAILERROR)	rM  _DEBUGprintresearchr   groupr7   r%   )r   oembackendinjected_methodrJ  s       r   test_template5TestNumThreadsBackends._inject.<locals>.test_templateY  s    44_g5@BDA{{1a@A 		3Q7A}aggaj)MM$"OOF!O,OOG1,-r   rA   __threadslong_running)r5  _classr4  setattrr   )
clsnamer^  backend_guardrJ  themodtheclsr`  injected_testr_  s
     ` `    @r   _injectTestNumThreadsBackends._injectS  s]    $$(.=	. /312hMN#M-$@A	Cr   c           	         U R                   R                  R                  5        Hc  nU R                  R	                  5        HB  u  p#U R
                   H-  nUR                  S5      (       d  M  U R                  XX45        M/     MD     Me     g )N_test_)re  __dict__rF  backendsitemsrJ  r=  rm  )rg  rh  r^  ri  rJ  s        r   generateTestNumThreadsBackends.generatek  sg    JJ'',,.D*-,,*<*<*>&#&??K??844 KK}J $3 +? /r   r1   N)r4  r5  r6  r7  r   re  rV  r
   r   rJ  rM  classmethodrm  rt  r>  ).0ru   r
   s   000r   r@  r@  E  sg    FF /P.v7O7O2O1.PK/ C C. K KE Qs
   AAr@  __main__)"
__future__r   r   r   r;  rD  rX  r  r9  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@  rt  r4  mainr1   r   r   <module>r     s    @ @ 
 	 	   1 1 1 1 ) G G >n6X n6b-K-x -K`    !zMMO r   