
    8^j                        d dl Z d dlmZ d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZmZ d Zd Zd Zd	 Zej"                  j%                  d
g d      d        Zej"                  j)                  e	d      d        Zd Zy)    N)ThreadPoolExecutor)config_context
get_config
set_config)_IS_WASM)Paralleldelayedc                  b   t               ddddddddddddk(  sJ t        d	       t               d
   du sJ t        d	      5  t               ddddddddddddk(  sJ 	 d d d        t               d
   du sJ t        d	      5  t        d 	      5  t               d
   du sJ 	 d d d        t               d
   du sJ t        d	      5  t               d
   du sJ t        d 	      5  t               d
   du sJ t        d	       t               d
   du sJ 	 d d d        t               d
   du sJ 	 d d d        t               d
   du sJ 	 d d d        t               ddddddddddddk(  sJ t        j                  t
              5  t        d       d d d        t        j                  t
              5  t        d      j                          d d d        y # 1 sw Y   {xY w# 1 sw Y   CxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NFi   Tdiagram   defaultspmatrix)assume_finiteworking_memoryprint_changed_onlydisplayarray_api_dispatchpairwise_dist_chunk_sizeenable_cython_pairwise_disttransform_outputenable_metadata_routingskip_parameter_validationsparse_interfacer   r   do_something_else)r   r   r   pytestraises	TypeError	__enter__     d/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/sklearn/tests/test_config.pytest_config_contextr$      s   <"#$''+%#(%*&    &<(E111	d	+ 
|!""& "'(++/ )',). * 
 
 	
 

 <(E111	d	+ 5$/ 	9<0D888	9 |O,444%0 	:<0E999d3 =!|O4=== .!|O4<<<= <0E999	: |O,444'5* <"#$''+%#(%*&    
y	! t 
y	! ;.88:; ;q
 
"	9 	9= =	: 	:5 5H ; ;sx   GHG('%HH*/G5H4H
H7H%G%(G2	-H5G>:HH
	HHH"%H.c                      t               d   du sJ 	 t        d      5  t               d   du sJ t               # 1 sw Y   nxY wn# t        $ r Y nw xY wt               d   du sJ y )Nr   FTr   )r   r   
ValueErrorr!   r"   r#   test_config_context_exceptionr'   [   s    <(E111$/ 	<0D888,	 	 	  <(E111s    A ;A A 	AAc                     t               d   du sJ t        d        t               d   du sJ t        d       t               d   du sJ t        d        t               d   du sJ t        d       t               d   du sJ t        j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)Nr   Fr   Tr   )r   r   r   r   r   r!   r"   r#   test_set_configr)   f   s    <(E111T"<(E111T"<(D000T"<(D000U#<(E111 
y	! +T*+ + +s   B55B>c                     t        |       5  t        j                  |       t               d   cddd       S # 1 sw Y   yxY w)zAReturn the value of assume_finite after waiting `sleep_duration`.r   r   N)r   timesleepr   )r   sleep_durations     r#   set_assume_finiter.   v   s5    	m	4 -

>"|O,- - -s	   "9Abackend)lokymultiprocessing	threadingc                 n    g d}g d} t        | d      d t        ||      D              }|g dk(  sJ y)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.
    FTFT皙?皙?r6   r7      )r/   n_jobsc              3   N   K   | ]  \  }} t        t              ||        y w)N)r	   r.   ).0r   	sleep_durs      r#   	<genexpr>z0test_config_threadsafe_joblib.<locals>.<genexpr>   s+      0$M9 	#!"=)<0s   #%N)r   zip)r/   assume_finitessleep_durationsitemss       r#   test_config_threadsafe_joblibrB   }   sF     0N*O/HWQ/ 0(+NO(L0 E
 ....r"   zcannot start threads)reasonc                      g d} g d}t        d      5 }|j                  t        | |      D cg c]  }| }}ddd       g dk(  sJ yc c}w # 1 sw Y   xY w)zUses threads directly to test that the global config does not change
    between threads. Same test as `test_config_threadsafe_joblib` but with
    `ThreadPoolExecutor`.r4   r5   r8   )max_workersN)r   mapr.   )r?   r@   eoutputrA   s        r#   test_config_threadsaferI      sp     0N*O		* 
a %% 1>?S
 
 

 ....

 
s   A	AAAAc                    | j                  t        j                  j                  j                  dd       t        j                  t        d      5  t        d      5  	 ddd       ddd       t        j                  t        d      5  t        d       ddd       y# 1 sw Y   BxY w# 1 sw Y   FxY w# 1 sw Y   yxY w)z!Check error when SciPy is too old__version__z1.13.0zSciPy must be 1.14.0 or newer)matchT)r   N)
setattrsklearnutils
_array_apiscipyr   r   ImportErrorr   r   )monkeypatchs    r#   *test_config_array_api_dispatch_error_scipyrT      s    0066xP	{*I	J t4 		 
{*I	J ,d+, ,	 	 , ,s0   B-B! B-B9!B*	&B--B69C)r+   concurrent.futuresr   r   rN   r   r   r   sklearn.utils.fixesr   sklearn.utils.parallelr   r	   r$   r'   r)   r.   markparametrizerB   xfailrI   rT   r!   r"   r#   <module>r[      s     1   : : ( 4L;^2+ - $LM/ N/$ 8$:;/ </"	,r"   