`L iddlZddlmZddlZddlZddlmZmZmZddlm Z ddl m Z m Z dZ dZdZd Zej"j%d gd d Zej"j)e d dZdZy)N)ThreadPoolExecutor)config_context get_config set_config)_IS_WASM)Paralleldelayedc \tddddddddddd k(sJtdtd dusJtd5tddddddddddd k(sJ dddtd dusJtd5td5td dusJ dddtd dusJtd5td dusJtd5td dusJtdtd dusJ dddtd dusJ dddtd dusJ dddtddddddddddd k(sJtjt 5tddddtjt 5td j dddy#1swYzxYw#1swYBxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw) NFiTdiagramdefault) assume_finiteworking_memoryprint_changed_onlydisplayarray_api_dispatchpairwise_dist_chunk_sizeenable_cython_pairwise_disttransform_outputenable_metadata_routingskip_parameter_validationrrdo_something_else)rrrpytestraises TypeError __enter___/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/tests/test_config.pytest_config_contextr" sy <"#$''+%#(%*    & < (E 11 1 d +  |!""& "'(++/ )',).      < (E 11 1 d +5 $ / 9<0D8 88 9|O,444 % 0 :<0E9 99d3 =!|O4===.!|O4<<<  =<0E9 99 :|O,444'5* <"#$''+%#(%*     y !t y !;.88:;;m    9 9 = = : : 55F;;sxG H G%%%H  G>(/G2G>2H  H4H"G"%G/ *H 2G; 7G>>H H  HH"H+ctddusJ td5tddusJt#1swYnxYwn#t$rYnwxYwtddusJy)NrFTr)rr ValueErrorrr r!test_config_context_exceptionr%Xs < (E 11 1 $ / <0D8 88,        < (E 11 1s A;AA AActddusJtdtddusJtdtddusJtdtddusJtdtddusJtjt5tddddy#1swYyxYw)NrFrTr)rrrrrrr r!test_set_configr'cs < (E 11 1T" < (E 11 1T" < (D 00 0T" < (D 00 0U# < (E 11 1 y !+T*+++s  B55B>ct|5tj|tdcdddS#1swYyxYw)zAReturn the value of assume_finite after waiting `sleep_duration`.rrN)rtimesleepr)rsleep_durations r!set_assume_finiter,ss5 m 4- >"|O,---s "9Abackend)lokymultiprocessing threadingcngd}gd}t|ddt||D}|gdk(sJy)aoTest 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皙?皙?r4r5)r-n_jobsc3NK|]\}}tt||yw)N)r r,).0r sleep_durs r! z0test_config_threadsafe_joblib..s+0 $M9 #!"=)<0s#%N)rzip)r-assume_finitessleep_durationsitemss r!test_config_threadsafe_joblibr@zsF0N*O /HWQ /0(+NO(L0 E . .. .r zcannot start threads)reasoncgd}gd}td5}|jt||Dcgc]}|}}dddgdk(sJycc}w#1swYxYw)zUses threads directly to test that the global config does not change between threads. Same test as `test_config_threadsafe_joblib` but with `ThreadPoolExecutor`.r2r3r6) max_workersN)rmapr,)r=r>eoutputr?s r!test_config_threadsaferGsp 0N*O  * a%% 1>?S     . .. .    sA A A AAc|jtjjjddt j td5td5 ddddddt j td5tddddy#1swYBxYw#1swYFxYw#1swYyxYw)z!Check error when SciPy is too old __version__z1.13.0zSciPy must be 1.14.0 or newer)matchT)rN) setattrsklearnutils _array_apiscipyrr ImportErrorrr) monkeypatchs r!*test_config_array_api_dispatch_error_scipyrRs 0066 xP {*I J t 4    {*I J,d+,,  ,,s0 B-B! B- B9!B* &B--B69C)r)concurrent.futuresrrrLrrrsklearn.utils.fixesrsklearn.utils.parallelrr r"r%r'r,mark parametrizer@xfailrGrRrr r!rYs 1 ::(4I;X2 + -$LM/N/$8$:;/</" ,r