
    /ii                     n   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j!        "                    dddg          ej!        "                    dg d          d                         Z#d Z$ej!        "                    dddg          d             Z%d Z&d Z'ej!        "                    d e'                      d             Z(d Z)d Z*ej!        +                    ed          d             Z,dS )    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        g/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/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            n# 1 swxY w Y   t          |dgdz             d S )N{   )r   r   r   c              3   N   K   | ] } t          t                                V  !d S N)r   r   .0_s     r   	<genexpr>z>test_configuration_passes_through_to_joblib.<locals>.<genexpr>!   sE       ;
 ;
./'G&''));
 ;
 ;
 ;
 ;
 ;
r   r   )r   r   ranger   )r   r   resultss      r   +test_configuration_passes_through_to_joblibr)      s    
 
s	+	+	+ 
 
:(&'::: ;
 ;
3888;
 ;
 ;
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 w	*****s   2AAAc                     d} t          j        t          |           5 } t                      d t	          d          D                        ddd           n# 1 swxY w Y   t          |          dk    sJ d} t          j        t          |           5 } t          j                    d t	          d          D                        ddd           n# 1 swxY w Y   t          |          dk    sJ dS )zHInformative warnings should be raised when mixing sklearn and joblib APIzA`sklearn.utils.parallel.Parallel` needs to be used in conjunctionmatchc              3   d   K   | ]+} t          j        t          j                  d           V  ,dS r   N)joblibr   timesleepr#   s     r   r&   z1test_parallel_delayed_warnings.<locals>.<genexpr>.   s9      DDQ-6>$*--a00DDDDDDr   
   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           V  'dS r.   r   r0   r1   r#   s     r   r&   z1test_parallel_delayed_warnings.<locals>.<genexpr>8   s7      DDQ-'$*--a00DDDDDDr   )pytestwarnsUserWarningr   r'   lenr/   )warn_msgrecordss     r   test_parallel_delayed_warningsr;   (   s    SH	k	2	2	2 Eg

DD%))DDDDDDE E E E E E E E E E E E E E Ew<<2
	M  
k	2	2	2 EgDD%))DDDDDDE E E E E E E E E E E E E E Ew<<2s#   /AA A4C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                   ddd           n# 1 swxY w Y   t          d          5  |
                    |j        |j                   ddd           n# 1 swxY w Y   t          j        |j        d                                                   rJ dS )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>.TransformerRequiredDataFrameNc                     t          |j                  s
J d            t                                          ||          S NX should be a DataFrame)
isinstance	DataFramesuperfitselfXy	__class__pds      r   rG   zGtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitG   s<    a..II0IIII77;;q!$$$r   c                     t          |j                  s
J d            t                                          ||          S rB   )rD   rE   rF   	transformrH   s      r   rO   zMtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.transformK   s>    a..II0IIII77$$Q***r   r"   )__name__
__module____qualname__rG   rO   __classcell__)rL   rM   s   @r   TransformerRequiredDataFramer@   F   sf        	% 	% 	% 	% 	% 	% 	%	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+r   rT   dropr   passthrough)	remainderr   !randomforestclassifier__max_depth)r   r         )n_estimatorsr   raise)cvr   error_scorerC   r+   N)transform_outputmean_test_score)r5   importorskipr   r   r   r
   r   r   raisesAssertionErrorrG   datatargetr   npisnancv_results_any)r   irisrT   dropper
