
    0Ph>8                     R   d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlZddlmZ ddlZddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ ddlmZmZ ddlm Z m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< d Z=dHdZ> G d de          Z?ej@        A                    d ee>d          dfe>df ee>d          df ed          d f edd!d"d#$          d%f e?            d&fg          d'             ZB e: eC e)                      e((          d)             ZDd* ZEej@        F                    e<d+,          ej@        G                    d-          d.                         ZHd/ ZId0 ZJd1 ZKd2 ZL eC e
 e)             e ed                    g eL                                ZMej@        A                    d3eMe'4          d5             ZNd6d7gZOd8 ZPd9  e)d:          D             ZQej@        A                    d:eQe'4          d;             ZRd<  e)            D             ZSej@        A                    d3eSe'4          d=             ZTej@        A                    d3 eC e)                      e'4          d>             ZU eC e
 e)d:           e e#             e!                       e"d?@           e dAB          g                    ZVej@        A                    d3eVe'4          dC             ZWej@        A                    d3eVe'4          ej@        A                    dDe6e1e7e2g          dE                         ZXej@        A                    d3 e)            e'4          dF             ZYdG ZZdS )Iz.
General tests for all estimators in sklearn.
    N)partial)isgenerator)chain)LinAlgWarning)BaseEstimator)ColumnTransformer)make_classification)ConvergenceWarning)enable_halving_search_cvenable_iterative_imputer)LogisticRegression)FeatureUnionmake_pipeline)FunctionTransformerMinMaxScalerOneHotEncoderStandardScaler)all_estimators)_get_check_estimator_ids_get_expected_failed_checks_tested_estimators)SkipTestignore_warnings)(check_dataframe_column_names_consistencycheck_estimator!check_get_feature_names_out_error$check_global_output_transform_pandas(check_global_set_output_transform_polarscheck_inplace_ensure_writeablecheck_param_validationcheck_set_output_transform!check_set_output_transform_pandas!check_set_output_transform_polars'check_transformer_get_feature_names_out.check_transformer_get_feature_names_out_pandasparametrize_with_checks)_IS_WASMc                      t                      D ]K\  } }d                    |           }|                                                     d          r
J |            Ld S )NzDBase estimators such as {0} should not be included in all_estimatorsbase)r   formatlower
startswith)name	Estimatormsgs      Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/tests/test_common.py test_all_estimator_no_base_classr1   B   sg    )++ 8 8iR
&,, 	 ::<<**62277C7777	8 8       c                     d S N )xys     r0   _sample_funcr9   K   s    Dr2   c                       e Zd ZdZd ZdS )CallableEstimatorzqDummy development stub for an estimator.

    This is to make sure a callable estimator passes common tests.
    c                     d S r5   r6   )selfs    r0   __call__zCallableEstimator.__call__U   s    r2   N)__name__
__module____qualname____doc__r>   r6   r2   r0   r;   r;   O   s-         
    r2   r;   zval, expected)r8   z_sample_func(y=1)r9   worldg       @)CzLogisticRegression(C=2.0)z	newton-cgbalancedT)random_statesolverclass_weight
warm_startz]LogisticRegression(class_weight='balanced',random_state=1,solver='newton-cg',warm_start=True)zCallableEstimator()c                 0    t          |           |k    sJ d S r5   )r   )valexpecteds     r0   test_get_check_estimator_idsrM   Y   s#    . $C((H444444r2   )expected_failed_checksc                     t          t          t          t          t          f          5   ||            d d d            d S # 1 swxY w Y   d S Ncategory)r   FutureWarningr
   UserWarningr   )	estimatorcheckrequests      r0   test_estimatorsrX   s   s    
 
