
    Wh!                     x   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j>                  jA                  dddg      ej>                  jA                  dg d      d               Z!d Z"ej>                  jA                  dddg      d        Z#d Z$ej>                  jA                  dddg      ej>                  jA                  dg d      d               Z%d Z&d Z'ej>                  jQ                  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/html/jupyter_env/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   r0   r1   r"   s     r   r%   z1test_parallel_delayed_warnings.<locals>.<genexpr>6   s!     DQ-'$**-a0D   )+)pytestwarnsUserWarningr   r'   lenr/   )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   rH   zGtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitE   s.    a.I0II.7;q!$$r   c                 ^    t        |j                        sJ d       t        |   ||      S rC   )rE   rF   rG   	transformrI   s      r   rP   zMtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.transformI   s/    a.I0II.7$Q**r   r!   )__name__
__module____qualname__rH   rP   __classcell__)rM   rN   s   @r   TransformerRequiredDataFramerA   D   s    	%	+ 	+r   rU   dropr   passthrough)	remainderr   !randomforestclassifier__max_depth)r   r         )n_estimatorsr   raise)cvr   error_scorerD   r+   N)transform_outputmean_test_score)r6   importorskipr   r   r   r
   r   r   raisesAssertionErrorrH   datatargetr   npisnancv_results_any)r   irisrU   dropper
param_grid	search_cvrN   s         @r   test_dispatch_config_parallelro   :   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_warningrt   j   s    MM');<r   c                 .   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   rt   r"   s     r   r%   z1test_filter_warning_propagates.<locals>.<genexpr>v   s       5-.&&(5r&   r   N)rr   catch_warningssimplefilterr	   r6   rc   r   r'   r   s     r   test_filter_warning_propagatesr|   n   s     
	 	 	" g0BC]]-. 	4HFG4 527(5 	 	 	 s#   5B
$A?.B?B	BBc                  "    t         j                  S r!   )rr   filtersr   r   r   get_warningsr   {   s    r   c                  @   t        j                         5  t        j                  dt               t         j                  ddt        ddfv sJ  t        dd      d t        d      D              } t        fd	| D              sJ 	 ddd       y# 1 sw Y   yxY w)
zGCheck that warnings filters are set correctly in the threading backend.rv   rw   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       ?
()!GL!#?
r&   c              3   (   K   | ]	  }|k(    y wr!   r   )r#   wr~   s     r   r%   z0test_check_warnings_threading.<locals>.<genexpr>   s     6A1<6s   )rr   rz   r{   r	   r~   r   r'   all)all_warningsr~   s    @r   test_check_warnings_threadingr      s    		 	 	" 
7g0BC""14;wFFF>xq+> ?
-21X?
 
 66666
7 
7 
7s   A4B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)	Nrv   rw   r   r   r   c              3   Z   K   | ]#  } t        t        j                        d        % ywr.   r4   r"   s     r   r%   zRtest_filter_warning_propagates_no_side_effect_with_loky_backend.<locals>.<genexpr>   s!     *Ua+>74::+>q+A*Ur5   r2   c              3   x   K   | ]2  } t        j                  t        j                        d t               4 yw)rq   N)r/   r   rr   rs   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:)rr   rz   r{   r	   r   r'   r/   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)*r0   rr   r/   numpyrg   r6   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   markparametrizer)   r<   ro   rt   r|   r   r   xfailr   r   r   r   <module>r      s,        , . 3 & 3 1 0 * 0 ( 4* Aq6*$LM+ N ++( Aq6*,H +,H^= Aq6*$LM N +7 8$OP
 Q
r   