o
    tBh/                     @   s   d dl Z d dlmZ d dlmZ d dlZd dlmZmZm	Z	 d dl
mZ dd Zdd	 Zd
d Zdd Zejdg ddd Zdd ZdS )    N)ThreadPoolExecutor)Parallel)
get_config
set_configconfig_context)delayedc                
   C   sP  t  dddddddksJ tdd t  d du sJ tdd t  dddddddks0J W d    n1 s:w   Y  t  d du sHJ tdd td d t  d du s]J W d    n1 sgw   Y  t  d du suJ tddF t  d du sJ td d t  d du sJ tdd t  d du sJ W d    n1 sw   Y  t  d du sJ W d    n1 sw   Y  t  d du sJ W d    n1 sw   Y  t  dddddddksJ tt td W d    n	1 sw   Y  tt tdd	  W d    d S 1 s!w   Y  d S )
NFi   Tdiagram   )assume_finiteworking_memoryprint_changed_onlydisplaypairwise_dist_chunk_sizeenable_cython_pairwise_distr
   r
   do_something_else)r   r   r   pytestraises	TypeError	__enter__ r   r   p/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/tests/test_config.pytest_config_context   sf   

	


$r   c                   C   st   t  d du s	J ztdd t  d du sJ t 1 sw   Y  W n	 ty.   Y nw t  d du s8J d S )Nr
   FTr   )r   r   
ValueErrorr   r   r   r   test_config_context_exceptionK   s   r   c                   C   s   t  d du s	J td d t  d du sJ tdd t  d du s%J td d t  d du s3J tdd t  d du sAJ tt tdd W d    d S 1 sWw   Y  d S )Nr
   Fr   Tr   )r   r   r   r   r   r   r   r   r   test_set_configV   s   



"r   c                 C   sB   t | d t| t d W  d   S 1 sw   Y  dS )zAReturn the value of assume_finite after waiting `sleep_duration`.r   r
   N)r   timesleepr   )r
   sleep_durationr   r   r   set_assume_finitef   s   
$r    backend)lokymultiprocessing	threadingc                 C   sD   ddg}ddg}t | dddd t||D }|ddgks J d	S )
ao  Test that the global config is threadsafe with all joblib backends.
    Two jobs are spawned and sets assume_finite to two different values.
    When the job with a duration 0.1s completes, the assume_finite value
    should be the same as the value passed to the function. In other words,
    it is not influenced by the other job setting assume_finite to True.
    FT皙?皙?   )r!   n_jobsc                 s   s"    | ]\}}t t||V  qd S )N)r   r    ).0r
   	sleep_durr   r   r   	<genexpr>x   s
    
z0test_config_threadsafe_joblib.<locals>.<genexpr>N)r   zip)r!   assume_finitessleep_durationsitemsr   r   r   test_config_threadsafe_joblibm   s   r0   c                  C   sf   ddg} ddg}t dd}dd |t| |D }W d	   n1 s$w   Y  |ddgks1J d	S )
zUses threads directly to test that the global config does not change
    between threads. Same test as `test_config_threadsafe_joblib` but with
    `ThreadPoolExecutor`.FTr%   r&   r'   )max_workersc                 S   s   g | ]}|qS r   r   )r)   outputr   r   r   
<listcomp>   s    z*test_config_threadsafe.<locals>.<listcomp>N)r   mapr    )r-   r.   er/   r   r   r   test_config_threadsafe   s   r6   )r   concurrent.futuresr   joblibr   r   sklearnr   r   r   sklearn.utils.fixesr   r   r   r   r    markparametrizer0   r6   r   r   r   r   <module>   s    @
