
    ri                     R   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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 d dlmZ d dlmZmZ d Z ejB                  jE                  dddg      ejB                  jE                  dg d      d               Z#d Z$ejB                  jE                  dddg      d        Z%d Z&d Z'ejB                  jE                  d e'             d        Z(d Z)d Z*ejB                  jW                  ed      d        Z,y)    N)assert_array_equal)config_context
get_config)make_column_transformer)	load_iris)RandomForestClassifier)ConvergenceWarning)GridSearchCV)make_pipeline)StandardScaler)_IS_WASM)Paralleldelayedc                      t               d   S )Nworking_memory)r        _/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/utils/tests/test_parallel.pyget_working_memoryr      s    <())r   n_jobs      backendloky	threadingmultiprocessingc                     t        d      5   t        | |      d t        d      D              }d d d        t        dgdz         y # 1 sw Y   xY w)N{   )r   r   r   c              3   D   K   | ]  } t        t                       y wN)r   r   .0_s     r   	<genexpr>z>test_configuration_passes_through_to_joblib.<locals>.<genexpr>!   s!      ;
./'G&');
    r   )r   r   ranger   )r   r   resultss      r   +test_configuration_passes_through_to_joblibr*      sW    
 
s	+ 
:(&': ;
388;
 


 w	*
 
s   $A

Ac                     d} t        j                  t        |       5 } t               d t	        d      D               ddd       t              dk(  sJ d} t        j                  t        |       5 } t        j                         d t	        d      D               ddd       t        |      dk(  sJ y# 1 sw Y   zxY w# 1 sw Y   &xY w)zHInformative warnings should be raised when mixing sklearn and joblib APIzA`sklearn.utils.parallel.Parallel` needs to be used in conjunctionmatchc              3   n   K   | ]-  } t        j                  t        j                        d        / ywr   N)joblibr   timesleepr#   s     r   r&   z1test_parallel_delayed_warnings.<locals>.<genexpr>.   s%     DQ-6>>$**-a0Ds   35
   Nzw`sklearn.utils.parallel.delayed` should be used with `sklearn.utils.parallel.Parallel` to make it possible to propagatec              3   Z   K   | ]#  } t        t        j                        d        % ywr/   r   r1   r2   r#   s     r   r&   z1test_parallel_delayed_warnings.<locals>.<genexpr>8   s!     DQ-'$**-a0D   )+)pytestwarnsUserWarningr   r(   lenr0   )warn_msgrecordss     r   test_parallel_delayed_warningsr=   (   s     SH	k	2 Eg
D%)DDEw<2
	M  
k	2 EgD%)DDEw<2E EE Es   !B84+C8CCc           
         t        j                  d      t        d      } G fddt              }t	        ddgfd| 	      }d
g di}t        t        | |       t        d|             |d| d      }t        j                  t        d      5  |j                  |j                  |j                         ddd       t        d      5  |j                  |j                  |j                         ddd       t        j                  |j                   d         j#                         rJ y# 1 sw Y   wxY w# 1 sw Y   HxY w)zCheck that we properly dispatch the configuration in parallel processing.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/25239
    pandasT)as_framec                   2     e Zd Zd fd	Zd fd	Z xZS )Ctest_dispatch_config_parallel.<locals>.TransformerRequiredDataFramec                 ^    t        |j                        sJ d       t        |   ||      S NX should be a DataFrame)
isinstance	DataFramesuperfitselfXy	__class__pds      r   rI   zGtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitG   s.    a.I0II.7;q!$$r   c                 ^    t        |j                        sJ d       t        |   ||      S rD   )rF   rG   rH   	transformrJ   s      r   rQ   zMtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.transformK   s/    a.I0II.7$Q**r   r"   )__name__
__module____qualname__rI   rQ   __classcell__)rN   rO   s   @r   TransformerRequiredDataFramerB   F   s    	%	+ 	+r   rV   dropr   passthrough)	remainderr   !randomforestclassifier__max_depth)r   r         )n_estimatorsr   raise)cvr   error_scorerE   r,   N)transform_outputmean_test_score)r7   importorskipr   r   r   r
   r   r   raisesAssertionErrorrI   datatargetr   npisnancv_results_any)r   irisrV   dropper