!3[-P
 
 
   	i                 s   AA	Ac                      t          j        t          d          5  t          t	                      d          } ddd           n# 1 swxY w Y   t          |           sJ dS )zTCheck that check_estimator with generate_only=True raises a deprecation
    warning.z$`generate_only` is deprecated in 1.6matchT)generate_onlyN)pytestwarnsrS   r   r   r   )all_instance_gen_checkss    r0   .test_check_estimator_generate_only_deprecationr`      s     
m+Q	R	R	R 
 
"1  #
 #
 #

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 .///////s   AA
A
z,importlib not supported for Pyodide packages)reasonzZignore:Since version 1.0, it is not needed to import enable_hist_gradient_boosting anymorec                  n   t           j                            t          j                  g} t          j        | dd           }d |D             }|dgz   D ]_}d|v rd|v rt          |d	          }t          |d
d          D ]0}t          ||          sJ d
                    ||                      1`d S )Nsklearn.c                     d S r5   r6   _s    r0   <lambda>z-test_import_all_consistency.<locals>.<lambda>   s     r2   )pathprefixonerrorc                     g | ]\  }}}|	S r6   r6   ).0rf   modnames      r0   
<listcomp>z/test_import_all_consistency.<locals>.<listcomp>   s    111=1gqw111r2   sklearnz.tests.zsklearn._build_utilsdummy)fromlist__all__r6   z#Module '{0}' has no attribute '{1}')osrh   dirnamero   __file__pkgutilwalk_packages
__import__getattrhasattrr*   )sklearn_pathpkgssubmodsrm   packager-   s         r0   test_import_all_consistencyr      s    GOOG$4556L  *nn  D 21D111Gi[( 
 
!W,,Ww777GY33 	 	D7D))  +P+W+W, ,    	
 
r2   c                      t           j                            t          j                  g} d}t          j        | d           D ]4\  }}}d|v s|                    d          s||v r$|t          j        v sJ 5d S )N)utilstestsr)   conftestc                     d S r5   r6   re   s    r0   rg   z3test_root_import_all_completeness.<locals>.<lambda>   s    T r2   )rh   rj   .rf   )	rs   rh   rt   ro   ru   rv   rw   r,   rr   )r{   
EXCEPTIONSrf   rm   s       r0   !test_root_import_all_completenessr      s    GOOG$4556L7J .>>   * *7A '>>W//44>:8M8M'/)))))* *r2   c                  Z   t          j        d          h dt          j                            t
          j                  g} d t          j        | d          D             fd	                                D             }|g k    sJ d
                    |                      d S )Nz(?x)
                                      \.externals(\.|$)|
                                      \.tests(\.|$)|
                                      \._
                                      >   sklearn.datasets.datasklearn.datasets.descrsklearn.datasets.imagesc                     i | ]	\  }}}||
S r6   r6   )rl   rf   r-   ispkgs       r0   
<dictcomp>z1test_all_tests_are_importable.<locals>.<dictcomp>   s0       AtU 	e  r2   rc   )ri   c                 ^    g | ])\  }}|r"|vr                     |          s	|d z   v'|*S )z.tests)search)rl   r-   r   HAS_TESTS_EXCEPTIONSlookupresource_moduless      r0   rn   z1test_all_tests_are_importable.<locals>.<listcomp>   sd       D% ((($++D11 )8O6)) 	
 *))r2   zn{0} do not have `tests` subpackages. Perhaps they require __init__.py or a meson.build in the parent directory)recompilers   rh   rt   ro   ru   rv   rw   itemsr*   )r{   missing_testsr   r   r   s     @@@r0   test_all_tests_are_importabler      s     :	*   
 GOOG$4556L %3LTTT  F     !<<>>  M B	 F=)) r2   c                  *   d} t          j        t          |           5  t          t                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          t          g           d d d            d S # 1 swxY w Y   d S )Nz8Passing a class was deprecated.* isn't supported anymorerZ   )r]   raises	TypeErrorr   r   r&   r/   s    r0   test_class_support_removedr      s    EC	y	,	,	, , ,*+++, , , , , , , , , , , , , , , 
y	,	,	, 6 6!3 45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s!   ?AA%BBBc               #     K   t                      D ]} t          |                                           }d|v r|                     dd          V  Ad|v ra|                     dd          }|j        j        dv r7t          j        |t          j        	                    d	          
          V  |V  d|v r|                     d          V  d S )N	oob_scoreT)r   	bootstrapearly_stoppingr3   )r   n_iter_no_change>   MLPRegressorMLPClassifierzMLP still validates in fitr   )marksr   )r   )
