
    ޛ7i              
          d dl Z d dlmZmZmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlmZmZmZ d dlmZ d dlmZmZ  edeeg      d        Z edeeg      d	        Zeed
               Zeed               Z edddg      d        Zd Zd Zee eddd e        e       g       edeeg      d                             Z edeeg      d        Z edeeg      d        Zy)    N)LokyBackendMultiprocessingBackendThreadingBackend)BACKENDSDEFAULT_BACKENDEXTERNAL_BACKENDSParalleldelayedparallel_backendparallel_config)npwith_multiprocessing
with_numpy)check_memmap)parametrizeraisescontextc                 &   t               j                  } | d      }	 t        t               j                  t              sJ 	 |j	                          t        t               j                        t        |      u sJ y # |j	                          w xY w)N	threading)r	   _backend
isinstancer   
unregistertype)r   defaultpbs      T/home/rose/Desktop/poly/venv/lib/python3.12/site-packages/joblib/test/test_config.pytest_global_parallel_backendr      sl    j!!G		B(*--/?@@@

##$W555 	s   $A> >Bc                     d }|t         d<   	  | d      5  t        t               j                  t              sJ 	 d d d        t         d= y # 1 sw Y   xY w# t         d= w xY w)Nc                      t         t        d<   y )Nfoo)r   r        r   register_fooz,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  e$ ^ e$s!   A %AA AA 	A!c                    t        dd|       5  t        d      5 }t        |j                  t              sJ |j
                  dk(  sJ  |d t        j                  j                  d      gdz  D               t        t        j                  |             dkD  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	N      n_jobs
max_nbytestemp_folder	processes)preferc              3   F   K   | ]  } t        t              |        y wNr
   r   .0as     r   	<genexpr>z2test_parallel_config_no_backend.<locals>.<genexpr>:   s      K0J1#gl#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88q= = K1A1A"1E0F0JKKrzz&)*Q... * 
E	D)) 
E	Ds#   B;BB/B;/B8	4B;;Cc           	         t        dd|       5  t        ddd      5 }t        |j                  t              sJ |j
                  dk(  sJ t        t        d	      5   |d
 t        j                  j                  d      gdz  D               d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N   r'   r(   r&   r,   1M)r)   r-   r*   zExpected np.memmap instancematchc              3   F   K   | ]  } t        t              |        y wr/   r0   r1   s     r   r4   z;test_parallel_config_params_explicit_set.<locals>.<genexpr>H   s      O4Nq'','*4Nr5   r6   )
r   r	   r   r   r   r)   r   	TypeErrorr   r7   r;   s     r   (test_parallel_config_params_explicit_setrF   >   s     
aV	DQ{tDajj+66688q= = 	)FGORYY5E5Eb5I4JQ4NOO H E 
E	D HG ED 
E	Ds:   B??B31B'B3B?'B0,B33B<	8B??Cparamr-   requirec                     t        t        |  d      5  t        di | di5  t                d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz=wrong is not a validrB   wrongr!   )r   
ValueErrorr   r	   )rG   s    r   test_parallel_config_bad_paramsrL   K   sJ     

UG+@"A	B0w/0J 1 
C	B00 
C	Bs   A?AA	AAc                     t        t        d      5  t        d      5  	 d d d        d d d        t        t        d      5  t        d      5  	 d d d        d d d        t        t        d      5  t        t        t           d      5  	 d d d        d d d        y # 1 sw Y   ~xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   jxY w# 1 sw Y   BxY w# 1 sw Y   y xY w)Nz'only supported when backend is not NonerB   r'   inner_max_num_threads)backend_paramz'only supported when backend is a string)backendrP   )r   rK   r   r   r   r!   r"   r   'test_parallel_config_constructor_paramsrR   T   s     

"K	L15 6 
M 

"K	L1- . 
M 

"K	LXo%>aP Q 
M	L 65 
M	L
 .- 
M	L
 QP 
M	Lsi   B*BB*CB6C2CCCB'	#B**B36B?	;CCC	CC#c                     t        d      5  t               } t        | j                  t        t
                 sJ | j                  dk(  sJ 	 d d d        t        d      5  t        d      5  t               } t        | j                  t              sJ | j                  dk(  sJ 	 d d d        d d d        t        d      5  t        d      5  t               } | j                  dk(  sJ | j                  dk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   yxY w# 1 sw Y   6xY w# 1 sw Y   y xY w)Nr&   r)   r   rQ   d   )verbose)	r   r	   r   r   r   r   r)   r   rW   )r=   s    r   test_parallel_config_nestedrX   d   s     
	"J!**h&?@@@xx1}} 
#
 
	-A&
Aajj*:;;;88q= = ' 
. 
	%A&
A99###88q= = ' 
&	% 
#	" '& 
.	- '& 
&	%sS   ?D!D'.8D'D'D?-D3>D?DD$	 D''D03D<	8D??ErQ   multiprocessingr   c                 d    t        t        d      5   | |d       d d d        y # 1 sw Y   y xY w)Nz#does not acc.*inner_max_num_threadsrB   r'   rN   )r   AssertionError)r   rQ   s     r   1test_threadpool_limitation_in_child_context_errorr\   z   s&     
&L	Mq1 
N	M	Ms   &/c                 r    | dd      5  t        d       5 }|j                  dk(  sJ 	 d d d        d d d         | d      5  t               j                  }t        d       5 }|j                  |k(  sJ 	 d d d        d d d        y # 1 sw Y   _xY w# 1 sw Y   cxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr   r&   rQ   r)   rT   rU   r	   r)   )r   r=   default_n_jobss      r   test_parallel_n_jobs_nonera      s     
Q	/T"a88q= = # 
0 
	%!**T"a88~--- # 
&	% #" 
0	/ #" 
&	%sE   BB	B!B-%B!8B-	B	BB!B*	&B--B6c                      | dd      5   | dd       5  t               5 }|j                  dk(  sJ 	 d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r&   r^   r'   r_   )r   r=   s     r    test_parallel_config_n_jobs_nonerc      s[    
 
Q	/[6qxx1}$}  7 
0	/  76 
0	/s7   A%AAAA%AAA"	A%%A.) r9   joblib._parallel_backendsr   r   r   joblib.parallelr   r   r   r	   r
   r   r   joblib.test.commonr   r   r   joblib.test.test_parallelr   joblib.testingr   r   r   r$   r>   rF   rL   rR   rX   r\   ra   rc   r!   r"   r   <module>ri      so   	 
   D C 2 . Y*:;<6 =6 Y*:;<	% =	% 
/  
/ P  P Wx+, - !, %;%=?O?QR Y*:;<2 =	  2
 Y*:;<
. =
. Y*:;<% =%r"   