param_grid	search_cvrO   s         @r   test_dispatch_config_parallelrp   <   s"    
		X	&Bd#D+~ + &	!G
 6yAJ(*"&A	

 	
I 
~-F	G .dii-. 
	2 .dii-. xx	--.?@AEEGGGG. .. .s   'D.'D:.D7:Ec                  8    t        j                  dt               y )NConvergence warning)warningswarnr	   r   r   r   raise_warningru   l   s    MM');<r   c               #      K   ddg} g d}t        j                  | |      D ]H  \  }}|dk(  r8|dk(  r3t        j                  ||t        j                  j
                         C||f J y w)Nr   r   r   r   )marks)	itertoolsproductr7   parammarkthread_unsafe)n_jobs_valuesbackend_valuesr   r   s       r   "_yield_n_jobs_backend_combinationsr   p   sk     FM=N$,,]NK "Q;7f, ,,vwfkk6O6OPP'/!"s   A+A-zn_jobs, backendc                 .   t        j                         5  t        j                  dt               t	        j
                  t              5   t        | |      d t        d      D               ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)z$Check warning propagates to the job.errorcategoryr    c              3   D   K   | ]  } t        t                       y wr"   )r   ru   r#   s     r   r&   z1test_filter_warning_propagates.<locals>.<genexpr>   s       5-.&&(5r'   r   N)rs   catch_warningssimplefilterr	   r7   rd   r   r(   r    s     r   test_filter_warning_propagatesr   }   s     
	 	 	" g0BC]]-. 	4HFG4 527(5 	 	 	 s#   5B
$A?.B?B	BBc                  V    t        t        dd       } |  |        S t        j                  S )N_get_filters)getattrrs   filters)filters_funcs    r   get_warning_filtersr      s*     8^T:L)5<>K8;K;KKr   c                  F   t        j                         5  t        j                  dt               t	               ddt        ddfv sJ  t        dd      d t        d      D              } fd	}| D ]  } ||       |      k(  rJ  	 ddd       y# 1 sw Y   yxY w)
zGCheck that warnings filters are set correctly in the threading backend.r   r   Nr   r   r   r    c              3   D   K   | ]  } t        t                       y wr"   )r   r   r#   s     r   r&   z0test_check_warnings_threading.<locals>.<genexpr>   s#      M
/0(G'(*M
r'   c                     D cg c]B  \  }}}}}|||dt        |      vst        |t        j                        s|n|j                  |fD c}}}}}S c c}}}}}w )N__main__)strrF   rePatternpattern)r   actionmessagetype_modulelinenomain_warning_filterss         r   normalize_main_modulez<test_check_warnings_threading.<locals>.normalize_main_module   sm     ?S  ;FGUFF !V4%fbjj9   	  s   AA)rs   r   r   r	   r   r   r(   )all_worker_warning_filtersr   worker_warning_filterr   s      @r   test_check_warnings_threadingr      s    		 	 	"  =g0BC2414;?SSSS%LXQ%L M
49!HM
 &
"	$ &@ 	=!(%&';<= = =	=; =  =  =s   A3B
BB z)Pyodide always use the sequential backend)reasonc                  ,   t        j                         5  t        j                  dt                t	        dd      d t        d      D                t        j                  dd      d t        d      D               d d d        y # 1 sw Y   y xY w)	Nr   r   r   r   r    c              3   Z   K   | ]#  } t        t        j                        d        % ywr/   r5   r#   s     r   r&   zRtest_filter_warning_propagates_no_side_effect_with_loky_backend.<locals>.<genexpr>   s!     *Ua+>74::+>q+A*Ur6   r3   c              3   x   K   | ]2  } t        j                  t        j                        d t               4 yw)rr   N)r0   r   rs   rt   r	   r#   s     r   r&   zRtest_filter_warning_propagates_no_side_effect_with_loky_backend.<locals>.<genexpr>   s0      2
 *FNN8==)*?AST2
s   8:)rs   r   r   r	   r   r(   r0   r   r   r   ?test_filter_warning_propagates_no_side_effect_with_loky_backendr      sx    		 	 	" 
g0BC*6**U5QS9*UU
 	2q&1 2
2Y2
 	

 
 
s   A,B

B)-rx   r   r1   rs   r0   numpyrh   r7   numpy.testingr   sklearnr   r   sklearn.composer   sklearn.datasetsr   sklearn.ensembler   sklearn.exceptionsr	   sklearn.model_selectionr
   sklearn.pipeliner   sklearn.preprocessingr   sklearn.utils.fixesr   sklearn.utils.parallelr   r   r   r{   parametrizer*   r=   rp   ru   r   r   r   r   xfailr   r   r   r   <module>r      s     	      , . 3 & 3 1 0 * 0 ( 4* Aq6*$LM+ N ++( Aq6*,H +,H^=
" *,N,PQ RL"=J 8$OP
 Q
r   