
    Mpj                        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
  S SKrS SKJrJr  S SKJrJrJrJrJr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J r   S S
K!J"r"  S SK#J$r$J%r%  S SK&J'r'J(r(  S SK)J*r*J+r+  S SK,J-r-  S SK.J/r/  S SK0J1r1  S SK2J3r3J4r4  S SK5J6r6J7r7   " S S\5      r8 " S S\5      r9 " S S\5      r: " S S\5      r; " S S\5      r< " S S\;5      r= " S S \;\<5      r> " S! S"\>5      r? " S# S$\5      r@ " S% S&\5      rA " S' S(5      rB " S) S*\5      rCS+ rDS, rES- rFS. rGS/ rHS0 rIS1 rJS2 rKS3 rLS4 rMS5 rNS6 rOS7 rP\R                  R                  S8\'" 5       S94\" \'" 5       S:S;S</05      S94\"" S=\'" 5       4/5      S94\"" S>\" \'" 5       S:S;S</05      4/5      S94\(" 5       S?4\" \(" 5       S:S;S</05      S?4\"" S@\(" 5       4/5      S?4\"" SA\" \(" 5       S:S;S</05      4/5      S?4/5      SB 5       rS\R                  R                  S8\(" 5       S94\" \(" 5       S:S;S</05      S94\"" S@\(" 5       4/5      S94\"" SA\" \(" 5       S:S;S</05      4/5      S94\'" 5       S?4\" \'" 5       S:S;S</05      S?4\"" S=\'" 5       4/5      S?4\"" S>\" \'" 5       S:S;S</05      4/5      S?4/5      SC 5       rT\R                  R                  S8\" 5       S94\" \" 5       SDSESF/05      S94\"" SG\" 5       4/5      S94\"" SH\" \" 5       SDSESF/05      4/5      S94\'" 5       S?4\" \'" 5       S:S;S</05      S?4\"" S=\'" 5       4/5      S?4\"" S>\" \'" 5       S:S;S</05      4/5      S?4/5      SI 5       rUSJ rVSK rWSL rX\R                  R                  SM\*" SNS SO9\R                  " S SP94\+" SNS SO9\R                  " S SP94/5      SQ 5       r[SR r\SS r]ST r^ " SU SV\*5      r_SWr`SX ra " SY SZ\*5      rbS[ rc\R                  R                  S\ 5       re " S] S^5      rf " S_ S`\f\5      rgSa rhSb ri " Sc Sd\5      rjSe rkSf rlSg rmSh rnSi roSj rpSk rqSl rrSm rsSn rt " So Sp5      ru " Sq Sr\u\5      rv\R                  R                  Ss\" 5       \v" 5       /5      St 5       rwSu rx\R                  R                  Sv/ SwQ5      Sx 5       ry\" S9Sy9Sz 5       rz\" S9Sy9S{ 5       r{S| r|S} r}S~ r~S r\R                  R                  SSSS</4S\GR                   " S</5      4SSSES/4S\GR                   " SES/5      4SS/ 4SS 4\GR                  S4\GR                  \GR                   " \GR                  /5      4SSS/4SSS<S</4S<\GR                   " S</5      4SSS/4S\GR                   " S/5      4S<SN/SE/4\GR                   " S</5      SNSE/4S\ " 5       4S\" S5      4/5      S 5       rS r\R                  R                  SSSS/ 4S\GR                   " / 5      4SS/ SQ4S\GR                   " / SQ5      4\GR                  \GR                  4SSSSS/5      S 5       rg)    N)assert_allclose)config_contextdatasets)BaseEstimatorOutlierMixinTransformerMixincloneis_classifieris_clustereris_regressor)KMeans)PCA)InconsistentVersionWarning)
get_scorer)GridSearchCVKFold)Pipeline)LabelEncoderStandardScaler)SVCSVR)DecisionTreeClassifierDecisionTreeRegressor)
deprecated)MockDataFrame)_get_output_config)_convert_containerassert_array_equal)_check_n_featuresvalidate_datac                       \ rS rSrSS jrSrg)MyEstimator-   Nc                     Xl         X l        g Nl1empty)selfr'   r(   s      S/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/sklearn/tests/test_base.py__init__MyEstimator.__init__.   s    
    )r(   r'   )r   N__name__
__module____qualname____firstlineno__r+   __static_attributes__ r-   r*   r"   r"   -   s    r-   r"   c                       \ rS rSrSS jrSrg)K3   Nc                     Xl         X l        g r%   cd)r)   r:   r;   s      r*   r+   
K.__init__4       r-   r9   NNr.   r4   r-   r*   r6   r6   3       r-   r6   c                       \ rS rSrSS jrSrg)T9   Nc                     Xl         X l        g r%   ab)r)   rE   rF   s      r*   r+   
T.__init__:   r=   r-   rD   r>   r.   r4   r-   r*   rA   rA   9   r?   r-   rA   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )NaNTag?   c                 F   > [         TU ]  5       nSUR                  l        U$ )NTsuper__sklearn_tags__
input_tags	allow_nanr)   tags	__class__s     r*   rN   NaNTag.__sklearn_tags__@   s!    w')$(!r-   r4   r/   r0   r1   r2   rN   r3   __classcell__rS   s   @r*   rI   rI   ?        r-   rI   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )NoNaNTagF   c                 F   > [         TU ]  5       nSUR                  l        U$ NFrL   rQ   s     r*   rN   NoNaNTag.__sklearn_tags__G   !    w')$)!r-   r4   rU   rW   s   @r*   rZ   rZ   F   rX   r-   rZ   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )OverrideTagM   c                 F   > [         TU ]  5       nSUR                  l        U$ r]   rL   rQ   s     r*   rN   OverrideTag.__sklearn_tags__N   r_   r-   r4   rU   rW   s   @r*   ra   ra   M   rX   r-   ra   c                       \ rS rSrSrg)DiamondOverwriteTagT   r4   Nr/   r0   r1   r2   r3   r4   r-   r*   rf   rf   T       r-   rf   c                       \ rS rSrSrg)InheritDiamondOverwriteTagX   r4   Nrh   r4   r-   r*   rk   rk   X   ri   r-   rk   c                   F    \ rS rSrSr\R                  " S/5      4S jrSrg)ModifyInitParams\   zSDeprecated behavior.
Equal parameters but with a type cast.
Doesn't fulfill a is a
r   c                 .    UR                  5       U l        g r%   )copyrE   r)   rE   s     r*   r+   ModifyInitParams.__init__b   s    r-   rE   N)	r/   r0   r1   r2   __doc__nparrayr+   r3   r4   r-   r*   rn   rn   \   s    
 1# r-   rn   c                   "    \ rS rSrSrSS jrSrg)Buggyf   z9A buggy estimator that does not set its parameters right.Nc                     SU l         g N   rt   rr   s     r*   r+   Buggy.__init__i   s	    r-   rt   r%   r/   r0   r1   r2   ru   r+   r3   r4   r-   r*   ry   ry   f   s
    ?r-   ry   c                   .    \ rS rSrS rSS jrSS jrSrg)	NoEstimatorm   c                     g r%   r4   r)   s    r*   r+   NoEstimator.__init__n       r-   Nc                     U $ r%   r4   r)   Xys      r*   fitNoEstimator.fitq   s    r-   c                     g r%   r4   r)   r   s     r*   predictNoEstimator.predictt   s    r-   r4   r>   r%   )r/   r0   r1   r2   r+   r   r   r3   r4   r-   r*   r   r   m   s    r-   r   c                       \ rS rSrSrS rSrg)VargEstimatorx   z-scikit-learn estimators shouldn't have vargs.c                     g r%   r4   )r)   vargss     r*   r+   VargEstimator.__init__{   r   r-   r4   Nr   r4   r-   r*   r   r   x   s
    7r-   r   c                      SSK Jn Jn  U " USS9n[        U5      nX#Ld   eUR	                  5       UR	                  5       :X  d   eU " U[
        R                  " S5      S9n[        U5      nX#Ld   eg )Nr   	SelectFpr	f_classif皙?alpha)
      )sklearn.feature_selectionr   r   r	   
