§
    §éUg�  ã                   ó  — d dl Z 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                             d
g d¢¦  «        d„ ¦   «         Zej                             e
d¬¦  «        d„ ¦   «         Zd„ Zd„ ZdS )é    N)ÚThreadPoolExecutor)Úconfig_contextÚ
get_configÚ
set_config)Ú_IS_WASM)ÚParallelÚdelayedc                  ór  — t          ¦   «         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œ
k    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          ¦   «         d	         du sJ ‚t          d¬¦  «        5  t          d ¬¦  «        5  t          ¦   «         d	         du sJ ‚	 d d d ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   t          ¦   «         d	         du sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          ¦   «         d	         du sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          ¦   «         dddddddddddœ
k    sJ ‚t          j        t
          ¦  «        5  t          d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t
          ¦  «        5  t          d¬
¦  «                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )NFi   TÚdiagramé   Údefault)
Ú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©r   r   ©Údo_something_else)r   r   r   ÚpytestÚraisesÚ	TypeErrorÚ	__enter__© ó    úX/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/tests/test_config.pyÚtest_config_contextr"      sü  € Ý‰<Œ<ØØØ"ØØ#Ø$'Ø'+Ø%Ø#(Ø%*ðð ò ð ð ð õ  Ð&Ñ&Ô&Ð&Ý‰<Œ<˜Ô(¨EÐ1Ð1Ð1Ð1å	 dÐ	+Ñ	+Ô	+ð 
ð 
Ý‰|Œ|Ø!Ø"Ø"&Ø Ø"'Ø(+Ø+/Ø )Ø',Ø).ð 
ð  
ò 
ð 
ð 
ð 
ð 
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ ‰<Œ<˜Ô(¨EÐ1Ð1Ð1Ð1å	 dÐ	+Ñ	+Ô	+ð 5ð 5Ý¨$Ð/Ñ/Ô/ð 	9ð 	9Ý‘<”< Ô0°DÐ8Ð8Ð8Ð8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9õ ‰|Œ|˜OÔ,°Ð4Ð4Ð4Ð4å¨%Ð0Ñ0Ô0ð 	:ð 	:Ý‘<”< Ô0°EÐ9Ð9Ð9Ð9å¨dÐ3Ñ3Ô3ð =ð =Ý!‘|”| OÔ4¸Ð=Ð=Ð=Ð=õ ¨Ð.Ñ.Ô.Ð.Ý!‘|”| OÔ4¸Ð<Ð<Ð<Ð<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =õ ‘<”< Ô0°EÐ9Ð9Ð9Ð9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:õ ‰|Œ|˜OÔ,°Ð4Ð4Ð4Ð4Ð4ð'5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5õ* ‰<Œ<ØØØ"ØØ#Ø$'Ø'+Ø%Ø#(Ø%*ðð ò ð ð ð õ 
Œ•yÑ	!Ô	!ð ð Ý�tÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
Œ•yÑ	!Ô	!ð ;ð ;Ý¨Ð.Ñ.Ô.×8Ò8Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;sµ   Á BÂB	ÂB	Â8G9Ã	C/Ã#G9Ã/C3	Ã3G9Ã6C3	Ã7+G9Ä")G	ÅAFÆG	ÆFÆG	Æ FÆ!G	Æ=G9Ç	G	ÇG9ÇG	ÇG9Ç9G=È G=È<IÉIÉIÉ<#J,Ê,J0Ê3J0c                  ó  — t          ¦   «         d         du sJ ‚	 t          d¬¦  «        5  t          ¦   «         d         du sJ ‚t          ¦   «         ‚# 1 swxY w Y   n# t          $ r Y nw xY wt          ¦   «         d         du sJ ‚d S )Nr   FTr   )r   r   Ú
ValueErrorr   r    r!   Útest_config_context_exceptionr%   Y   sÏ   € Ý‰<Œ<˜Ô(¨EÐ1Ð1Ð1Ð1ðÝ¨$Ð/Ñ/Ô/ð 	ð 	Ý‘<”< Ô0°DÐ8Ð8Ð8Ð8Ý‘,”,Ðð	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	øõ ð ð ð Øˆðøøøå‰<Œ<˜Ô(¨EÐ1Ð1Ð1Ð1Ð1Ð1s.   šA ª'AÁAÁ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 ¦  «         d S # 1 swxY w Y   d S )Nr   Fr   Tr   )r   r   r   r   r   r   r    r!   Útest_set_configr'   d   sO  € Ý‰<Œ<˜Ô(¨EÐ1Ð1Ð1Ð1Ý˜TÐ"Ñ"Ô"Ð"Ý‰<Œ<˜Ô(¨EÐ1Ð1Ð1Ð1Ý˜TÐ"Ñ"Ô"Ð"Ý‰<Œ<˜Ô(¨DÐ0Ð0Ð0Ð0Ý˜TÐ"Ñ"Ô"Ð"Ý‰<Œ<˜Ô(¨DÐ0Ð0Ð0Ð0Ý˜UÐ#Ñ#Ô#Ð#Ý‰<Œ<˜Ô(¨EÐ1Ð1Ð1Ð1õ 
Œ•yÑ	!Ô	!ð +ð +Ý TÐ*Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +s   ÃC0Ã0C4Ã7C4c                 ó¦   — t          | ¬¦  «        5  t          j        |¦  «         t          ¦   «         d         cddd¦  «         S # 1 swxY w Y   dS )zAReturn the value of assume_finite after waiting `sleep_duration`.r   r   N)r   ÚtimeÚsleepr   )r   Úsleep_durations     r!   Úset_assume_finiter,   t   s“   € å	 mÐ	4Ñ	4Ô	4ð -ð -ÝŒ
�>Ñ"Ô"Ð"Ý‰|Œ|˜OÔ,ð-ð -ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ‘(AÁA
ÁA
Úbackend)ÚlokyÚmultiprocessingÚ	threadingc                 óŽ   — g d¢}g d¢} t          | d¬¦  «        d„ t          ||¦  «        D ¦   «         ¦  «        }|g d¢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.
    ©FTFT©çš™™™™™¹?çš™™™™™É?r4   r5   é   )r-   Ún_jobsc              3   óX   K  — | ]%\  }} t          t          ¦  «        ||¦  «        V — Œ&d S )N)r	   r,   )Ú.0r   Ú	sleep_durs      r!   ú	<genexpr>z0test_config_threadsafe_joblib.<locals>.<genexpr>†   sO   è è € ð 0ð 0á$ˆM˜9ð 	#�Õ!Ñ"Ô" =°)Ñ<Ô<ð0ð 0ð 0ð 0ð 0ð 0r    N)r   Úzip)r-   Úassume_finitesÚsleep_durationsÚitemss       r!   Útest_config_threadsafe_joblibr@   {   s~   € ð 0Ð/Ð/€NØ*Ð*Ð*€Oà/�H˜W¨QÐ/Ñ/Ô/ð 0ð 0å(+¨N¸OÑ(LÔ(Lð0ñ 0ô 0ñ ô €Eð
 Ð.Ð.Ð.Ò.Ð.Ð.Ð.Ð.Ð.r    zcannot start threads)Úreasonc                  óÆ   — g d¢} g d¢}t          d¬¦  «        5 }d„ |                     t          | |¦  «        D ¦   «         }ddd¦  «         n# 1 swxY w Y   |g d¢k    sJ ‚dS )z©Uses threads directly to test that the global config does not change
    between threads. Same test as `test_config_threadsafe_joblib` but with
    `ThreadPoolExecutor`.r2   r3   r6   )Úmax_workersc                 ó   — g | ]}|‘ŒS r   r   )r9   Úoutputs     r!   ú
