
    xKg[                         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j?                          e dk(  r ejB                          yy)    )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j0                  j3                  d       d      d                      Zd Zed        Zy)TestNumThreadsFc                 6    t        t        j                         y Nr   r
   NUMBA_NUM_THREADSselfs    `/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_num_threads.pysetUpzTestNumThreads.setUp   s     	001    c                     t               dk(  r(| j                  t        j                  ||k               y t               dv r!t        j                  j                  ||       y J d       )Ntbb)omp	workqueueunreachable)r   
assertTruenpalltestingassert_equal)r   expectedresults      r   
check_maskzTestNumThreads.check_mask   sS     %OOBFF6X#567"66JJ##Hf5#m#1r   c                    t         d        }d}|t        f|j                  t        ffD ]K  \  }}| j	                  |      5 } |        d d d        | j                  |t        j                               M y # 1 sw Y   1xY w)Nc                      t        d       y )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&   sz     
	* 
	* H,s{{I.FGIB""5)V *MM(C(8(8$9: H))s    A88B	   zNot enough CPU coresc                    t         j                  }| j                  t               |       t	        d       | j                  t               d       t	        |       | j                  t               |       | j                  t              5  t	        d       d d d        | j                  t              5  t	        |dz          d d d        y # 1 sw Y   6xY w# 1 sw Y   y xY w)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*A.$*K8z*A + z*K!O, +* +* +*s   
C3CCC c                 j   t         j                  }t        d        }| j                   |       |       t	        d       | j                   |       d       t	        |       | j                   |       |       t        d        }| j                   |d      d       | j                   ||      |       y )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                  j                  ||       t        d	       t        j                  dt        j
                        } ||       t        j                  j                  |d	       t        |       t        j                  dt        j
                        } ||       t        j                  j                  ||       t        dgddd      d
        }t        j                  dt        j
                        }d	|d<    ||       t        j                  j                  |d	       t        j                  dt        j
                        }||d<    ||       t        j                  j                  ||       y )Nvoid(int64[:])(n)Tparallelnopythontargetc                     t               | d d  y r   rC   xs    r   rD   zETestNumThreads._test_set_num_threads_basic_guvectorize.<locals>.get_n`       
 #$AaDr   @KL dtyper:   c                 :    t        | d          t               | d d  y Nr   rG   rH   s    r   rJ   zITestNumThreads._test_set_num_threads_basic_guvectorize.<locals>.set_get_ns       
 AaD!"$AaDr   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[   sl    ..	&'"&
(	%	
(	% HHZrxx0a


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


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


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


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


;/r   c                 R   t        d       t        d      d        }t        dgddd      d	        } |       }t        j                  j                  |d       t        j                  d
t        j                        } ||       t        j                  j                  |d       y )Nr:   TrO   c                  p    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   s5    A((A4.CAY(*A Jr   rM   rN   rO   rP   c                     t               | d d  y 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		 
	 
&'"&
(	%	
(	% k


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


1%r   c                 |    t        d      d        }d} ||      }t        j                  j                  ||       y )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   s=    A((A4.CH%AY(*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		 
	 o


T*r   c                     t        dgddd      d        }t        j                  dt        j                        }d	}||d
<    ||       t        j                  j                  ||       y )NrM   rN   TrO   rP   c                 :    t        | d          t               | d d  y 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   si     
&'"&
(	%	
(	% HHZrxx0!!


4(r   c           	      >   t        dt        dt        j                  dz               D ]  }t	        |       t        d      d        } |       }| j                  ||f|       t        dgddd	
      d        }t        j                  ddt        j                        j                  d      }t        j                  dt        j                        } |||       | j                  ||       | j                  |t        t        j                  |                    y )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   sJ    hhtnA*_CF #299S>*O,===r   void(int64[:], int64[:])(n), (m)rO   rP   c                 8    t               | d d  t               |d<   y 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   s     !SF$<$<q$@ABDD! 4 > !> +COOT4L#.45#"& *,+	,+
 