get_paramsrv   zerosr   r   selectornew_selectors       r*   
test_cloner      sr     ?#.H?L''' L$;$;$===="((7*;<H?L'''r-   c                  l    SSK Jn Jn  U " USS9nSUl        [	        U5      n[        US5      (       a   eg )Nr   r   r   r   testown_attribute)r   r   r   r   r	   hasattrr   s       r*   test_clone_2r      s:     ?#.H#H?L|_55555r-   c                  Z   [        5       n SU l        [        R                  " [        5         [        U 5        S S S 5        [        5       n[        R                  " [        5         [        U5        S S S 5        [        5       n[        R                  " [        5         [        U5        S S S 5        [        5       n[        R                  " [        5         [        U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ni= f! , (       d  f       g = f)Nr   )
ry   rE   pytestraisesRuntimeErrorr	   r   	TypeErrorr   rn   )buggyno_estimatorvarg_estests       r*   test_clone_buggyr      s    GEEG	|	$e 
% =L	y	!l 
" H	|	$h 
% 
C	|	$c
 
%	$ 
%	$ 
"	! 
%	$ 
%	$s/   C)$C:DD)
C7:
D
D
D*c                  \   [        [        R                  " / 5      S9n [        U 5      n[	        U R
                  UR
                  5        [        [        R                  " [        R                  " S//5      5      S9n [        U 5      n[	        U R
                  R                  UR
                  R                  5        [        [        R                  " [        R                  " S//5      5      S9n [        U 5      n[	        U R
                  R                  UR
                  R                  5        g )Nr(   r   )
r"   rv   rw   r	   r   r(   sp
csr_matrixdata	csr_arrayclfclf2s     r*   test_clone_empty_arrayr      s    
BHHRL
)C:Dsyy$**-
BMM"((QC5/:
;C:Dsyy~~tzz7
BLLA3%9
:C:Dsyy~~tzz7r-   c                  ~    [        [        R                  S9n [        U 5      nU R                  UR                  L d   eg Nr   )r"   rv   nanr	   r(   r   s     r*   test_clone_nanr      s/    
BFF
#C:D99

"""r-   c                  L    S[        5       0n [        U 5      nU S   US   Ld   eg )NrE   )r"   r	   )origcloneds     r*   test_clone_dictr      s-    D4[F9F3K'''r-   c            	      8   [        [        5       V s/ s HW  n U R                  S5      (       d  U R                  S5      (       d  M1  [        [	        [        U 5      =n5      [        L d  MU  UPMY     nn U H  nU" [
        R                  " S5      5      n[        US9n[        U5      nUR                  R                  UR                  R                  L d   e[        UR                  R                  5       UR                  R                  5       5        M     g s  sn f )N_matrix_array   r   )dirr   endswithtypegetattrrv   eyer"   r	   r(   rS   r   toarray)nameclssparse_matrix_classessparse_matrixr   
clf_cloneds         r*   test_clone_sparse_matricesr      s     GD==##t}}X'> 	 wr4(()T1 	   %BFF1I.3Z
yy""j&6&6&@&@@@@399,,.
0@0@0H0H0JK %s   0D D*Dc                  j    [        [         S9n [        U 5      nU R                  UR                  L d   eg r   )r"   r	   r(   r   s     r*   test_clone_estimator_typesr      s-     K
(C:D99

"""r-   c                      Sn [         R                  " [        U S9   [        [        5        S S S 5        g ! , (       d  f       g = f)Nz8You should provide an instance of scikit-learn estimatormatch)r   r   r   r	   r"   )msgs    r*   %test_clone_class_rather_than_instancer      s,     EC	y	,k 
-	,	,s	   5
Ac                      [        5       n S[        U 5      ;  d   e[        5       nS[        U5      ;   d   e[        SS9nS[        U5      ;  d   eSUl        S[        U5      ;   d   eg )N
set_outputF)probabilitypredict_probaT)r   r   r   r   r   )encoderscalarsvcs      r*   !test_conditional_attrs_not_in_dirr      sl     nGs7|+++F3v;&&&
%
 C#c(***COc#h&&&r-   c                      [        5       n [        U 5        [        [        5       [        5       5      n[        U5      S:X  d   e[        S/S-  S9n[	        [        U5      5      S:X  d   eg )NzT(a=K(), b=K())long_paramsi  rt   i  )r"   reprrA   r6   len)my_estimatorr   some_ests      r*   	test_reprr     s[    =LQS!#;D:****M?T)*HtH~#%%%r-   c                  .    [        5       n [        U 5        g r%   )r"   str)r   s    r*   test_strr     s    =Lr-   c                  d   [        [        5       [        5      n SU R                  SS9;   d   eSU R                  SS9;  d   eU R                  SS9  U R                  R
                  S:X  d   e[        R                  " [        5         U R                  SS9  S S S 5        g ! , (       d  f       g = f)Na__dT)deepFr   )r   )a__a)	rA   r6   r   
set_paramsrE   r;   r   r   
ValueError)r   s    r*   test_get_paramsr     s    QS!9DT__$_////e4444OOO6688q==	z	"Q 
#	"	"s   B!!
B/zestimator, expected_resultTCr   r}   r   svc_cvFsvrsvr_cvc                 &    [        U 5      U:X  d   eg r%   )r
   	estimatorexpected_results     r*   test_is_classifierr   %  s     #666r-   c                 &    [        U 5      U:X  d   eg r%   )r   r   s     r*   test_is_regressorr  6       	"o555r-   
n_clusters      kmkm_cvc                 &    [        U 5      U:X  d   eg r%   )r   r   s     r*   test_is_clustererr
  G  r  r-   c                  <   [        S[        5       4/5      n [        R                  " [        5         U R                  SS9  S S S 5        [        R                  " [        5         U R                  SS9  S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nr   T)svc__stupid_param)svm__stupid_param)r   r   r   r   r   r   )r   s    r*   test_set_paramsr  X  sl    
UCEN#
$C 
z	". 
# 
z	". 
#	"	 
#	" 
#	"s   A<#B<
B

Bc                     ^  " U4S jS[         5      n SSS.m[        SU " 5       4/5      [        U " 5       0 5      4 H  nUR                  SSS9  M     g )Nc                   ,   >^  \ rS rSrU U4S jrSrU =r$ )?test_set_params_passes_all_parameters.<locals>.TestDecisionTreein  c                 8   > [         TU ]  " S0 UD6  UT:X  d   eU $ )Nr4   )rM   r   )r)   kwargsrS   expected_kwargss     r*   r   Jtest_set_params_passes_all_parameters.<locals>.TestDecisionTree.set_paramso  s&    G((_,,,Kr-   r4   )r/   r0   r1   r2   r   r3   rV   )rS   r  s   @r*   TestDecisionTreer  n  s    	 	r-   r  r   r   )	max_depthmin_samples_leafr   )estimator__max_depthestimator__min_samples_leaf)r   r   r   r   )r  r   r  s     @r*   %test_set_params_passes_all_parametersr  j  s\    1  %&1=O; 0 2345%', 	A1M	r-   c                      [        [        5       0 5      n U R                  [        5       SS9  U R                  R
                  S:X  d   eg )Ng      E@)r   estimator__C)r   r   r   r   r   r   )gscvs    r*   $test_set_params_updates_valid_paramsr  }  s>     .0"5DOOce$O7>>t###r-   ztree,datasetr   )r  random_state)r   c                    [        U 5      n [        R                  R                  S5      nUu  p4U R	                  X45        UR                  SS[        U5      S9nU R                  X45      nU R                  X4US9nSnXg:w  d   U5       eg )Nr   r}   r   )size)sample_weightz5Unweighted and weighted scores are unexpectedly equal)r	   rv   randomRandomStater   randintr   score)	treedatasetrngr   r   r#  score_unweightedscore_weightedr   s	            r*   test_score_sample_weightr-    s     ;D
))