r   set
get_params
set_params	__class__r?   r]   parammarkxfail)rU   
est_paramsests      r0   _estimators_that_predict_in_fitr      s     ')) ; ;	--//00
*$$&&&FFFFFF++&&dQ&OOC}%)JJJlv{005Q0RR       				:--&&&:::::; ;r2   rU   )idsc                    t          | t                    rt          j        d           dt	          |           v rt          j        d           t          t                    5  t          j        d          5 }t          | j
        j        |            d d d            n# 1 swxY w Y   |D ]}dt          |j                  vsJ 	 d d d            d S # 1 swxY w Y   d S )Nz$ColumnTransformer is not tested herer   zCEstimator does not support check_dataframe_column_names_consistencyrQ   T)recordz was fitted without feature names)
isinstancer   r]   skipr   r   rS   warningscatch_warningsr   r   r?   strmessage)rU   r   warnings      r0   #test_pandas_column_name_consistencyr      s    ).// <:;;;15P6 6   	Q	
 	
 	
 
=	2	2	2 R R$D111 	V4#,i  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	R 	RG5S=Q=QQQQQQ	RR R R R R R R R R R R R R R R R R Rs6   $C:B!C!B%	%C(B%	) CCCensemblekernel_approximationc                 x    t          | d          rdS | j                            d          d         }|t          vS )Nget_feature_names_outTr   r3   )rz   r@   split"GET_FEATURES_OUT_MODULES_TO_IGNORE)transformermodules     r0   '_include_in_get_feature_names_out_checkr     sA    {344 t#))#..q1F;;;r2   c                 0    g | ]}t          |          |S r6   )r   rl   r   s     r0   rn   rn   "  s6       .s33  r2   r   c                     t          t                    5  t          | j        j        |            t          | j        j        |            d d d            d S # 1 swxY w Y   d S rP   )r   rS   r$   r   r?   r%   )r   s    r0   'test_transformers_get_feature_names_outr   )  s    
 
=	2	2	2 
 
/!*K	
 	
 	
 	7!*K	
 	
 	
	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   5AAAc                 2    g | ]}t          |d           |S )r   )rz   r   s     r0   rn   rn   7  s8     ) ) )738O+P+P)) ) )r2   c                 >    | j         j        }t          ||            d S r5   )r   r?   r   )rU   estimator_names     r0   +test_estimators_get_feature_names_out_errorr   <  s%     (1N%ni@@@@@r2   c                     t          | t                    rt          j        d           | j        j        }t          ||            d S )NzFeatureUnion is not tested here)r   r   r]   r   r   r?   r    rU   r-   s     r0   test_check_param_validationr   D  sH     )\** 75666'D4+++++r2   F)sparse_outputz
one-to-one)feature_names_outc                     | j         j        }t          | d          st          j        d| d           t          t                    5  t          | j         j        |            d d d            d S # 1 swxY w Y   d S )N
set_outputz(Skipping check_set_output_transform for z!: Does not support set_output APIrQ   )r   r?   rz   r]   r   r   rS   r!   r   s     r0   test_set_output_transformr   Z  s     'D9l++ 
t   	
 	
 	
 
=	2	2	2 L L"9#6#?KKKL L L L L L L L L L L L L L L L L Ls   
A22A69A6
check_funcc                    | j         j        }t          | d          s t          j        d|j         d| d           t          t                    5   || j         j        |            d d d            d S # 1 swxY w Y   d S )Nr   z	Skipping z for z%: Does not support set_output API yetrQ   )r   r?   rz   r]   r   r   rS   )rU   r   r-   s      r0   $test_set_output_transform_configuredr   h  s     'D9l++ 
"
+ " "$ " " "	
 	
 	
 