<listcomp>z*test_config_threadsafe.<locals>.<listcomp>˜   s(   € ð 
ð 
ð 
àð ð
ð 
ð 
r    N)r   Úmapr,   )r=   r>   Úer?   s       r!   Útest_config_threadsaferI   Ž   sÌ   € ð 0Ð/Ð/€NØ*Ð*Ð*€Oå	¨Ð	*Ñ	*Ô	*ð 
¨að
ð 
àŸ%š%Õ 1°>À?ÑSÔSð
ñ 
ô 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð Ð.Ð.Ð.Ò.Ð.Ð.Ð.Ð.Ð.s   ™'AÁAÁAc                 ó¢  ‡— t           j        Šˆfd„}|                      t           d|¦  «         t          j        t
          d¬¦  «        5  t          d¬¦  «        5  	 ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t          j        t
          d¬¦  «        5  t          d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z=Check error is raised when array_api_compat is not installed.c                 ó6   •— | dk    rt           ‚ ‰| g|¢R i |¤ŽS ©NÚarray_api_compat)ÚImportError©ÚnameÚargsÚkwargsÚorig_imports      €r!   Úmocked_importz;test_config_array_api_dispatch_error.<locals>.mocked_import¦   s5   ø€ ØÐ%Ò%Ð%ÝÐØˆ{˜4Ð1 $Ð1Ð1Ð1¨&Ð1Ð1Ð1r    Ú
__import__zarray_api_compat is required©ÚmatchT©r   N)ÚbuiltinsrU   Úsetattrr   r   rN   r   r   ©ÚmonkeypatchrT   rS   s     @r!   Ú$test_config_array_api_dispatch_errorr]       s¡  ø€ õ Ô%€Kð2ð 2ð 2ð 2ð 2ð
 ×Ò� ,°Ñ>Ô>Ð>å	Œ•{Ð*HÐ	IÑ	IÔ	Ið ð Ý¨tÐ4Ñ4Ô4ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
Œ•{Ð*HÐ	IÑ	IÔ	Ið ,ð ,Ý dÐ+Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,sH   Á
B ÁA)ÁB Á)A-	Á-B Á0A-	Á1B Â BÂBÂ&CÃCÃCc                 óø  ‡— t           j        Šˆfd„}|                      t           d|¦  «         |                      t          j        j        j        dd¦  «         t          j        t          d¬¦  «        5  t          d¬¦  «        5  	 d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          d¬¦  «         d	d	d	¦  «         d	S # 1 swxY w Y   d	S )
z!Check error when NumPy is too oldc                 óD   •— | dk    rt          ¦   «         S  ‰| g|¢R i |¤ŽS rL   )ÚobjectrO   s      €r!   rT   zAtest_config_array_api_dispatch_error_numpy.<locals>.mocked_importº   s8   ø€ ØÐ%Ò%Ð%Ý‘8”8ˆOØˆ{˜4Ð1 $Ð1Ð1Ð1¨&Ð1Ð1Ð1r    rU   Ú__version__z1.20zNumPy must be 1.21 or newerrV   TrX   N)rY   rU   rZ   ÚsklearnÚutilsÚ
_array_apiÚnumpyr   r   rN   r   r   r[   s     @r!   Ú*test_config_array_api_dispatch_error_numpyrf   µ   sÁ  ø€ õ Ô%€Kð2ð 2ð 2ð 2ð 2ð
 ×Ò� ,°Ñ>Ô>Ð>Ø×Ò�œÔ0Ô6¸ÀvÑNÔNÐNå	Œ•{Ð*GÐ	HÑ	HÔ	Hð ð Ý¨tÐ4Ñ4Ô4ð 	ð 	Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
Œ•{Ð*GÐ	HÑ	HÔ	Hð ,ð ,Ý dÐ+Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,sH   Á5B+ÂBÂB+ÂB	ÂB+ÂB	ÂB+Â+B/Â2B/ÃC/Ã/C3Ã6C3)rY   r)   Úconcurrent.futuresr   r   rb   r   r   r   Úsklearn.utils.fixesr   Úsklearn.utils.parallelr   r	   r"   r%   r'   r,   ÚmarkÚparametrizer@   ÚxfailrI   r]   rf   r   r    r!   ú<module>rm      sS  ðØ €€€Ø €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à €€€à €€€Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø (Ð (Ð (Ð (Ð (Ð (Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðI;ð I;ð I;ðX2ð 2ð 2ð+ð +ð +ð -ð -ð -ð „×Ò˜Ð$LÐ$LÐ$LÑMÔMð/ð /ñ NÔMð/ð$ „×Ò�8Ð$:ÐÑ;Ô;ð/ð /ñ <Ô;ð/ð",ð ,ð ,ð*,ð ,ð ,ð ,ð ,r    