
    HWh              
          S SK r S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S S	K	Jr  S S
K	Jr  S SKJrJr  S SKJrJr  S SKJr  S SKJr  \" S\\/5      S 5       r\" S\\/5      S 5       r\\S 5       5       r\\S 5       5       r\" SSS/5      S 5       rS rS r\\\" SSS\" 5       \" 5       /5      \" S\\/5      S 5       5       5       5       r\" S\\/5      S 5       r\" S\\/5      S 5       rg)     N)parallel_config)parallel_backend)Paralleldelayed)BACKENDS)DEFAULT_BACKEND)EXTERNAL_BACKENDS)LokyBackend)ThreadingBackend)MultiprocessingBackend)parametrizeraises)np
with_numpy)with_multiprocessing)check_memmapcontextc                 2   [        5       R                  nU " S5      n [        [        5       R                  [        5      (       d   e UR	                  5         [        [        5       R                  5      [        U5      L d   eg ! UR	                  5         f = f)N	threading)r   _backend
isinstancer   
unregistertype)r   defaultpbs      9/usr/lib/python3/dist-packages/joblib/test/test_config.pytest_global_parallel_backendr      so    j!!G		B(*--/?@@@@

##$W555 	s   )B Bc                     S nU[         S'    U " S5         [        [        5       R                  [        5      (       d   e S S S 5        [         S	 g ! , (       d  f       N= f! [         S	 f = f)Nc                      [         [        S'   g )Nfoo)r   r        r   register_foo,test_external_backends.<locals>.register_foo#   s    *r"   r    )r	   r   r   r   r   )r   r#   s     r   test_external_backendsr%   !   s^    +  ,e%U^hj113CDDDD  e$ ^ e$s"   A" *AA" 
AA" "	A+c                    [        SSU S9   [        SS9 n[        UR                  [        5      (       d   eUR
                  S:X  d   eU" S [        R                  R                  S5      /S-   5       5        [        [        R                  " U 5      5      S:  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	N      n_jobs
max_nbytestemp_folder	processes)preferc              3   L   #    U  H  n[        [        5      " U5      v   M     g 7fNr   r   .0as     r   	<genexpr>2test_parallel_config_no_backend.<locals>.<genexpr>9   s     K0J1gl#A&&0J   "$
   r   )r   r   r   r   r
   r*   r   randomlenoslistdirtmpdirps     r   test_parallel_config_no_backendr@   .   s    
 
aV	D[)Qajj+666688q= = K1A1A"1E0F0JKKrzz&)*Q... * 
E	D)) 
E	Ds#   
CB	B1 C1
B?	;C
Cc           	         [        SSU S9   [        SSSS9 n[        UR                  [        5      (       d   eUR
                  S:X  d   e[        [        SS	9   U" S
 [        R                  R                  S5      /S-   5       5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)N   r(   r)   r'   r-   1M)r*   r.   r+   zExpected np.memmap instancematchc              3   L   #    U  H  n[        [        5      " U5      v   M     g 7fr0   r1   r2   s     r   r5   ;test_parallel_config_params_explicit_set.<locals>.<genexpr>G   s     O4Nq','**4Nr7   r8   )
r   r   r   r   r
   r*   r   	TypeErrorr   r9   r=   s     r   (test_parallel_config_params_explicit_setrI   =   s     
aV	DQ{tDajj+666688q= = 	)FGORYY5E5Eb5I4JQ4NOO H E 
E	D HG ED 
E	Ds;   CAB51B$B5C$
B2.B55
C	?C
Cparamr.   requirec                     [        [        U  S3S9   [        S0 U S0D6   [        5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz=wrong is not a validrD   wrongr!   )r   
ValueErrorr   r   )rJ   s    r   test_parallel_config_bad_paramsrO   J   sJ     

UG+@"A	B0w/0J 1 
C	B00 
C	Bs   A<A
A
	A
Ac                  4   [        [        SS9   [        SS9    S S S 5        S S S 5        [        [        SS9   [        SS9    S S S 5        S S S 5        g ! , (       d  f       NA= f! , (       d  f       NJ= f! , (       d  f       N9= f! , (       d  f       g = f)Nz'only supported when backend is not NonerD   r(   inner_max_num_threads)backend_param)r   rN   r   r!   r"   r   'test_parallel_config_constructor_paramsrT   S   sq     

"K	L15 6 
M 

"K	L1- . 
M	L 65 
M	L
 .- 
M	LsD   
A'AA'
B	A8B	
A$	 A''
A58
B	B		
Bc                     [        SS9   [        5       n [        U R                  [        [
           5      (       d   eU R                  S:X  d   e S S S 5        [        SS9   [        SS9   [        5       n [        U R                  [        5      (       d   eU R                  S:X  d   e S S S 5        S S S 5        [        SS9   [        SS9   [        5       n U R                  S:X  d   eU R                  S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N{= f! , (       d  f       N= f! , (       d  f       NJ= f! , (       d  f       g = f)Nr'   r*   r   backendd   )verbose)	r   r   r   r   r   r   r*   r   rZ   )r?   s    r   test_parallel_config_nestedr[   _   s    
	"J!**h&?@@@@xx1}} 
#
 
	-A&
Aajj*:;;;;88q= = ' 
. 
	%A&
A99###88q= = ' 
&	% 
#	" '& 
.	- '& 
&	%sT   AD!
D0+>D*D0
E/E=E
D
D-	)D00
D>
E	E
E rX   multiprocessingr   c                 b    [        [        SS9   U " USS9  S S S 5        g ! , (       d  f       g = f)Nz#does not acc.*inner_max_num_threadsrD   r(   rQ   )r   AssertionError)r   rX   s     r   1test_threadpool_limitation_in_child_context_errorr_   u   s&     
&L	Mq1 
N	M	Ms    
.c                    U " SSS9   [        S S9 nUR                  S:X  d   e S S S 5        S S S 5        U " SS9   [        5       R                  n[        S S9 nUR                  U:X  d   e S S S 5        S S S 5        g ! , (       d  f       N_= f! , (       d  f       Nh= f! , (       d  f       N9= f! , (       d  f       g = f)Nr   r'   rX   r*   rV   rW   r   r*   )r   r?   default_n_jobss      r   test_parallel_n_jobs_nonerd      s     
Q	/T"a88q= = # 
0 
	%!**T"a88~--- # 
&	% #" 
0	/ #" 
&	%sD   
BA?BB2B!.B2?
B		B
B!
B/	+B22
C c                     U " SSS9   U " SS S9   [        5        nUR                  S:X  d   e S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   r'   ra   r(   rb   )r   r?   s     r    test_parallel_config_n_jobs_nonerf      s[    
 
Q	/[6qxx1}$}  7 
0	/  76 
0	/s7   A*AAAA*
AA
A'	#A**
A8) r;   joblib.parallelr   r   r   r   r   r   r	   joblib._parallel_backendsr
   r   r   joblib.testingr   r   joblib.test.commonr   r   r   joblib.test.test_parallelr   r   r%   r@   rI   rO   rT   r[   r_   rd   rf   r!   r"   r   <module>rl      sp   	 + , - $ + - 1 6 < . - 3 2 Y*:;<6 =6 Y*:;<	% =	% 
/  
/ P  P Wx+, -	!, Y*K/13C3EG HY*:;<2 =H  
2 Y*:;<
. =
. Y*:;<% =%r"   