
    {KgB                     v   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mZ d Zej4                  j7                  dddg      ej4                  j7                  dg d      d               Zd Zej4                  j7                  dddg      d        Zy)    N)assert_array_equal)config_context
get_config)make_column_transformer)	load_iris)RandomForestClassifier)GridSearchCV)make_pipeline)StandardScaler)Paralleldelayedc                      t               d   S )Nworking_memory)r        e/home/alanp/www/video.onchill/myenv/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       ;
3;a'G&')8s    r   )r   r   ranger   )r   r   resultss      r   +test_configuration_passes_through_to_joblibr%      sP    
 
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&     D)Q-6>>$**-a0)s   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   r,   r-   r   s     r   r"   z1test_parallel_delayed_warnings.<locals>.<genexpr>3   s"     D)Q-'$**-a0)s   )+)pytestwarnsUserWarningr   r#   lenr+   )warn_msgrecordss     r   test_parallel_delayed_warningsr6   #   s     SH	k	2g
D%)DD 
3w<2
	M  
k	2gD%)DD 
3w<2 
3	2 
3	2s   !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   rB   zGtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitB   s.    a.I0II.7;q!$$r   c                 ^    t        |j                        sJ d       t        |   ||      S r=   )r?   r@   rA   	transformrC   s      r   rJ   zMtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.transformF   s/    a.I0II.7$Q**r   r   )__name__
__module____qualname__rB   rJ   __classcell__)rG   rH   s   @r   TransformerRequiredDataFramer;   A   s    	%	+ 	+r   rO   dropr   passthrough)	remainderr   !randomforestclassifier__max_depth)r   r         )n_estimatorsr   raise)cvr   error_scorer>   r'   N)transform_outputmean_test_score)r0   importorskipr   r   r   r	   r
   r   raisesAssertionErrorrB   datatargetr   npisnancv_results_any)r   irisrO   dropper
param_grid	search_cvrH   s         @r   test_dispatch_config_parallelri   7   s    
		X	&Bd#D+~ + &	!G
 6yAJ(*"&A	

 	
I 
~-F	Gdii- 
H 
	2dii- 
3 xx	--.?@AEEGGGG 
H	G 
3	2s   'D.'D:.D7:E)r,   r+   numpyra   r0   numpy.testingr   sklearnr   r   sklearn.composer   sklearn.datasetsr   sklearn.ensembler   sklearn.model_selectionr	   sklearn.pipeliner
   sklearn.preprocessingr   sklearn.utils.parallelr   r   r   markparametrizer%   r6   ri   r   r   r   <module>rv      s        , . 3 & 3 0 * 0 4* Aq6*$LM+ N ++( Aq6*,H +,Hr   