§
    §éUgB  ã                   ó„  — 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j                             dddg¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Zd„ Zej                             dddg¦  «        d„ ¦   «         ZdS )é    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   © ó    ú`/var/www/surfInsights/venv3-11/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¸±8´8ð;
ñ ;
ô ;
ñ 
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ
 �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ÐD°QÐ-•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   r,   r-   r   s     r   r"   z1test_parallel_delayed_warnings.<locals>.<genexpr>3   s7   è è € ÐDÐD°QÐ-�'¥$¤*Ñ-Ô-¨aÑ0Ô0ÐDÐDÐDÐDÐDÐDr   )ÚpytestÚwarnsÚUserWarningr   r#   Úlenr+   )Úwarn_msgÚrecordss     r   Útest_parallel_delayed_warningsr6   #   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 )zªCheck 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   rB   zGtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitB   s<   ø€ Ý˜a ¤Ñ.Ô.ÐIÐIÐ0IÑIÔIÐIÝ‘7”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 ¤Ñ.Ô.ÐIÐIÐ0IÑIÔIÐIÝ‘7”7×$Ò$ Q¨Ñ*Ô*Ð*r   r   )Ú__name__Ú
__module__Ú__qualname__rB   rJ   Ú__classcell__)rG   rH   s   @€r   ÚTransformerRequiredDataFramer;   A   sf   øø€ € € € € ð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+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ð
 6°y°y°yÐA€JÝÝØØ(Ð(Ñ*Ô*Ý"°¸&ÐAÑAÔAñ	
ô 	
ð
 	ØØØð
ñ 
ô 
€Iõ 
Œ•~Ð-FÐ	GÑ	GÔ	Gð .ð .Ø�Š�d”i ¤Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .õ 
¨Ð	2Ñ	2Ô	2ð .ð .à�Š�d”i ¤Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .õ Œx˜	Ô-Ð.?Ô@ÑAÔA×EÒEÑGÔGÐGÐGÐGÐGÐGs$   Â+!CÃCÃCÃ3!D Ä D$Ä'D$)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Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø *Ð *Ð *Ð *Ð *Ð *Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð*ð *ð *ð „×Ò˜ A q 6Ñ*Ô*Ø„×Ò˜Ð$LÐ$LÐ$LÑMÔMð+ð +ñ NÔMñ +Ô*ð+ðð ð ð( „×Ò˜ A q 6Ñ*Ô*ð,Hð ,Hñ +Ô*ð,Hð ,Hð ,Hr   