"CDAHHQNKK2CFK3Mzz!'ZZMZBN
AC-2s2-r-   c                  :    " S S[         [        5      n [        R                  " S5      n[	        U5      nU " USS9n[        U5      nUR                  UR                  :H  R                  R                  5       (       d   eUR                  UR                  :X  d   eg )Nc                   2    \ rS rSrSrSS jrS	S jrS rSrg)
3test_clone_pandas_dataframe.<locals>.DummyEstimatori  zThis is a dummy class for generating numerical features

This feature extractor extracts numerical features from pandas data
frame.

Parameters
----------

df: pandas data frame
    The pandas data frame parameter.

Notes
-----
Nc                     Xl         X l        g r%   dfscalar_param)r)   r3  r4  s      r*   r+   <test_clone_pandas_dataframe.<locals>.DummyEstimator.__init__  s    G ,r-   c                     g r%   r4   r   s      r*   r   7test_clone_pandas_dataframe.<locals>.DummyEstimator.fit      r-   c                     g r%   r4   r   s     r*   	transform=test_clone_pandas_dataframe.<locals>.DummyEstimator.transform  r8  r-   r2  r|   r%   )	r/   r0   r1   r2   ru   r+   r   r:  r3   r4   r-   r*   DummyEstimatorr0    s    		-		r-   r<  r   r}   )r4  )
r   r   rv   aranger   r	   r3  valuesallr4  )r<  r;   r3  ecloned_es        r*   test_clone_pandas_dataframerB    s    )= 6 			"A	q	Br*AQxH DDHKK''++---->>X22222r-   c                  ^    " S S[         5      n [        R                  " SS/SS/SS//5      n[        5       R	                  U5      nUR
                  nU " U5      n[        UR
                  U5        [        UR                  5       UR                  5       5        [        R                  " SS/SS/S	S//5      nUR	                  U5        [        UR
                  U5        UR                  U5        [        UR
                  U5        [        U5      nXdL d   e[        UR
                  U5        g
)z:Checks that clone works with `__sklearn_clone__` protocol.c                   2    \ rS rSrS rS rS rS rS rSr	g)	,test_clone_protocol.<locals>.FrozenEstimatori  c                     Xl         g r%   fitted_estimator)r)   rH  s     r*   r+   5test_clone_protocol.<locals>.FrozenEstimator.__init__  s    $4!r-   c                 .    [        U R                  U5      $ r%   )r   rH  )r)   r   s     r*   __getattr__8test_clone_protocol.<locals>.FrozenEstimator.__getattr__  s    400$77r-   c                     U $ r%   r4   r   s    r*   __sklearn_clone__>test_clone_protocol.<locals>.FrozenEstimator.__sklearn_clone__      Kr-   c                     U $ r%   r4   r)   argsr  s      r*   r   0test_clone_protocol.<locals>.FrozenEstimator.fit  rP  r-   c                 :    U R                   R                  " U0 UD6$ r%   )rH  r:  rR  s      r*   fit_transform:test_clone_protocol.<locals>.FrozenEstimator.fit_transform  s    ((22DCFCCr-   rG  N)
r/   r0   r1   r2   r+   rK  rN  r   rV  r3   r4   r-   r*   FrozenEstimatorrE    s    	5	8			Dr-   rX  r   r     r}   N)r   rv   rw   r   r   components_r   r   get_feature_names_outasarrayrV  r	   )rX  r   pca
components
frozen_pcaX_newclone_frozen_pcas          r*   test_clone_protocolre    s   D- D  	2r(RHr2h/0A
%))A,CJ %JJ**J7 z7793;T;T;VW JJQ!Q!Q01ENN5J**J7 U#J**J7 Z()))$00*=r-   c                  "   [         R                  " 5       n [        5       R                  U R                  U R
                  5      n[        R                  " U5      nSU;   d   e[        R                  " 5          [        R                  " S5        [        R                  " U5      nS S S 5        UR                  U R                  U R
                  5      nWR                  U R                  U R
                  5      nXE:X  d   eg ! , (       d  f       Nb= f)N   _sklearn_versionerror)r   	load_irisr   r   r   targetpickledumpswarningscatch_warningssimplefilterloadsr'  )irisr(  tree_pickletree_restoredscore_of_originalscore_of_restoreds         r*   ?test_pickle_version_warning_is_not_raised_with_matching_versionrv    s    D!#''		4;;?D,,t$K+---		 	 	"g&[1 
#
 

499dkk:%++DIIt{{C111 
#	"s   7-D  
Dc                       \ rS rSrS rSrg)TreeBadVersioni  c                 F    [        U R                  R                  5       SS9$ )N	something)_sklearn_version)dict__dict__itemsr   s    r*   __getstate__TreeBadVersion.__getstate__  s    DMM'')KHHr-   r4   Nr/   r0   r1   r2   r  r3   r4   r-   r*   rx  rx    s    Ir-   rx  zTrying to unpickle estimator {estimator} from version {old_version} when using version {current_version}. This might lead to breaking code or invalid results. Use at your own risk.c                  v   [         R                  " 5       n [        5       R                  U R                  U R
                  5      n[        R                  " U5      n[        R                  SS[        R                  S9n[        R                  " [        US9 n[        R                  " U5        S S S 5        WR                   S   R"                  n[%        U[&        5      (       d   eUR(                  S:X  d   eUR*                  S:X  d   eUR,                  [        R                  :X  d   eg ! , (       d  f       N= f)Nrx  rz  r   old_versioncurrent_versionr   r   )r   ri  rx  r   r   rj  rk  rl  pickle_error_messageformatsklearn__version__r   warnsUserWarningrp  listmessage
isinstancer   estimator_nameoriginal_sklearn_versioncurrent_sklearn_version)rq  r(  tree_pickle_otherr  warning_records        r*   <test_pickle_version_warning_is_issued_upon_different_versionr    s    D		4;;7DT*"))"++ * G
 
k	1^&' 
2 !!!$,,Gg9::::!!%5555++{:::**g.A.AAAA 
2	1s   D**
D8c                       \ rS rSrS rSrg)TreeNoVersioni$  c                     U R                   $ r%   )r}  r   s    r*   r  TreeNoVersion.__getstate__%  s    }}r-   r4   Nr  r4   r-   r*   r  r  $  s    r-   r  c                     [         R                  " 5       n [        5       R                  U R                  U R
                  5      n[        R                  " U5      nSU;  d   e[        R                  SS[        R                  S9n[        R                  " [        US9   [        R                  " U5        S S S 5        g ! , (       d  f       g = f)Nrg  r  zpre-0.18r  r   )r   ri  r  r   r   rj  rk  rl  r  r  r  r  r   r  r  rp  )rq  r(  tree_pickle_noversionr  s       r*   Dtest_pickle_version_warning_is_issued_when_no_version_info_in_pickler  )  s    D?tyy$++6D"LL.&;;;;"))!++ * G 
k	1*+ 
2	1	1s   B>>
Cc                     [         R                  " 5       n [        5       R                  U R                  U R
                  5      n[        R                  " U5      n [        R                  nS[        l        [        R                  " 5          [        R                  " S5        [        R                  " U5        S S S 5        U[        l        g ! , (       d  f       N= f! W[        l        f = f)N
notsklearnrh  )r   ri  r  r   r   rj  rk  rl  r0   rm  rn  ro  rp  )rq  r(  r  module_backups       r*   Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimatorr  ;  s    D?tyy$++6D"LL.	1%00#/ $$&!!'*LL./ '
 $1  '&
 $1 s$   0C -C8C 
CC C*c                        \ rS rSrS rS rSrg)DontPickleAttributeMixiniL  c                 D    U R                   R                  5       nS US'   U$ N_attribute_not_pickled)r}  rq   )r)   r   s     r*   r  %DontPickleAttributeMixin.__getstate__M  s$    }}!!#)-%&r-   c                 D    SUS'   U R                   R                  U5        g )NT	_restored)r}  update)r)   states     r*   __setstate__%DontPickleAttributeMixin.__setstate__R  s    !kU#r-   r4   N)r/   r0   r1   r2   r  r  r3   r4   r-   r*   r  r  L  s    
$r-   r  c                       \ rS rSrSS jrSrg)MultiInheritanceEstimatoriW  c                     Xl         S U l        g r%   attribute_pickledr  r)   r  s     r*   r+   "MultiInheritanceEstimator.__init__X      !2&*#r-   r  r  Nr   r.   r4   r-   r*   r  r  W  s    +r-   r  c                      [        5       n SU l        [        R                  " U 5      n[        R                  " U5      nUR
                  S:X  d   eUR                  b   eUR                  (       d   eg N$this attribute should not be pickledr   )r  r  rk  rl  rp  r  r  r   
serializedestimator_restoreds      r*   3test_pickling_when_getstate_is_overwritten_by_mixinr  ]  sd    )+I'MI$i(Jj1//144444<<<''''r-   c                  l    [        5       n SnXl        [        U 5      R                  nS[        U 5      l        U R	                  5       nUS SS.:X  d   eSUS'   U R                  U5        U R                  S:X  d   eU R                  (       d   e U[        U 5      l        g ! W[        W 5      l        f = f)Nr  r  r   r  r\  r  )r  r  r   r0   r  r  r  r  )r   textold_modr  s       r*   Ftest_pickling_when_getstate_is_overwritten_by_mixin_outside_of_sklearnr  h  s    --/	5+/(y/,,%1Y"++-
STUUUU*+
&'z***a///""""%,Y"WY"s   BB! !B3c                   2   ^  \ rS rSrSS jrU 4S jrSrU =r$ )SingleInheritanceEstimatori{  c                     Xl         S U l        g r%   r  r  s     r*   r+   #SingleInheritanceEstimator.__init__|  r  r-   c                 .   > [         TU ]  5       nS US'   U$ r  )rM   r  )r)   r  rS   s     r*   r  'SingleInheritanceEstimator.__getstate__  s     $&*.&'r-   r  r  )r/   r0   r1   r2   r+   r  r3   rV   rW   s   @r*   r  r  {  s    + r-   r  c                      [        5       n SU l        [        R                  " U 5      n[        R                  " U5      nUR
                  S:X  d   eUR                  b   eg r  )r  r  rk  rl  rp  r  r  s      r*   Ctest_pickling_works_when_getstate_is_overwritten_in_the_child_classr    sU    *,I'MI$i(Jj1//144444<<<r-   c                     [        5       n [        5       nU R                  5       R                  R                  (       d   eUR                  5       R                  R                  (       a   e[        5       nUR                  5       R                  R                  (       a   e[        5       nUR                  5       R                  R                  (       d   e[        5       nUR                  5       R                  R                  (       d   eg r%   )rI   rZ   rN   rO   rP   ra   rf   rk   )nan_tag_estno_nan_tag_estredefine_tags_estdiamond_tag_estinherit_diamond_tag_ests        r*   test_tag_inheritancer    s     (KZN'')44>>>>..0;;EEEE# 113>>HHHH)+O++-88BBBB8:"335@@JJJJr-   c                       " S S[         5      n U " 5       nSn[        R                  " [        US9   UR	                  5         S S S 5        g ! , (       d  f       g = f)Nc                   (    \ rS rSrSS jrSS jrSrg)<test_raises_on_get_params_non_attribute.<locals>.MyEstimatori  c                     g r%   r4   r)   params     r*   r+   Etest_raises_on_get_params_non_attribute.<locals>.MyEstimator.__init__  r8  r-   Nc                     U $ r%   r4   r   s      r*   r   @test_raises_on_get_params_non_attribute.<locals>.MyEstimator.fit  rP  r-   r4   r  r%   )r/   r0   r1   r2   r+   r   r3   r4   r-   r*   r"   r    s    		r-   r"   z-'MyEstimator' object has no attribute 'param'r   )r   r   r   AttributeErrorr   )r"   r   r   s      r*   'test_raises_on_get_params_non_attributer    s@    m  -C
9C	~S	1 
2	1	1s   A
Ac                      [        5       n U R                  5       nSU;   d   eSU;   d   e[        SS9   U R                  5       nSU;   d   eSU;  d   e S S S 5        g ! , (       d  f       g = f)Nz
text/plainz	text/htmlr  display)r   _repr_mimebundle_r   )r(  outputs     r*   test_repr_mimebundle_r    sr    !#D##%F6!!!&   		''')v%%%&((( 
(	'	's   !A
A-c                     [        5       n U R                  5       nSU;   d   e[        SS9   Sn[        R                  " [
        US9   U R                  5       nS S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz<style>r  r  z _repr_html_ is only defined whenr   )r   _repr_html_r   r   r   r  )r(  r  r   s      r*   test_repr_html_wrapsr    sl    !#DF		'0]]>5%%'F 6 
(	'55 
(	's#   A;A*A;*
A8	4A;;
B	c                      [        5       n / SQ/ SQ/n[        XSS9  U R                  S:X  d   eSn[        R                  " [
        US9   [        U SS	S9  S
S
S
5        g
! , (       d  f       g
= f)z>Check that `_check_n_features` validates data when reset=Falser}   r   r  )r\  r      Tresetr  zHX does not contain any features, but MyEstimator is expecting 3 featuresr   	invalid XFN)r"   r   n_features_in_r   r   r   )r   X_trainr   s      r*   test_n_features_in_validationr    s\    
-C)$Gc$/"""
TC	z	-#{%8 
.	-	-s   
A
A-c                  j    [        5       n [        U SSS9  [        U S5      (       a   e[        U SSS9  g)zYCheck that `_check_n_features` does not validate data when
n_features_in_ is not defined.r  Tr  r  FN)r"   r   r   r   s    r*    test_n_features_in_no_validationr    s9     -Cc;d3s,---- c;e4r-   c                     [         R                  " S5      n [        R                  " 5       nUR                  nU R                  X!R                  S9n " S S[        [        5      nU" 5       R                  U5      n[        UR                  UR                  5        UR                  U5        [        US5      (       a   eUR                  U5        SnU R                  X!R                  SSS2   S9n[         R                  " [        US	9   UR!                  U5        SSS5        S
n[         R"                  " [$        US	9   UR!                  U5        SSS5        SnU" 5       R                  U5      n[         R"                  " [$        US	9   UR!                  U5        SSS5        U R                  U5      nU" 5       n[&        R(                  " 5          [&        R*                  " S[$        5        UR                  U5        SSS5        X(/n	U	 HM  n
[&        R(                  " 5          [&        R*                  " S[$        5        UR!                  U
5        SSS5        MO     U R                  U/ SQS9nU" 5       n[,        R.                  " S5      n[         R                  " [0        US	9   UR                  U5        SSS5        [         R                  " [0        US	9   UR!                  U5        SSS5        g! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN1= f! , (       d  f       GM?  = f! , (       d  f       N= f! , (       d  f       g= f)z;Check that feature_name_in are recorded by `_validate_data`pandascolumnsc                   $    \ rS rSrSS jrS rSrg).test_feature_names_in.<locals>.NoOpTransformeri  Nc                     [        X5        U $ r%   r    r   s      r*   r   2test_feature_names_in.<locals>.NoOpTransformer.fit      $"Kr-   c                     [        XSS9  U$ NFr  r  r   s     r*   r:  8test_feature_names_in.<locals>.NoOpTransformer.transform  s    $/Hr-   r4   r%   r/   r0   r1   r2   r   r:  r3   r4   r-   r*   NoOpTransformerr    s    		r-   r  feature_names_in_z5The feature names should match those that were passedNrY  r   zVX does not have valid feature names, but NoOpTransformer was fitted with feature nameszIX has feature names, but NoOpTransformer was fitted without feature namesrh  )rE   rF   r}   r   a  Feature names are only supported if all input features have string names, but your input has ['int', 'str'] as feature name / column name types. If you want feature names to be stored and validated, you must convert them all to strings, by using X.columns = X.columns.astype(str) for example. Otherwise you can remove feature / column names from your input data, or convert them all to a non-string data type.)r   importorskipr   ri  r   	DataFramefeature_namesr   r   r   r   r  r  r   r   r   r:  r  r  rm  rn  ro  reescaper   )pdrq  X_npr3  r  transr   df_baddf_int_namesXsr   df_mixeds               r*   test_feature_names_inr    s   			X	&BD99D	d$6$6	7B*M  !!"%Eu..

; 
IIdOu12222	IIbM
AC\\$(:(:4R4(@\AF	z	- 
.
	$  
k	- 
. VC!!$'E	k	- 
. <<%LE		 	 	"g{3		, 
# 	B$$&!!';7OOA '&  ||D*:|;HE
))	?C 
y	,		( 
- 
y	,! 
-	,_ 
.	- 
.	- 
.	- 
#	" '& 
-	, 
-	,sT   
K2?L
L-L(#-L:$MM2
L
L
L%(
L7:
M
	
M
M,c                     [         R                  " S5      n [        R                  " 5       nU R	                  UR
                  UR                  S9nU R                  UR                  5      n " S S[        [        5      nU" 5       n[        XRSS9n[        U[        R                  5      (       d   e[        XbR!                  5       5        [        XRSS9nXrL d   e[        XSSS9n[        U[        R                  5      (       d   e[        XR!                  5       5        [        XSSS9n	XL d   e[        XRUSS9u  ph[        U[        R                  5      (       d   e[        XbR!                  5       5        [        U[        R                  5      (       d   e[        XR!                  5       5        [        XRUSS9u  pyXrL d   eXL d   eS	n
[         R"                  " [$        U
S
9   [        U5        SSS5        g! , (       d  f       g= f)z0Check skip_check_array option of _validate_data.r  r  c                       \ rS rSrSrg)<test_validate_data_skip_check_array.<locals>.NoOpTransformeri:  r4   Nrh   r4   r-   r*   r  r  :      r-   r  F)skip_check_arrayT)r   r  z*Validation should be done on X, y or both.r   N)r   r   r   ri  r  r   r  Seriesrj  r   r   r    r  rv   ndarrayr   to_numpyr   r   )r  rq  r3  r   r  no_opX_np_outX_df_outy_np_outy_series_outr   s              r*   #test_validate_data_skip_check_arrayr  2  s    
		X	&BD	dii););	<B
		$++A*M  EU?Hh

++++Hkkm,U>H>>U%@Hh

++++Hjjl+ dCL&u!eLHh

++++Hkkm,h

++++Hjjl+*5a$OH>>
6C	z	-e 
.	-	-s   #G88
Hc                      [        5       R                  SS9n [        SU 5      n[        U 5      n[        SU5      nX:X  d   eg)z-Check that clone keeps the set_output config.r  )r:  r:  N)r   r   r   r	   )ssconfigss_cloneconfig_clones       r*   test_clone_keeps_output_configr   [  sG     
		$	$x	$	8BR0FRyH%k8<L!!!r-   c                       \ rS rSrSrg)_Emptyif  r4   Nrh   r4   r-   r*   r"  r"  f  ri   r-   r"  c                       \ rS rSrSrg)EmptyEstimatorij  r4   Nrh   r4   r-   r*   r$  r$  j  ri   r-   r$  r   c                     U R                  5       nS[        R                  0nX:X  d   e[        R                  " [        R
                  " [        5       5      5        g)zCheck that ``__getstate__`` returns an empty ``dict`` with an empty
instance.

Python 3.11+ changed behaviour by returning ``None`` instead of raising an
``AttributeError``. Non-regression test for gh-25188.
r{  N)r  r  r  rk  rp  rl  r   )r   r  expecteds      r*   "test_estimator_empty_instance_dictr'  n  sG     ""$E"G$7$78H LLmo./r-   c                  h    " S S5      n  " S S[         U 5      nSn[        R                  " [        US9   U" 5       R	                  5         SSS5        [        R                  " [        US9   [
        R                  " U" 5       5        SSS5        g! , (       d  f       NL= f! , (       d  f       g= f)z:Using a `BaseEstimator` with `__slots__` is not supported.c                       \ rS rSrSrSrg)Dtest_estimator_getstate_using_slots_error_message.<locals>.WithSlotsi  xr4   N)r/   r0   r1   r2   	__slots__r3   r4   r-   r*   	WithSlotsr*    s    	r-   r.  c                       \ rS rSrSrg)Dtest_estimator_getstate_using_slots_error_message.<locals>.Estimatori  r4   Nrh   r4   r-   r*   	Estimatorr0    r  r-   r1  zRYou cannot use `__slots__` in objects inheriting from `sklearn.base.BaseEstimator`r   N)r   r   r   r   r  rk  rl  )r.  r1  r   s      r*   1test_estimator_getstate_using_slots_error_messager2  ~  s     M9 	' 
 
y	,  " 
- 
y	,Y[! 
-	, 
-	, 
-	,s   B-B#
B #
B1zconstructor_name, minversion))r  z1.5.0)pyarrowz13.0.0)polarsz0.20.23c                    / SQ/ SQ/n/ SQn[        X X1S9n " S S[        [        5      nU" 5       nUR                  U5        [	        UR
                  U5        UR                  U5      nU S:w  a  [        XG5        / SQn[        X US	9n	[        R                  " [        S
S9   UR                  U	5        SSS5        g! , (       d  f       g= f)z=Test that feature_names_in_ is correctly set for dataframe X.)r}   r\  r   )r  r  r  )col_0col_1col_2)column_names
minversionc                   $    \ rS rSrSS jrS rSrg)<test_feature_names_in_on_dataframes.<locals>.NoOpTransformeri  Nc                     [        X5        U $ r%   r  r   s      r*   r   @test_feature_names_in_on_dataframes.<locals>.NoOpTransformer.fit  r  r-   c                     [        XSS9$ r  r  r   s     r*   r:  Ftest_feature_names_in_on_dataframes.<locals>.NoOpTransformer.transform  s     66r-   r4   r%   r  r4   r-   r*   r  r<    s    		7r-   r  r3  )rE   rF   r:   )r9  zThe feature names should matchr   N)r   r   r   r   r   r  r:  r   r   r   r   )
constructor_namer:  r   r  r3  r  r  X_out	bad_namesr  s
             r*   #test_feature_names_in_on_dataframesrD    s     y!D)G	W
B7*M 7 E	IIbMu..8OOBE9$ 	"IYOF	z)I	J 
K	J	Js   "B==
C)enable_metadata_routingc                      " S S[         [        5      n [        R                  " [        SS9   U " 5       R                  SS9R                  S//S/SS9  SSS5        [        R                  " SS	9 nU " 5       R                  SS9R                  S//S/5        [        U5      S
:X  d   e SSS5        g! , (       d  f       Ne= f! , (       d  f       g= f)zgTest that having a transformer with metadata for transform raises a
warning when calling fit_transform.c                   (    \ rS rSrSS jrSS jrSrg)Ttest_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformeri  Nc                     U $ r%   r4   r)   r   r   props       r*   r   Xtest_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.fit  rP  r-   c                     U$ r%   r4   r)   r   rK  s      r*   r:  ^test_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.transform      Hr-   r4   r>   r%   r  r4   r-   r*   CustomTransformerrH        		r-   rQ  z*`transform` method which consumes metadatar   TrK  r}   Nrecordr   )
r   r   r   r  r  set_transform_requestrV  rm  rn  r   )rQ  rU  s     r*   9test_transformer_fit_transform_with_metadata_in_transformrW    s    
M+;  
k)U	V11t1<JJSEA3Q 	K 	
 
W 
	 	 	-11t1<JJQC5STRUV6{a 
.	- 
W	V 
.	-   'B419C4
C
Cc                      " S S[         [        5      n [        R                  " [        SS9   U " 5       R                  SS9R                  S//S/SS9  SSS5        [        R                  " SS	9 nU " 5       R                  SS9R                  S//S/5        [        U5      S
:X  d   e SSS5        g! , (       d  f       Ne= f! , (       d  f       g= f)zeTest that having an OutlierMixin with metadata for predict raises a
warning when calling fit_predict.c                   (    \ rS rSrSS jrSS jrSrg)Vtest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetectori  Nc                     U $ r%   r4   rJ  s       r*   r   Ztest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.fit  rP  r-   c                     U$ r%   r4   rN  s      r*   r   ^test_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.predict  rP  r-   r4   r>   r%   )r/   r0   r1   r2   r   r   r3   r4   r-   r*   CustomOutlierDetectorr[    rR  r-   r`  z(`predict` method which consumes metadatar   TrS  r}   NrT  r   )
r   r   r   r  r  set_predict_requestfit_predictrm  rn  r   )r`  rU  s     r*   7test_outlier_mixin_fit_predict_with_metadata_in_predictrc    s    
|  
k)S	T333>JJSEA3Q 	K 	
 
U 
	 	 	-333>JJQC5STRUV6{a 
.	- 
U	T 
.	-rX  c                      [        SS9n U R                  5       SSS.:X  d   eU R                  5       R                  S:X  d   eg)z5Check the behaviour of the `_get_params_html` method.r   r   r   r&   N)r"   _get_params_htmlnon_defaultr  s    r*   test_get_params_htmlrg    sE    
F
#C!A%????!--;;;r-   c                  t   [         R                  " SS/SS/SS//5      n [        5       R                  U 5      nSUl        UR                  5       nUS   SSS.:X  d   eUR                  U;  d   e[        U5      S	:X  d   eUS
   S   S:X  d   eUS
   S   S:X  d   e[        US
   S   UR                  5        g)z:Check the behaviour of the `_get_fitted_attr_html` method.rY  rZ  r[  r,  r  intr   	type_namevalue	   r]  rk  r  shape)r   r   rl  N)	rv   rw   r   r   _not_a_fitted_attr_get_fitted_attr_htmlr   r   r]  )r   r`  fitted_attr_htmls      r*   test_get_fitted_attr_htmlrr    s    
2r(RHr2h/0A
%))A,C C002,-uq1QQQQ!!)9999 A%%%M*;7IFFFM*73v===$]3G<cooNr-   c                       " S S[         5      n U " 5       n[        R                  " 5          [        R                  " S5        UR	                  5       nSSS5        WS   SSS.:X  d   eg! , (       d  f       N= f)	zCheck that deprecated fitted attrs don't generate a warning in the repr.

Non-regression test for
https://github.com/scikit-learn/scikit-learn/issues/34056
c                   :    \ rS rSr\" S5      \S 5       5       rSrg)8test_get_fitted_attr_html_no_warnings.<locals>.Estimatori  zAttribute `foo` is deprecatedc                     gr|   r4   r   s    r*   foo_=test_get_fitted_attr_html_no_warnings.<locals>.Estimator.foo_  s     r-   r4   N)r/   r0   r1   r2   r   propertyrw  r3   r4   r-   r*   r1  ru    s"    	3	4		 
 
5	r-   r1  rh  Nrw  ri  r}   rj  )r   rm  rn  ro  rp  )r1  modelhtmls      r*   %test_get_fitted_attr_html_no_warningsr|    sf    M  KE		 	 	"g&**, 
#
 <;;;; 
#	"s   'A**
A8c                 ,   ^   " U 4S jS[         5      nU$ )Nc                   $   > \ rS rSr Y 4S jrSrg)3make_estimator_with_param.<locals>.DynamicEstimatori  c                     Xl         g r%   r  r  s     r*   r+   <make_estimator_with_param.<locals>.DynamicEstimator.__init__  s    Jr-   r  Nr.   default_values   r*   DynamicEstimatorr    s    !. 	r-   r  )r   )r  r  s   ` r*   make_estimator_with_paramr    s    =  r-   zdefault_value, test_value)r4   )r}   r4   )r}   r   )r  r\  r  r\  r|   c                     U $ r%   r4   r+  s    r*   <lambda>r  /  s    r-         ?)abcdefr  )TF)r         @accuracyc                 f    [        U 5      " US9nUR                  5       R                  nSU;   d   eg)zCheck that we detect non-default parameters with various types.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/31525
r  r  Nr  re  rf  r  
test_valuer   rf  s       r*   test_param_is_non_defaultr  $  s6    F *-8zJI,,.::Kk!!!r-   c                      [         R                  " S5      n [        SS9" U R                  S9nUR	                  5       R
                  nSU;   d   eg)zCheck that we detect pandas.Na as non-default parameter.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/32312
r  r   r  r  r  N)r   r   r  NAre  rf  )r  r   rf  s      r*   (test_param_is_non_default_when_pandas_NAr  L  sI     
		X	&B):GI,,.::Kk!!!r-   r>   )r4   r4   )r  r  r  )r  r  )TT)r}   r}   )r  r  )r   r  c                 f    [        U 5      " US9nUR                  5       R                  nSU;  d   eg)zCheck that we detect the default parameters and values in an array-like will
be reported as default as well.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/31525
r  r  Nr  r  s       r*   test_param_is_defaultr  Y  s5    2 *-8zJI,,.::K+%%%r-   )rk  r  rm  numpyrv   r   scipy.sparsesparser   numpy.testingr   r  r   r   sklearn.baser   r   r   r	   r
   r   r   sklearn.clusterr   sklearn.decompositionr   sklearn.exceptionsr   sklearn.metricsr   sklearn.model_selectionr   r   sklearn.pipeliner   sklearn.preprocessingr   r   sklearn.svmr   r   sklearn.treer   r   sklearn.utilsr   sklearn.utils._mockingr   sklearn.utils._set_outputr   sklearn.utils._testingr   r   sklearn.utils.validationr   r    r"   r6   rA   rI   rZ   ra   rf   rk   rn   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r  r
  r  r  r  make_classificationmake_regressionr-  rB  re  rv  rx  r  r  r  r  thread_unsafer  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r$  r'  r2  rD  rW  rc  rg  rr  r|  r  rw   r   r  r  r  r4   r-   r*   <module>r     s    	     )  ,   # % 9 & 7 % >   F $ 0 8 F
-   ] } & 	&( 		!4 	} M  M ($6(8#(L #' &
   		cecC8_	-t4	E35>"	#T*	Hl353a/BCD	EtL		cecC8_	-u5	E35>"	#U+	Hl353a/BCD	EuM	77  		cecC8_	-t4	E35>"	#T*	Hl353a/BCD	EtL		cecC8_	-u5	E35>"	#U+	Hl353a/BCD	EuM	66  	4	fh1v 6	7>	D&(#$	%t,	G\&(\Aq64JKLM	NPTU		cecC8_	-u5	E35>"	#U+	Hl353a/BCD	EuM	66
/$N&$  #QQ?((a8	

 "AA>$$!4	
	33#3L)>X2 I+ I B&* 
,$ 1 1 $ $+ 8- +(-& =K$
)
(
9	5K"\&R"	 		V] 	 }8H&IJ0 K0"* "  @ -  . 2 -  . 2<O<, 	aS		RXXqc]	!Q	1a&!"	r
	{		266(#$		
QC	
BHHaSM	se	bhhuo
Q!	1#A	uw	z*%&1:";:"
" 	R	RXXb\	I	BHHY'(	$	&%$	&r-   