param_grid	search_cvrM   s         @r   test_dispatch_config_parallelrn   <   s    
	X	&	&Bd###D+ + + + + + +~ + + + &	!  G
 6yyyAJ((**"&AAA	
 	

 	
 
 
I 
~-F	G	G	G . .di---. . . . . . . . . . . . . . . 
	2	2	2 . .di---. . . . . . . . . . . . . . . x	-.?@AAEEGGGGGGGs$   +!CCC3!D  D$'D$c                  :    t          j        dt                     d S )NConvergence warning)warningswarnr	   r   r   r   raise_warningrs   l   s    M');<<<<<r   c               #      K   ddg} g d}t          j        | |          D ]@\  }}|dk    r/|dk    r)t          j        ||t          j        j                  V  :||fV  Ad S )Nr   r   r   r   )marks)	itertoolsproductr5   parammarkthread_unsafe)n_jobs_valuesbackend_valuesr   r   s       r   "_yield_n_jobs_backend_combinationsr}   p   s      FM===N$,]NKK " "Q;;7f,, ,vwfk6OPPPPPPP'/!!!!" "r   zn_jobs, backendc                 X   t          j                    5  t          j        dt                     t	          j        t                    5   t          | |          d t          d          D                        ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z$Check warning propagates to the job.errorcategoryr    c              3   N   K   | ] } t          t                                V  !d S r"   )r   rs   r#   s     r   r&   z1test_filter_warning_propagates.<locals>.<genexpr>   sD       5 5-.&&&((5 5 5 5 5 5r   r   N)rq   catch_warningssimplefilterr	   r5   rb   r   r'   r    s     r   test_filter_warning_propagatesr   }   s7    
	 	"	"  g0BCCCC]-.. 	 	4HFG444 5 527((5 5 5   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s5   5B	2B;BB	BB	BB#&B#c                  ^    t          t          dd           } | 
 |             nt          j        S )N_get_filters)getattrrq   filters)filters_funcs    r   get_warning_filtersr      s-     8^T::L)5<<>>>8;KKr   c                  ~   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    sJ 	 ddd           dS # 1 swxY w Y   dS )
zGCheck that warnings filters are set correctly in the threading backend.r   r   Nr   r   r   r    c              3   N   K   | ] } t          t                                V  !d S r"   )r   r   r#   s     r   r&   z0test_check_warnings_threading.<locals>.<genexpr>   sM       M
 M
/0(G'((**M
 M
 M
 M
 M
 M
r   c                     d D             S )Nc           	          g | ]A\  }}}}}|||d t          |          vst          |t          j                  s|n|j        |fBS )__main__)strrD   rePatternpattern)r$   actionmessagetype_modulelinenos         r   
<listcomp>zPtest_check_warnings_threading.<locals>.normalize_main_module.<locals>.<listcomp>   su        ;FGUFF !V44%fbj99 5 F  	  r   r   )r   main_warning_filterss    r   normalize_main_modulez<test_check_warnings_threading.<locals>.normalize_main_module   s'      ?S   r   )rq   r   r   r	   r   r   r'   )all_worker_warning_filtersr   worker_warning_filterr   s      @r   test_check_warnings_threadingr      si   		 	"	"  =  =g0BCCCC24414;?SSSSS%LXQ%L%L%L M
 M
49!HHM
 M
 M
 &
 &
"	 	 	 	 	$ &@ 	= 	=!((% &&';<<= = = = =	=; =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =  =s   BB22B69B6z)Pyodide always use the sequential backend)reasonc                  b   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            d S # 1 swxY w Y   d S )	Nr   r   r   r   r    c              3   Z   K   | ]&} t          t          j                  d           V  'dS r.   r4   r#   s     r   r&   zRtest_filter_warning_propagates_no_side_effect_with_loky_backend.<locals>.<genexpr>   s7      *U*Ua+>74:+>+>q+A+A*U*U*U*U*U*Ur   r2   c              3   p   K   | ]1} t          j        t          j                  d t                    V  2dS )rp   N)r/   r   rq   rr   r	   r#   s     r   r&   zRtest_filter_warning_propagates_no_side_effect_with_loky_backend.<locals>.<genexpr>   sP       2
 2
 *FN8=))*?ASTT2
 2
 2
 2
 2
 2
r   )rq   r   r   r	   r   r'   r/   r   r   r   ?test_filter_warning_propagates_no_side_effect_with_loky_backendr      s   		 	"	" 
 
g0BCCCC*6****U*U5QS99*U*U*UUUU
 	2q&111 2
 2
2YY2
 2
 2
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   BB$$B(+B()-rv   r   r0   rq   r/   numpyrf   r5   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   ry   parametrizer)   r;   rn   rs   r}   r   r   r   xfailr   r   r   r   <module>r      s~       				         , , , , , , . . . . . . . . 3 3 3 3 3 3 & & & & & & 3 3 3 3 3 3 1 1 1 1 1 1 0 0 0 0 0 0 * * * * * * 0 0 0 0 0 0 ( ( ( ( ( ( 4 4 4 4 4 4 4 4* * * Aq6**$L$L$LMM+ + NM +*+  ( Aq6**,H ,H +*,H^= = =
" 
" 
" *,N,N,P,PQQ  RQL L L"= "= "=J 8$OPP
 
 QP
 
 
r   