o
    ?HhB                     @   s   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d Zejdddgejdg ddd Zdd Zejdddgdd ZdS )    N)assert_array_equal)config_context
get_config)make_column_transformer)	load_iris)RandomForestClassifier)GridSearchCV)make_pipeline)StandardScaler)Paralleldelayedc                   C   s
   t  d S )Nworking_memory)r    r   r   a/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/sklearn/utils/tests/test_parallel.pyget_working_memory   s   
r   n_jobs      backend)loky	threadingmultiprocessingc                 C   s\   t dd t| |ddd tdD }W d    n1 sw   Y  t|dgd  d S )N{   )r   )r   r   c                 s   s    | ]}t t V  qd S N)r   r   .0_r   r   r   	<genexpr>   s    

z>test_configuration_passes_through_to_joblib.<locals>.<genexpr>r   )r   r   ranger   )r   r   resultsr   r   r   +test_configuration_passes_through_to_joblib   s   
r    c                  C   s   d} t jt| d}t dd tdD  W d   n1 s w   Y  t|dks-J d} t jt| d}t dd tdD  W d   n1 sNw   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                 s   s     | ]}t tjd V  qdS r   N)joblibr   timesleepr   r   r   r   r   )   s    z1test_parallel_delayed_warnings.<locals>.<genexpr>
   Nzw`sklearn.utils.parallel.delayed` should be used with `sklearn.utils.parallel.Parallel` to make it possible to propagatec                 s   s    | ]
}t tjd V  qdS r#   )r   r%   r&   r   r   r   r   r   3   s    )pytestwarnsUserWarningr   r   lenr$   )warn_msgrecordsr   r   r   test_parallel_delayed_warnings#   s   r.   c                    s   t d tdd}G  fdddt}tddgfd| d	}d
g di}tt|| td| d|d| dd}t jt	dd |
|j|j W d   n1 sPw   Y  tdd |
|j|j W d   n1 smw   Y  t|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                       s0   e Zd Zd fdd	Zd fdd	Z  ZS )zCtest_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__pdr   r   r7   B      zGtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitc                    r1   r2   )r4   r5   r6   	transformr8   r<   r   r   r@   F   r?   zMtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.transformr   )__name__
__module____qualname__r7   r@   __classcell__r   r>   )r=   r   TransformerRequiredDataFrameA   s    rF   dropr   passthrough)	remainderr   !randomforestclassifier__max_depth)r   r         )n_estimatorsr   raise)cvr   error_scorer3   r!   N)transform_outputmean_test_score)r(   importorskipr   r
   r   r   r	   r   raisesAssertionErrorr7   datatargetr   npisnancv_results_any)r   irisrF   dropper
param_grid	search_cvr   rE   r   test_dispatch_config_parallel7   s6   

	
r`   )r%   r$   numpyrX   r(   numpy.testingr   sklearnr   r   sklearn.composer   sklearn.datasetsr   sklearn.ensembler   sklearn.model_selectionr   sklearn.pipeliner	   sklearn.preprocessingr
   sklearn.utils.parallelr   r   r   markparametrizer    r.   r`   r   r   r   r   <module>   s(    