o
    i!                     @   sj  d dl Z 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 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d Z$ej dddgej dg ddd Z%dd Z&d d! Z'ejj(ed"d#d$d% Z)dS )&    N)assert_array_equal)config_context
get_config)make_column_transformer)	load_iris)RandomForestClassifier)ConvergenceWarning)GridSearchCV)make_pipeline)StandardScaler)_IS_WASM)Paralleldelayedc                   C   s
   t  d S )Nworking_memory)r    r   r   p/var/www/html/eduruby.in/lip-sync/lip-sync-env/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       | ]}t t V  qd S N)r   r   .0_r   r   r   	<genexpr>       

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       | ]
}t tjd V  qdS r(   r   r*   r+   r   r   r   r   r!   6       )pytestZwarnsUserWarningr   r#   lenr)   )Zwarn_msgrecordsr   r   r   test_parallel_delayed_warnings&   s   r4   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
    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                    "   t |js
J dt ||S NX should be a DataFrame)
isinstance	DataFramesuperfitselfXy	__class__pdr   r   r;   E      zGtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitc                    r5   r6   )r8   r9   r:   	transformr<   r@   r   r   rD   I   rC   zMtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.transformr   )__name__
__module____qualname__r;   rD   __classcell__r   rB   )rA   r   TransformerRequiredDataFrameD   s    rJ   Zdropr   Zpassthrough)	remainderr   Z!randomforestclassifier__max_depth)r   r         )Zn_estimatorsr   raise)Zcvr   Zerror_scorer7   r&   N)Ztransform_outputZmean_test_score)r0   Zimportorskipr   r   r   r	   r
   r   raisesAssertionErrorr;   datatargetr   npisnanZcv_results_any)r   ZirisrJ   ZdropperZ
param_gridZ	search_cvr   rI   r   test_dispatch_config_parallel:   s6   

	
rV   c                   C   s   t dt d S )NConvergence warning)warningswarnr   r   r   r   r   raise_warningj   s   rZ   c              	   C   s   t  < t jdtd tt t| |ddd tdD  W d   n1 s+w   Y  W d   dS W d   dS 1 sCw   Y  dS )z$Check warning propagates to the job.errorcategoryr   c                 s   r   r   )r   rZ   r   r   r   r   r!   v   r"   z1test_filter_warning_propagates.<locals>.<genexpr>r   N)rX   catch_warningssimplefilterr   r0   rO   r   r#   r   r   r   r   test_filter_warning_propagatesn   s   

"r`   c                   C   s   t jS r   )rX   filtersr   r   r   r   get_warnings{   s   rb   c                     s   t  : t jdtd t j ddtddf v sJ tddddd	 tdD } t fd
d	| D s6J W d   dS 1 sAw   Y  dS )zGCheck that warnings filters are set correctly in the threading backend.r[   r\   Nr   r   r   r   c                 s   r   r   )r   rb   r   r   r   r   r!      r"   z0test_check_warnings_threading.<locals>.<genexpr>c                 3   s    | ]}| kV  qd S r   r   )r   wra   r   r   r!      s    )rX   r^   r_   r   ra   r   r#   all)Zall_warningsr   rd   r   test_check_warnings_threading   s   
"rf   z)Pyodide always use the sequential backend)reasonc                   C   sz   t  / t jdtd tddddd tdD  tjdddd	d tdD  W d    d S 1 s6w   Y  d S )
Nr[   r\   r   r   r   c                 s   r-   r(   r.   r   r   r   r   r!      r/   zRtest_filter_warning_propagates_no_side_effect_with_loky_backend.<locals>.<genexpr>r,   c                 s   s"    | ]}t tjd tV  qdS )rW   N)r)   r   rX   rY   r   r   r   r   r   r!      s
    
)rX   r^   r_   r   r   r#   r)   r   r   r   r   ?test_filter_warning_propagates_no_side_effect_with_loky_backend   s   

"rh   )*r*   rX   r)   numpyrS   r0   Znumpy.testingr   Zsklearnr   r   Zsklearn.composer   Zsklearn.datasetsr   Zsklearn.ensembler   Zsklearn.exceptionsr   Zsklearn.model_selectionr	   Zsklearn.pipeliner
   Zsklearn.preprocessingr   Zsklearn.utils.fixesr   Zsklearn.utils.parallelr   r   r   markZparametrizer%   r4   rV   rZ   r`   rb   rf   Zxfailrh   r   r   r   r   <module>   s>    
/