Bbhh7??MA((4rxx0C3OOD#&OOD#biil"34; Cr   c           	      2   t        dt        dt        j                  dz               D ]  t	        d      fd       } |       }| j                  f|       t        dgddd	
      fd       }t        j                  ddt        j                        j                  d      }t        j                  dt        j                        } |||       | j                  |       | j                  t        t        j                  |                    y )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   sS    %hhtnA*_CF #299S>*O,===r   r}   r~   rO   rP   c                 P    t               t               | d d  t               |d<   y r\   )r   r   r   )rU   rm   rr   s     r   rl   zJTestNumThreads._test_get_num_threads_truth_inside_jit.<locals>.test_gufunc   s$    
  %$!(*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BD 4 > !> +COOT4L#.45#"& *,+	,+ 
Bbhh7??MA((4rxx0C3OOD#&OOD#biil"34= Cr   c                 .   t               dk(  r| j                  d       t        j                  dz
  t        j                  dt        j                  z  t	        d      d        fd}d	D ]  } ||      } |      \  }} |d
      \  }}t
        j                  j                  ||       t
        j                  j                  ||       dt        j                        z  z   }|dk(  r|j                  df      }	nt        j                  |      }	t
        j                  j                  |	|       t        j                  f      }
t        d      D ]  }||
|d d f<    t
        j                  j                  |
