a
    �ù»j¦  ã                   @   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   úGE:\soccer\ml_env\Lib\site-packages\sklearn/utils/tests/test_parallel.pyÚget_working_memory   s    r   Ún_jobsé   é   Úbackend)ZlokyÚ	threadingÚmultiprocessingc                 C   s\   t dd��. t| |d�dd„ tdƒD ƒƒ}W d   ƒ n1 s>0    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@0    Y  t|ƒdksZJ ‚d} t jt| d��*}t ¡ dd„ tdƒD ƒƒ W d  ƒ n1 sœ0    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   )   ó    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   r%   )ÚpytestZwarnsÚUserWarningr   r   Úlenr"   )Zwarn_msgÚrecordsr   r   r   Útest_parallel_delayed_warnings#   s    6ÿ8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 s 0    Y  tdd��  | 
|j|j¡ W d  ƒ n1 sÚ0    Y  t |jd ¡ ¡ rüJ ‚dS )zªCheck that we properly dispatch the configuration in parallel processing.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/25239
    ZpandasT)Z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                    s"   t |ˆjƒsJ dƒ‚tƒ  ||¡S ©NúX should be a DataFrame)Ú
isinstanceÚ	DataFrameÚsuperÚfit©ÚselfÚXÚy©Ú	__class__Úpdr   r   r1   B   s    zGtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitc                    s"   t |ˆjƒsJ dƒ‚tƒ  ||¡S r,   )r.   r/   r0   Ú	transformr2   r6   r   r   r9   F   s    zMtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.transform)N)N)Ú__name__Ú
__module__Ú__qualname__r1   r9   Ú__classcell__r   ©r8   )r7   r   ÚTransformerRequiredDataFrameA   s   r?   Zdropr   Zpassthrough)Ú	remainderr   Z!randomforestclassifier__max_depth)r   r   é   é   )Zn_estimatorsr   Úraise)Zcvr   Zerror_scorer-   r   N)Ztransform_outputZmean_test_score)r'   Zimportorskipr   r
   r   r   r	   r   ZraisesÚAssertionErrorr1   ÚdataÚtargetr   ÚnpÚisnanZcv_results_Úany)r   Zirisr?   ZdropperZ
param_gridZ	search_cvr   r>   r   Útest_dispatch_config_parallel7   s2    

	ý
ý÷..rJ   )r#   r"   ÚnumpyrG   r'   Znumpy.testingr   Zsklearnr   r   Zsklearn.composer   Zsklearn.datasetsr   Zsklearn.ensembler   Zsklearn.model_selectionr   Zsklearn.pipeliner	   Zsklearn.preprocessingr
   Zsklearn.utils.parallelr   r   r   ÚmarkZparametrizer   r+   rJ   r   r   r   r   Ú<module>   s&   