
    sg              
          d dl Z d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d d	l	mZ d d
l	mZ d dlmZmZ d dlmZmZ d dlmZ d dl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)parallel_config)parallel_backend)Paralleldelayed)BACKENDS)DEFAULT_BACKEND)EXTERNAL_BACKENDS)LokyBackend)ThreadingBackend)MultiprocessingBackend)parametrizeraises)np
with_numpy)with_multiprocessing)check_memmap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      J/var/www/html/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$   !   sg    +  ,e%U^ 	Ehj113CDDD	E e$	E 	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>9   s     K1#gl#A&K   !
   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...	// /	/ 	// /s#   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>G   s     Oq'','*Or5   r6   )
r   r   r   r   r
   r)   r   	TypeErrorr   r7   r;   s     r   (test_parallel_config_params_explicit_setrF   =   s     
aV	D PQ{tD 	Pajj+66688q= = 	)FG PORYY5E5Eb5I4JQ4NOOP	PP PP P	P 	PP Ps:   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   J   sZ     

UG+@"A	B 0w/0 	J	 	 	 s   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        y # 1 sw Y   BxY w# 1 sw Y   FxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nz'only supported when backend is not NonerB   r'   inner_max_num_threads)backend_param)r   rK   r   r!   r"   r   'test_parallel_config_constructor_paramsrQ   S   s     

"K	L 15 		 

"K	L 1- 		 	 	 
	 	 sE   A.A"A.BA:B"A+	'A..A7:B	?BB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   backendd   )verbose)	r   r   r   r   r   r   r)   r   rW   )r=   s    r   test_parallel_config_nestedrX   _   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rU   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   rU   s     r   1test_threadpool_limitation_in_child_context_errorr\   u   s.     
&L	M 2q12 2 2s   &/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&   rU   r)   rS   rT   r   r)   )r   r=   default_n_jobss      r   test_parallel_n_jobs_nonera      s     
Q	/ !T" 	!a88q= =	!! 
	% .!**T" 	.a88~---	.. .	! 	!! !	. 	.. .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      ss    
 
Q	/ %[6 	% %qxx1}$}%	%% %% %	% 	%% %s7   A%AAAA%AAA"	A%%A.) r9   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>   rF   rL   rQ   rX   r\   ra   rc   r!   r"   r   <module>ri      sp   	 + , - $ + - 1 6 < . - 3 2 Y*:;<6 =6 Y*:;<	% =	% 
/  
/ P  P Wx+, -	!, Y*K/13C3EG HY*:;<2 =H  
2 Y*:;<
. =
. Y*:;<% =%r"   