Ë
    ÷Q(hB  ã                   ó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   © ó    ú_/var/www/skyplay_api_hub/venv/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!   è ø€ ò ;
Ø./Ð'ŒGÔ&Ó'×)ñ;
ùs   ‚ r   )r   r   Úranger   )r   r   Úresultss      r   Ú+test_configuration_passes_through_to_joblibr%      sW   € ô
 
 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ÑDù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ÑDùs   ‚)+)ÚpytestÚwarnsÚUserWarningr   r#   Úlenr+   )Úwarn_msgÚrecordss     r   Útest_parallel_delayed_warningsr6   #   s¾   € ð S€HÜ	�‰”k¨Ô	2ð E°gØŒ‹
ÑD¼%À»)ÔDÔD÷Eäˆw‹<˜2ÒÐÐð
	Mð ô 
�‰”k¨Ô	2ð E°gØŒ�‰ÓÑD¼%À»)ÔDÔD÷Eäˆw‹<˜2ÒÐÑ÷Eð Eú÷Eð Eús   ž!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)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>.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 §¡Ô.ÐIÐ0IÓ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 §¡Ô.ÐIÐ0IÓ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ð
 6²yÐA€JÜÜØÙ(Ó*Ü"°¸&ÔAó	
ð
 	ØØØô
€Iô 
�‰”~Ð-FÔ	Gñ .Ø�‰�d—i‘i §¡Ô-÷.ô 
¨Ô	2ñ .à�‰�d—i‘i §¡Ô-÷.ô �x‰x˜	×-Ñ-Ð.?Ñ@ÓA×EÑEÔGÐGÐGÐG÷.ð .ú÷.ð .ús   Â'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ò*ð ‡�×Ñ˜ A q 6Ó*Ø‡�×Ñ˜Ò$LÓMñ+ó Nó +ð+òð( ‡�×Ñ˜ A q 6Ó*ñ,Hó +ñ,Hr   