=	2	2	2 < <
9&/;;;< < < < < < < < < < < < < < < < < <s   A66A:=A:c                    | j         j        }t          | d          r|                     d           n9t          | d          r|                     d           nt	          | d          |dk    r|                     dd	
           |dk    r|                     d           |dk    r|                     d           t          ||            d S )NcopyF)r   copy_X)r   z! doesn't require writeable input.HDBSCANprecomputedbrute)metric	algorithmPCAfull)
svd_solver	KernelPCA)kernel)r   r?   rz   r   r   r   r   s     r0   #test_check_inplace_ensure_writeabler     s     'Dy&!! C%((((	H	%	% CE****$AAABBB yMWEEEu}}///{M222"433333r2   c                  :    G d dt                     } t          ddd          \  }} |             }t          j        t                    5 }|                    |           ddd           n# 1 swxY w Y   t          |          dk    sJ t          |d         j                  	                    d	          sJ t          |d
         j                  	                    d          sJ t          |d         j                  	                    d          sJ dS )zThis test checks that we raised deprecation warning explaining how to transition
    to the new developer public API from 1.5 to 1.6.
    c                       e Zd ZddZd ZdS )=test_transition_public_api_deprecations.<locals>.OldEstimatorNc                     |                      |          }|                     |d           |                     |d           | S )NT)reset)_validate_data_check_n_features_check_feature_names)r=   Xr8   s      r0   fitzAtest_transition_public_api_deprecations.<locals>.OldEstimator.fit  sL    ##A&&A""1D"111%%at%444Kr2   c                     |S r5   r6   )r=   r   s     r0   	transformzGtest_transition_public_api_deprecations.<locals>.OldEstimator.transform  s    Hr2   r5   )r?   r@   rA   r   r   r6   r2   r0   OldEstimatorr     s7        	 	 	 		 	 	 	 	r2   r   
      r   )	n_samples
n_featuresrF   N   z,`BaseEstimator._validate_data` is deprecatedr3   z/`BaseEstimator._check_n_features` is deprecated   z2`BaseEstimator._check_feature_names` is deprecated)
r   r	   r]   r^   rS   r   lenr   r   r,   )r   r   r8   old_estimatorwarning_lists        r0   'test_transition_public_api_deprecationsr     s   
    }    JJJDAq LNNM	m	$	$ !               |!!!!|A&''226     |A&''229     |A&''22<      s   A..A25A2)r3   )[rB   rs   rv   r   r   	functoolsr   inspectr   	itertoolsr   r]   scipy.linalgr   ro   sklearn.baser   sklearn.composer   sklearn.datasetsr	   sklearn.exceptionsr
   sklearn.experimentalr   r   sklearn.linear_modelr   sklearn.pipeliner   r   sklearn.preprocessingr   r   r   r   sklearn.utilsr   -sklearn.utils._test_common.instance_generatorr   r   r   sklearn.utils._testingr   r   sklearn.utils.estimator_checksr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   sklearn.utils.fixesr'   r1   r9   r;   r   parametrizerM   listrX   r`   r   filterwarningsr   r   r   r   r   column_name_estimatorsr   r   r   GET_FEATURES_OUT_ESTIMATORSr   %ESTIMATORS_WITH_GET_FEATURE_NAMES_OUTr   r   SET_OUTPUT_ESTIMATORSr   r   r   r   r6   r2   r0   <module>r     s    
			  				                     & & & & & &  & & & & & & - - - - - - 0 0 0 0 0 0 1 1 1 1 1 1        4 3 3 3 3 3 8 8 8 8 8 8 8 8            ) ( ( ( ( (         
                                     ) ( ( ( ( (8 8 8	 	 	 	        		#	#	#%89	~&	w	'	'8		c	"	"	"$?@"'	  6	
 
			34# ,5 5- ,5 D				7R    0 0 0 8$RSS,  	  TS
** * *# # #L	6 	6 	6; ; ;* 	E	))A...	/	/0''))    '-E   R R R* & "< < < !!-00    .4L   
 
 
) )%%'') ) ) %
 6<T   A A A
 ((**++1I   , , , 	E=))M..**LLNN;;M...,???	
 	 	  &,D   L L L &,D    ),)0	 < <  < ##%%+C   4 4 40    r2   