
    -i!                     r   S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJrJr  S r\R>                  RA                  SSS/5      \R>                  RA                  S/ SQ5      S 5       5       r!S r"\R>                  RA                  SSS/5      S 5       r#S r$\R>                  RA                  SSS/5      \R>                  RA                  S/ SQ5      S 5       5       r%S r&S r'\R>                  RQ                  \SS9S 5       r)g)    N)assert_array_equal)config_context
get_config)make_column_transformer)	load_iris)RandomForestClassifier)ConvergenceWarning)GridSearchCV)make_pipeline)StandardScaler)_IS_WASM)Paralleldelayedc                      [        5       S   $ )Nworking_memory)r        T/var/www/html/venv/lib/python3.13/site-packages/sklearn/utils/tests/test_parallel.pyget_working_memoryr      s    <())r   n_jobs      backend)loky	threadingmultiprocessingc                     [        SS9   [        XS9" S [        S5       5       5      nS S S 5        [        WS/S-  5        g ! , (       d  f       N= f)N{   )r   r   r   c              3   J   #    U  H  n[        [        5      " 5       v   M     g 7fN)r   r   .0_s     r   	<genexpr>>test_configuration_passes_through_to_joblib.<locals>.<genexpr>   s      ;
3;aG&'))8   !#r   )r   r   ranger   )r   r   resultss      r   +test_configuration_passes_through_to_joblibr*      sL    
 
s	+&: ;
388;
 
 
,
 w	* 
,	+s    A
Ac                     Sn [         R                  " [        U S9 n[        5       " S [	        S5       5       5        SSS5        [        W5      S:X  d   eSn [         R                  " [        U S9 n[        R                  " 5       " S [	        S5       5       5        SSS5        [        U5      S:X  d   eg! , (       d  f       N= f! , (       d  f       N1= f)zHInformative warnings should be raised when mixing sklearn and joblib APIzA`sklearn.utils.parallel.Parallel` needs to be used in conjunctionmatchc              3   v   #    U  H/  n[         R                  " [        R                  5      " S 5      v   M1     g7fr   N)joblibr   timesleepr"   s     r   r%   1test_parallel_delayed_warnings.<locals>.<genexpr>,   s%     D)Q6>>$**-a00)s   79
   Nzw`sklearn.utils.parallel.delayed` should be used with `sklearn.utils.parallel.Parallel` to make it possible to propagatec              3   `   #    U  H$  n[        [        R                  5      " S 5      v   M&     g7fr/   r   r1   r2   r"   s     r   r%   r3   6   s!     D)Q'$**-a00)   ,.)pytestwarnsUserWarningr   r(   lenr0   )warn_msgrecordss     r   test_parallel_delayed_warningsr>   &   s     SH	k	2g
D%)DD 
3w<2
	M  
k	2gD%)DD 
3w<2 
3	2 
3	2s   !B71,C7
C
Cc                   ^ [         R                  " S5      m[        SS9n " U4S jS[        5      n[	        SS/4SU S	9nS
/ SQ0n[        [        UU" 5       [        SU S95      USU SS9n[         R                  " [        SS9   UR                  UR                  UR                  5        SSS5        [        SS9   UR                  UR                  UR                  5        SSS5        [        R                  " UR                   S   5      R#                  5       (       a   eg! , (       d  f       N= f! , (       d  f       NX= f)zCheck that we properly dispatch the configuration in parallel processing.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/25239
pandasT)as_framec                   B   >^  \ rS rSrSU U4S jjrSU U4S jjrSrU =r$ )Ctest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrameD   c                 f   > [        UTR                  5      (       d   S5       e[        TU ]  X5      $ NX should be a DataFrame)
isinstance	DataFramesuperfitselfXy	__class__pds      r   rK   Gtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitE   s/    a..I0II.7;q$$r   c                 f   > [        UTR                  5      (       d   S5       e[        TU ]  X5      $ rF   )rH   rI   rJ   	transformrL   s      r   rT   Mtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.transformI   s0    a..I0II.7$Q**r   r   r!   )__name__
__module____qualname____firstlineno__rK   rT   __static_attributes____classcell__)rP   rQ   s   @r   TransformerRequiredDataFramerC   D   s    	% 	%	+ 	+r   r\   dropr   passthrough)	remainderr   !randomforestclassifier__max_depth)r   r         )n_estimatorsr   raise)cvr   error_scorerG   r,   N)transform_outputmean_test_score)r8   importorskipr   r   r   r
   r   r   raisesAssertionErrorrK   datatargetr   npisnancv_results_any)r   irisr\   dropper
param_grid	search_cvrQ   s         @r   test_dispatch_config_parallelrv   :   s    
		X	&Bd#D+~ + &	!G
 6yAJ(*"&A	

 	
I 
~-F	Gdii- 
H 
	2dii- 
3 xx	--.?@AEEGGGGG 
H	G 
3	2s   'D%='D6%
D36
Ec                  :    [         R                  " S[        5        g )NConvergence warning)warningswarnr	   r   r   r   raise_warningr{   j   s    MM');<r   c                 :   [         R                  " 5          [         R                  " S[        S9  [        R
                  " [        5         [        XS9" S [        S5       5       5        SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       g= f)z$Check warning propagates to the job.errorcategoryr   c              3   J   #    U  H  n[        [        5      " 5       v   M     g 7fr!   )r   r{   r"   s     r   r%   1test_filter_warning_propagates.<locals>.<genexpr>v   s      52:Q&(((r'   r   N)ry   catch_warningssimplefilterr	   r8   rj   r   r(   r   s     r   test_filter_warning_propagatesr   n   sk     
	 	 	"g0BC]]-.F4 527(5  / 
#	" /. 
#	"s#   4B
 A;*B;
B		B
Bc                  "    [         R                  $ r!   )ry   filtersr   r   r   get_warningsr   {   s    r   c                  R  ^ [         R                  " 5          [         R                  " S[        S9  [         R                  mSS[        SS4T;   d   e[        SSS9" S [        S5       5       5      n [        U4S	 jU  5       5      (       d   e SSS5        g! , (       d  f       g= f)
zGCheck that warnings filters are set correctly in the threading backend.r}   r~   Nr   r   r   r   c              3   J   #    U  H  n[        [        5      " 5       v   M     g 7fr!   )r   r   r"   s     r   r%   0test_check_warnings_threading.<locals>.<genexpr>   s      ?
-5GL!##Xr'   c              3   ,   >#    U  H	  oT:H  v   M     g 7fr!   r   )r#   wr   s     r   r%   r      s     6A<s   )ry   r   r   r	   r   r   r(   all)all_warningsr   s    @r   test_check_warnings_threadingr      s    		 	 	"g0BC""14;wFFFq+> ?
-21X?
 
 666666 
#	"	"s   A7B
B&z)Pyodide always use the sequential backend)reasonc                  *   [         R                  " 5          [         R                  " S[        S9  [	        SSS9" S [        S5       5       5        [        R                  " SSS9" S [        S5       5       5        S S S 5        g ! , (       d  f       g = f)	Nr}   r~   r   r   r   c              3   `   #    U  H$  n[        [        R                  5      " S 5      v   M&     g7fr/   r6   r"   s     r   r%   Rtest_filter_warning_propagates_no_side_effect_with_loky_backend.<locals>.<genexpr>   s!     *U9a74::+>q+A+A9r7   r4   c              3      #    U  H4  n[         R                  " [        R                  5      " S [        5      v   M6     g7f)rx   N)r0   r   ry   rz   r	   r"   s     r   r%   r      s0      2
 NN8==)*?ASTTs   <>)ry   r   r   r	   r   r(   r0   r   r   r   ?test_filter_warning_propagates_no_side_effect_with_loky_backendr      sk    		 	 	"g0BC6**U5QS9*UU
 	q&1 2
2Y2
 	
 
#	"	"s   A%B
B)*r1   ry   r0   numpyrn   r8   numpy.testingr   sklearnr   r   sklearn.composer   sklearn.datasetsr   sklearn.ensembler   sklearn.exceptionsr	   sklearn.model_selectionr
   sklearn.pipeliner   sklearn.preprocessingr   sklearn.utils.fixesr   sklearn.utils.parallelr   r   r   markparametrizer*   r>   rv   r{   r   r   r   xfailr   r   r   r   <module>r      s,        , . 3 & 3 1 0 * 0 ( 4* Aq6*$LM+ N ++( Aq6*,H +,H^= Aq6*$LM N +7 8$OP
 Q
r   