
    MpjW5                        S 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  SSK	r	SSK
Jr  SSKrSSKJr  SSKJr  SSKJr  SS	KJrJr  SS
KJr  SSKJrJr  SSKJrJrJrJr  SSK J!r!  SSK"J#r#J$r$J%r%J&r&  SSK'J(r(J)r)  SSK*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8  SSK9J:r:  \	Rv                  Rx                  S 5       r=SDS jr> " S S\5      r?\	Rv                  R                  S\" \>SS9S4\>S4\" \>S5      S4\" SS9S4\" SSS S!S"9S#4\?" 5       S$4/5      S% 5       rA\	Rv                  R                  \8" \C" \%" 5       5      \$S&9S' 5       5       rD\	Rv                  R                  S(5      \	Rv                  Rx                  S) 5       5       rFS* rG\	Rv                  Rx                  S+ 5       rHS, rIS- rJ\C" \" \%" 5       \" \" SS95      /\J" 5       5      5      rK\	Rv                  R                  S.\K\#S/9S0 5       rLS1S2/rMS3 rN\%" S45       V s/ s H  n \N" U 5      (       d  M  U PM     sn rO\	Rv                  R                  S4\O\#S/9S5 5       rP\%" 5        V s/ s H  n \Q" U S65      (       d  M  U PM     sn rR\	Rv                  R                  S7\R\#S/9S8 5       rS\	Rv                  R                  S7\C" \%" 5       5      \#S/9S9 5       rT\C" \" \%" S45      \" \" 5       \" 5       5      \" S:S;9\" S<S=9/5      5      rU\	Rv                  R                  S.\U\#S/9S> 5       rV\	Rv                  R                  S.\U\#S/9\	Rv                  R                  S?\4\/\5\0/5      S@ 5       5       rW\	Rv                  R                  S7\%" 5       \#S/9SA 5       rX\%" 5        V s/ s H  n \:" U SB5      (       d  M  U PM     sn rY\	Rv                  R                  S7\Y\#S/9SC 5       rZgs  sn f s  sn f s  sn f )Ez.
General tests for all estimators in sklearn.
    N)partial)chain)LinAlgWarning)BaseEstimator)ColumnTransformer)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_yield_instances_for_check)SkipTestignore_warnings)#check_all_zero_sample_weights_error(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)has_fit_parameterc                      [        5        HA  u  pSR                  U 5      nU R                  5       R                  S5      (       d  M<   U5       e   g )NzDBase estimators such as {0} should not be included in all_estimatorsbase)r   formatlower
startswith)name	Estimatormsgs      U/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/tests/test_common.py test_all_estimator_no_base_classr1   B   sH     *+R
&, 	 ::<**6227C72	 ,       c                     g N )xys     r0   _sample_funcr9   L   s    r2   c                       \ rS rSrSrS rSrg)CallableEstimatorP   ziDummy development stub for an estimator.