|         y )Nr!   workqueue is not threadsafer<   r:   Trb   c                 `    | j                   \  }}t        |      D ]  }t               | ||f<    y r   )shaper	   r   rh   fidMNri   s        r   
child_funcz=TestNumThreads._test_nested_parallelism_1.<locals>.child_func  s-    99DAqAY-/CF r   c                 D    | dk(  rdfd	}|S | dk(  r	dfd	}S )Nr   c                 h    t        d      fd       }|r|j                  |       S  ||       S )NTrb   c                     d}t        j                  f      }t        |        t              D ]0  }d|z  z   }t        |       |k  r	 ||       |t	               z  }2 ||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"  sn     hh1v.'1!'A)*QXJ+J7)A~ *3
 ;?#44C "+  #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!  s;    4(( )( )11(;;)(33r   r   c                     	
 fd}t        j                  	ft         j                        }t        j                  dft         j                        }dt        j                        z  z   j	                  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<   y 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  sB    '1'
16%a=1,&sJqM:A/"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 ((Aq6:C((Aq6:C"#biilT&9"9!B!BAq6!JJBCC/F"&D[ft8B&DDN&P
&@[f:>&@@J&L
sC48Or   )Fr.   )	test_typerj   r   r   r   rr   s     r   get_testz;TestNumThreads._test_nested_parallelism_1.<locals>.get_test  s:    F"4 4V 1 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 ''!+$$(((	t		0 
	0
-	^ 1I +I(GW(t<GWJJ##GW5JJ##GW5 ryy|d22LM)'//A766,/JJ##Hg6xxA'H1a[!"A ! JJ##Hg6) 1r   c                 r  	
 t               dk(  r| j                  d       t        j                  dz   
dt        j                  z  dz   		
fd}t        j                  dz
  i }dD ]3  }dD ],  }|dk(  r|dk7  rt	                 |||            |||f<   . 5 |d	   }|j                         D ]"  }t        j                  j                  ||       $ t        j                  	
f      }t        dt        j                        D ]  }|||d d f<    t        j                  j                  ||       y )
Nr!   r   r<      c                 X   | dk(  rt        d      }n| dk(  rt        d      }n| dk(  rd }d        |d	v r;|dk(  rt        d      n|dk(  rt        d      n|dk(  rd
 fd       }|S |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                 v    | j                   \  }}t        |       t        |      D ]  }t               | ||f<    y r   )r   r   r	   r   r   s        r   childzJTestNumThreads._test_nested_parallelism_2.<locals>.get_impl.<locals>.child{  s5    yy1$A"1"3CQK #r   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 ]6  }d|z  z   }|t        j
                  k  s ||       t               |k(  r6J  |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  sj    ((Aq6*C#H-#AY%&T\
 &(@(@@!#z2#2#4
#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   j	                  df      } |||       |S )Nc                     t               |d   t        j                  k  r | |d          t               |d   k(  sJ y y 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  sH    '1 &a=6+C+CC!#z!}5#2#4
1#EE#E Dr   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  sf    F F ((Aq6:C"#biilT&9"9!B!BAq6!JJsJ/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	v% 4 4 88
*#T2H&(#U3H&(!  J 1 -*,B+C+842< >H "33*,B+C+84 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  s8    +MM78 $$q((((1,@	D ''!+
<I:
'I,?%5+H	5++/51
9j01	 ;< N+$$&CJJ##C0 ' 88QF#q&223AHQTN 4 	

&1r      c                 v  	 t               dk(  r| j                  d       dt        d      fd       	t        d      	fd       }d}|z  }|d	z   } ||      \  }}| j                  ||       | j	                  ||       	fd
} ||      \  }}| j                  ||       | j	                  ||       y )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  sT    ((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  sj    H%88H%DEH%#HqL1d)Q & "))D/))r   r:   r<   c                 N    t        dgddd       fd       }t        j                   dft        j                        }t        j                   t        j                        j	                   df      } |||       |j                         t        j                  |      fS )	Nzint64[:], int64[:]z(n), (n)TrO   rP   c                 X     dz         \  }}t        |      |d<   | dxx   |z  cc<   y )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  s2    
  $HqL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    ./#"& *,#	,#
 HHh]"((;E88HBHH5==xm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  s     +MM78 	t		' 
	' 
t		* 
	* Rx "Q'+w/-v6	0" +2.w/-v6r   linuxz
Linux onlyc                    t        j                  d      }t        d        fd}d}| j                          t        j
                         t        |       | j                          |       |j                         }|j                  ||f      }|j                          |j                          | j                  |j                         |       y )Nforkc                      t               S r   rC   r.   r   r   r/   z8TestNumThreads._test_threadmask_across_fork.<locals>.foo  rE   r   c                 2    | j                                 y r   )put)queuer/   s    r   wrapz9TestNumThreads._test_threadmask_across_fork.<locals>.wrap  s    IIce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		% 
	%	  8 89%}}OO4|oO>			))+T2r   c                 6    t        t        j                         y r   r   r   s    r   tearDownzTestNumThreads.tearDown$  s    001r   c                 |   t               }d}t        d      d        }t        d      d        }| j                  |d        ||      \  }}| j                  |d       t        j                  j                  |d        ||      \  }}| j                  |d       t        j                  j                  |d       y )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,  s;    !.''$-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  s;     -''$-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11:;K1L..+Q/


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


 11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
$ 
; 
; X__V--13IJ- K - X__V--13IJ> K >* X__V--13IJ%0 K %0N X__V--13IJ& K &6 X__V--13IJ+ K + X__V--13IJ) K )  X__V--13IJ5 K 5B X__V--13IJ 5 K  5H X__V--13IJS7 K S7n X__V--13IJa2 K a2N X__V--13IJ97 K 97v X__V--13IJX__0099<H3 I K 3*2 6 6r   r   c                       e Zd ZeZdZdD  cg c]  }|t        j                  k  s| c}}} Zd Z	e
d        Ze
d        Zyc c}}} w )TestNumThreadsBackendsF)r<   r:   r   r      c                     t         j                  j                         }t        |      |d<   t        |      |d<   t        j
                  ddd|g}| j                  ||      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  sX    ::??$,/,@()(+K(8$%>>4)94F||GX..r   c           	         	 | j                   }| j                  j                  }|d|d|		fd}|dd  ddd}t        | | t	        d       ||                   y )N.c                 N   | j                        \  }}| j                  rt        d|d|d       t        j                  d|      }| | j                  |j                  d             | j                  d|       | j                  d|v       | j                  d|v       y )	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DAq{{1a@A 		3Q7A}aggaj)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  sa    $$(.=	. /312hM]#N#M-$@A	Cr   c           	         | j                   j                  j                         D ][  }| j                  j	                         D ]<  \  }}| j
                  D ](  }|j                  d      s| j                  ||||       * > ] y )N_test_)r0  __dict__r  backendsitemsr  r  r8  )r2  r3  r*  r4  r  s        r   generatezTestNumThreadsBackends.generatek  sj    JJ'',,.D*-,,*<*<*>&#&??K??84 KKg}kJ $3 +? /r   N)r  r  r  r   r0  r"  r
   r   r  r  classmethodr8  r>  ).0ri   r
   s   000r   r  r  E  si    FF /P.!v7O7O2O1.PK/ C C. K KE Qs
   AA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  r>  r  mainr.   r   r   <module>rJ     s    @ @ 
 	 	   1 1 1 1 ) G G >n6X n6b-K-x -K`    !zHMMO r   