
    Ki                     L   S SK r S SK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 \RB                  RE                  SSS/5      \RB                  RE                  S/ SQ5      S 5       5       r#S r$\RB                  RE                  SSS/5      S 5       r%S r&S r'\RB                  RE                  S\'" 5       5      S 5       r(S r)S r*\RB                  RW                  \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        c/var/www/html/dynamic-report/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r0   r   r2   r3   r#   s     r   r&   r4   8   s!     D)Q'$**-a00)   ,.)pytestwarnsUserWarningr   r)   lenr1   )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>.TransformerRequiredDataFrameF   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   rL   Gtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.fitG   s/    a..I0II.7;q$$r   c                 f   > [        UTR                  5      (       d   S5       e[        TU ]  X5      $ rG   )rI   rJ   rK   	transformrM   s      r   rU   Mtest_dispatch_config_parallel.<locals>.TransformerRequiredDataFrame.transformK   s0    a..I0II.7$Q**r   r   r"   )__name__
__module____qualname____firstlineno__rL   rU   __static_attributes____classcell__)rQ   rR   s   @r   TransformerRequiredDataFramerD   F   s    	% 	%	+ 	+r   r]   dropr   passthrough)	remainderr   !randomforestclassifier__max_depth)r   r         )n_estimatorsr   raise)cvr   error_scorerH   r-   N)transform_outputmean_test_score)r9   importorskipr   r   r   r
   r   r   raisesAssertionErrorrL   datatargetr   npisnancv_results_any)r   irisr]   dropper
param_grid	search_cvrR   s         @r   test_dispatch_config_parallelrw   <   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|   l   s    MM');<r   c               #      #    SS/n / SQn[         R                  " X5       HG  u  p#US:X  a7  US:X  a1  [        R                  " X#[        R                  R
                  S9v   MB  X#4v   MI     g 7f)Nr   r   r   r   )marks)	itertoolsproductr9   parammarkthread_unsafe)n_jobs_valuesbackend_valuesr   r   s       r   "_yield_n_jobs_backend_combinationsr   p   s^     FM=N$,,]KQ;7f, ,,vfkk6O6OPP/! Ls   A+A-zn_jobs, backendc                 :   [         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>   s      52:Q&(((r(   r   N)rz   catch_warningssimplefilterr	   r9   rk   r   r)   r    s     r   test_filter_warning_propagatesr   }   sk     
	 	 	"g0BC]]-.F4 527(5  / 
#	" /. 
#	"s#   4B
 A;*B;
B		B
Bc                  X    [        [        SS 5      n U b  U " 5       $ [        R                  $ )N_get_filters)getattrrz   filters)filters_funcs    r   get_warning_filtersr      s*     8^T:L)5<>K8;K;KKr   c                  R  ^ [         R                  " 5          [         R                  " S[        S9  [	        5       mSS[        SS4T;   d   e[        SSS9" S [        S5       5       5      n U4S	 jnU  H  nU" U5      U" T5      :X  a  M   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       M
4<qG'(**Hr(   c                    > T VVVVVs/ s HH  u  pp4nUUUS[        U5      ;  d  [        U[        R                  5      (       d  UOUR                  U4PMJ     snnnnn$ s  snnnnnf )N__main__)strrI   rePatternpattern)r   actionmessagetype_modulelinenomain_warning_filterss         r   normalize_main_module<test_check_warnings_threading.<locals>.normalize_main_module   sq     ?S ?S:FUF !V4%fbjj99   	 ?S  s   AA )rz   r   r   r	   r   r   r)   )all_worker_warning_filtersr   worker_warning_filterr   s      @r   test_check_warnings_threadingr      s    		 	 	"g0BC2414;?SSSS%-Q%L M
49!HM
 &
"	$ &@!(%&';<= = = &@; 
#	"	"s   A0BB
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r0   r7   r#   s     r   r&   Rtest_filter_warning_propagates_no_side_effect_with_loky_backend.<locals>.<genexpr>   s!     *U9a74::+>q+A+A9r8   r5   c              3      #    U  H4  n[         R                  " [        R                  5      " S [        5      v   M6     g7f)ry   N)r1   r   rz   r{   r	   r#   s     r   r&   r      s0      2
 NN8==)*?ASTTs   <>)rz   r   r   r	   r   r)   r1   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)-r   r   r2   rz   r1   numpyro   r9   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   r   parametrizer+   r?   rw   r|   r   r   r   r   xfailr   r   r   r   <module>r      s     	      , . 3 & 3 1 0 * 0 ( 4* Aq6*$LM+ N ++( Aq6*,H +,H^=
" *,N,PQ RL"=J 8$OP
 Q
r   