This is to make sure a callable estimator passes common tests.
c                     g r5   r6   )selfs    r0   __call__CallableEstimator.__call__V   s    r2   r6   N)__name__
__module____qualname____firstlineno____doc__r?   __static_attributes__r6   r2   r0   r;   r;   P   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                 &    [        U 5      U:X  d   eg r5   )r   )valexpecteds     r0   test_get_check_estimator_idsrQ   Z   s    . $C(H444r2   )expected_failed_checksc                     [        [        [        [        [        4S9   U" U 5        S S S 5        g ! , (       d  f       g = fNcategory)r   FutureWarningr   UserWarningr   )	estimatorcheckrequests      r0   test_estimatorsr\   t   s3     
!3[-P
 	i
 
 
s   	0
>zZignore:Since version 1.0, it is not needed to import enable_hist_gradient_boosting anymorec                     [         R                  R                  [        R                  5      /n [
        R                  " U SS S9nU VVs/ s H  u  p#o#PM	     nnnUS/-    H]  nSU;   d  SU;   a  M  SU;   a  M  [        USS	9n[        US
S5       H)  n[        XV5      (       a  M   SR                  X65      5       e   M_     g s  snnf )Nsklearn.c                     g r5   r6   _s    r0   <lambda>-test_import_all_consistency.<locals>.<lambda>   s    r2   )pathprefixonerrorsklearnz.tests.zsklearn.externalszsklearn._build_utilsdummy)fromlist__all__r6   z#Module '{0}' has no attribute '{1}')osrd   dirnamerg   __file__pkgutilwalk_packages
__import__getattrhasattrr*   )sklearn_pathpkgsra   modnamesubmodspackager-   s          r0   test_import_all_consistencyrx      s     GGOOG$4$456L   *nD -11D=1qwDG1i[(#6'#A!W,Ww7GY3D7)) +P+W+W, ) 4 ) 2s   Cc                     [         R                  R                  [        R                  5      /n Sn[
        R                  " U S S9 H?  u  p#nSU;   d  UR                  S5      (       d  X1;   a  M)  U[        R                  ;   a  M?   e   g )N)utilstestsr)   conftestc                     g r5   r6   r`   s    r0   rb   3test_root_import_all_completeness.<locals>.<lambda>   s    Tr2   )rd   rf   .ra   )	rk   rd   rl   rg   rm   rn   ro   r,   rj   )rs   
EXCEPTIONSra   ru   s       r0   !test_root_import_all_completenessr      ss    GGOOG$4$456L7J ..>A '>W//448M'//)))r2   c                     [         R                  " S5      n 1 Skn[        R                  R	                  [
        R                  5      /n[        R                  " USS9 VVVs0 s H  u  p4nXE_M
     nnnnUR                  5        VVs/ s H:  u  pEU(       d  M  XA;  d  M  U R                  U5      (       a  M-  US-   U;  d  M8  UPM<     nnnU/ :X  d   SR                  U5      5       eg s  snnnf s  snnf )NzK(?x)
        \.externals(\.|$)|
        \.tests(\.|$)|
        \._
        >   sklearn.datasets.datasklearn.datasets.descrsklearn.datasets.imagesr^   )re   z.testszn{0} do not have `tests` subpackages. Perhaps they require __init__.py or a meson.build in the parent directory)recompilerk   rd   rl   rg   rm   rn   ro   itemssearchr*   )HAS_TESTS_EXCEPTIONSresource_modulesrs   ra   r-   ispkglookupmissing_testss           r0   test_all_tests_are_importabler      s   
 ::	
 GGOOG$4$456L &33LTTNAU 	T   "<<>)KD 	 ( 	 %++D1	 	
 8O6) 	)   B 	 F=)s$   "C)C0C0 C08C0C0c                     Sn [         R                  " [        U S9   [        [        5        S S S 5        [         R                  " [        U S9   [        [        /5        S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nz8Passing a class was deprecated.* isn't supported anymore)match)pytestraises	TypeErrorr   r   r&   r/   s    r0   test_class_support_removedr      s\     EC	y	,*+ 
- 
y	,!3 45 
-	, 
-	, 
-	,s   A'A8'
A58
Bc               #     #    [        5        H  n [        U R                  5       5      nSU;   a  U R                  SSS9v   M6  SU;   ad  U R                  SSS9nUR                  R
                  S;   a4  [        R                  " U[        R                  R                  SS	9S
9v   M  Uv   M  SU;   d  M  U R                  SS9v   M     g 7f)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__rA   r   parammarkxfail)rY   
est_paramsests      r0   _estimators_that_predict_in_fitr      s     ')	--/0
*$&&&FF+&&dQ&OC}}%%)JJllv{{005Q0R  	:-&&&:: *s   B/C5Cestimator_orig)idsc                    [        U [        5      (       a  [        R                  " S5        S[	        U 5      ;   a  [        R                  " S5        [        [        U 5       Hz  n[        [        S9   [        R                  " SS9 n[        UR                  R                  U5        S S S 5        W H  nS[        UR                  5      ;  a  M   e   S S S 5        M|     g ! , (       d  f       N?= f! , (       d  f       M  = f)Nz$ColumnTransformer is not tested herer   zCEstimator does not support check_dataframe_column_names_consistencyrU   T)recordz was fitted without feature names)
isinstancer   r   skipr   r   r   r   rW   warningscatch_warningsr   rA   strmessage)r   rY   r   warnings       r0   #test_pandas_column_name_consistencyr      s     ."344:;15P6  	Q	
 00.	 }6((58''00) 6 "9W__AUUUU " 76 65 76s*   1C1!C '$C1C1 
C.*C11
D 	ensemblekernel_approximationc                 t    [        U S5      (       a  gU R                  R                  S5      S   nU[        ;  $ )Nget_feature_names_outTr   r3   )rr   rB   split"GET_FEATURES_OUT_MODULES_TO_IGNORE)transformermodules     r0   '_include_in_get_feature_names_out_checkr     s:    {344##))#.q1F;;;r2   r   c                     [        [        S9   [        U R                  R                  U 5        [        U R                  R                  U 5        S S S 5        g ! , (       d  f       g = frT   )r   rW   r$   r   rA   r%   )r   s    r0   'test_transformers_get_feature_names_outr   $  sL     
=	2/!!**K	
 	7!!**K	
	 
3	2	2s   AA
A&r   rY   c                 F    U R                   R                  n[        X5        g r5   )r   rA   r   )rY   estimator_names     r0   +test_estimators_get_feature_names_out_errorr   6  s     ((11N%n@r2   c                     [        U [        5      (       a  [        R                  " S5        U R                  R
                  n[        X5        g )NzFeatureUnion is not tested here)r   r   r   r   r   rA   r    rY   r-   s     r0   test_check_param_validationr   >  s7     )\**56''D4+r2   F)sparse_outputz
one-to-one)feature_names_outc                 D   U R                   R                  n[        U S5      (       d  [        R                  " SU S35        [        [        U 5       H9  n[        [        S9   [        UR                   R                  U5        S S S 5        M;     g ! , (       d  f       MM  = f)N
set_outputz(Skipping check_set_output_transform for z!: Does not support set_output APIrU   )	r   rA   rr   r   r   r   r!   r   rW   )r   r-   rY   s      r0   test_set_output_transformr   T  s     ##,,D><006tf = 	
 0"N	 }6&y':':'C'CYO 76 76s   "!B
B	
check_funcc                 N   U R                   R                  n[        U S5      (       d'  [        R                  " SUR                   SU S35        [        X5       H6  n[        [        S9   U" UR                   R                  U5        S S S 5        M8     g ! , (       d  f       MJ  = f)Nr   z	Skipping z for z%: Does not support set_output API yetrU   )r   rA   rr   r   r   r   r   rW   )r   r   r-   rY   s       r0   $test_set_output_transform_configuredr   e  s     ##,,D><00
++,E$ 8" "	
 0
K	}6y**33Y? 76 L66s   *B
B$	c                 f   U R                   R                  n[        U S5      (       a  U R                  SS9  O/[        U S5      (       a  U R                  SS9  O[	        U S35      eUS:X  a  U R                  SS	S
9  US:X  a  U R                  SS9  US:X  a  U R                  SS9  [        X5        g )NcopyF)r   copy_X)r   z! doesn't require writeable input.HDBSCANprecomputedbrute)metric	algorithmPCAfull)
svd_solver	KernelPCA)kernel)r   rA   rr   r   r   r   r   s     r0   #test_check_inplace_ensure_writeabler   }  s     ''Dy&!!%(	H	%	%E*$@ABB yMWEu}/{M2"43r2   sample_weightc                 F    U R                   R                  n[        X5        g r5   )r   rA   r   r   s     r0   (test_check_all_zero_sample_weights_errorr     s     ''D'8r2   )r3   )[rE   rk   rn   r   r   	functoolsr   	itertoolsr   r   scipy.linalgr   rg   sklearn.baser   sklearn.composer   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   r   sklearn.utils._testingr   r   sklearn.utils.estimator_checksr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   sklearn.utils.validationr'   r   thread_unsafer1   r9   r;   parametrizerQ   no_check_spmatrixlistr\   filterwarningsrx   r   r   r   r   column_name_estimatorsr   r   r   GET_FEATURES_OUT_ESTIMATORSr   rr   %ESTIMATORS_WITH_GET_FEATURE_NAMES_OUTr   r   SET_OUTPUT_ESTIMATORSr   r   r   #ESTIMATORS_ACCEPTING_SAMPLE_WEIGHTSr   )r   s   0r0   <module>r      s   
  	     &  & - 1 4 8  )      7 8 8	  		#%89	~&	w	'8	c	"$?@"'	6	
 
	34#,5-,5 		7R  ,  	
** # #L	6;* 		)A.	/0')  ,2J  VV0 & "< "-00.s3 0  .4L  

 &')'C738O+PC') %
 6<T  AA
 (*+1I  ,, 	=).*LN;.,?	
	  +1I  PP +1I   ),)0		@	@ #%+C  440 &'''C+<S/+RC'' #
 4:R  99E()L's$   N>N>O"O=OO