
    -i                     2   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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 SK$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/  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[ rcS\ rd " S] S^5      re " S_ S`\e\5      rfSa rgSb rh " Sc Sd\5      riSe rjSf rkSg rlSh rmSi rnSj roSk rpSl rqSm rrSn rs " So Sp5      rt " Sq Sr\t\5      ru\R                  R                  Ss\" 5       \u" 5       /5      St 5       rvSu rw\R                  R                  Sv/ SwQ5      Sx 5       rx\" S9Sy9Sz 5       ry\" S9Sy9S{ 5       rzS| r{S} r|\R                  R                  S~SSS</4S\R                  " S</5      4SSSES/4S\R                  " SES/5      4SS/ 4SS 4\R                  S4\R                  \R                  " \R                  /5      4SSS/4SSS<S</4S<\R                  " S</5      4SSS/4S\R                  " S/5      4S<SN/SE/4\R                  " S</5      SNSE/4S\#" 5       4S\ " S5      4/5      S 5       r\R                  R                  S~SSS/ 4S\R                  " / 5      4SS/ SQ4S\R                  " / SQ5      4\R                  \R                  4SSSSS/5      S 5       rg)    N)assert_allclose)config_contextdatasets)BaseEstimatorOutlierMixinTransformerMixincloneis_classifieris_clustereris_outlier_detectoris_regressor)KMeans)PCA)IsolationForest)InconsistentVersionWarning)
get_scorer)GridSearchCVKFold)Pipeline)StandardScaler)SVCSVR)DecisionTreeClassifierDecisionTreeRegressor)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      J/var/www/html/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)K4   Nc                     Xl         X l        g r%   cd)r)   r:   r;   s      r*   r+   
K.__init__5       r-   r9   NNr.   r4   r-   r*   r6   r6   4       r-   r6   c                       \ rS rSrSS jrSrg)T:   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   :   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__A   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$ )NoNaNTagG   c                 F   > [         TU ]  5       nSUR                  l        U$ NFrL   rQ   s     r*   rN   NoNaNTag.__sklearn_tags__H   !    w')$)!r-   r4   rU   rW   s   @r*   rZ   rZ   G   rX   r-   rZ   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )OverrideTagN   c                 F   > [         TU ]  5       nSUR                  l        U$ r]   rL   rQ   s     r*   rN   OverrideTag.__sklearn_tags__O   r_   r-   r4   rU   rW   s   @r*   ra   ra   N   rX   r-   ra   c                       \ rS rSrSrg)DiamondOverwriteTagU   r4   Nr/   r0   r1   r2   r3   r4   r-   r*   rf   rf   U       r-   rf   c                       \ rS rSrSrg)InheritDiamondOverwriteTagY   r4   Nrh   r4   r-   r*   rk   rk   Y   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__c   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)Buggyg   z9A buggy estimator that does not set its parameters right.Nc                     SU l         g N   rt   rr   s     r*   r+   Buggy.__init__j   s	    r-   rt   r%   r/   r0   r1   r2   ru   r+   r3   r4   r-   r*   ry   ry   g   s
    ?r-   ry   c                   .    \ rS rSrS rSS jrSS jrSrg)	NoEstimatorn   c                     g r%   r4   r)   s    r*   r+   NoEstimator.__init__o       r-   Nc                     U $ r%   r4   r)   Xys      r*   fitNoEstimator.fitr   s    r-   c                     g r%   r4   r)   r   s     r*   predictNoEstimator.predictu   s    r-   r4   r>   r%   )r/   r0   r1   r2   r+   r   r   r3   r4   r-   r*   r   r   n   s    r-   r   c                       \ rS rSrSrS rSrg)VargEstimatory   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   y   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                  x   [        [        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        g )Nr(   r   )	r"   rv   rw   r	   r   r(   sp
csr_matrixdataclfclf2s     r*   test_clone_empty_arrayr      sq    
BHHRL
)C:Dsyy$**-
BMM"((QC5/:
;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            	         [        [        5       V s/ s HA  n U R                  S5      (       d  M  [        [	        [        U 5      =n5      [        L d  M?  UPMC     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   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==# 	(,GB4E-ES(F$(N 	   %BFF1I.3Z
yy""j&6&6&@&@@@@399,,.
0@0@0H0H0JK %s   D 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 [        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/c                  T   [         R                  " [        SS9   [        [        5      (       d   e S S S 5        [         R                  " [        SS9   [        [        5      (       d   e S S S 5        [         R                  " [        SS9   [        [        5      (       d   e S S S 5        [         R                  " [        SS9   [        [        5      (       d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       g = f)Nz!passing a class to.*is deprecatedr   )r   warnsFutureWarningr
   r   r   r   r   r   r   r   r4   r-   r*   test_is_estimator_type_classr     s    	m+N	OS!!!! 
P 
m+N	OC     
P 
m+N	OF#### 
P 
m+N	O"?3333 
P	O 
P	O 
P	O 
P	O 
P	Os/   C&C7DD&
C47
D
D
D'zestimator, expected_resultTCr   r}   svc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   0       	"o555r-   
n_clusters      kmkm_cvc                 &    [        U 5      U:X  d   eg r%   )r   r   s     r*   test_is_clustererr  A  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	  R  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>.TestDecisionTreeih  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_paramsi  s&    G((_,,,Kr-   r4   )r/   r0   r1   r2   r   r3   rV   )rS   r  s   @r*   TestDecisionTreer  h  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  d  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  w  s>     .0"5DOOce$O7>>t###r-   ztree,datasetr   )r  random_state)r  c                     [         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)rv   randomRandomStater   randintr   score)	treedatasetrngr   r   r  score_unweightedscore_weightedr   s	            r*   test_score_sample_weightr(    sy     ))


"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)   r.  r/  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  r3  r-   r-  r|   r%   )	r/   r0   r1   r2   ru   r+   r   r5  r3   r4   r-   r*   DummyEstimatorr+    s    		-		r-   r7  r   r}   )r/  )
r   r   rv   aranger   r	   r.  valuesallr/  )r7  r;   r.  ecloned_es        r*   test_clone_pandas_dataframer=    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)   rC  s     r*   r+   5test_clone_protocol.<locals>.FrozenEstimator.__init__  s    $4!r-   c                 .    [        U R                  U5      $ r%   )r   rC  )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  rK  r-   c                 :    U R                   R                  " U0 UD6$ r%   )rC  r5  rM  s      r*   fit_transform:test_clone_protocol.<locals>.FrozenEstimator.fit_transform  s    ((22DCFCCr-   rB  N)
r/   r0   r1   r2   r+   rF  rI  r   rQ  r3   r4   r-   r*   FrozenEstimatorr@    s    	5	8			Dr-   rS  r   r      r}   N)r   rv   rw   r   r   components_r   r   get_feature_names_outasarrayrQ  r	   )rS  r   pca
components
frozen_pcaX_newclone_frozen_pcas          r*   test_clone_protocolr`    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_versionrq    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   rz  r3   r4   r-   r*   rs  rs    s    Ir-   rs  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)Nrs  ru  r   old_versioncurrent_versionr   r   )r   rd  rs  r   r   re  rf  rg  pickle_error_messageformatsklearn__version__r   r   UserWarningrk  listmessage
isinstancer   estimator_nameoriginal_sklearn_versioncurrent_sklearn_version)rl  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%   )rx  r   s    r*   rz  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)Nrb  r  zpre-0.18r~  r   )r   rd  r  r   r   re  rf  rg  r  r  r  r  r   r   r  rk  )rl  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
notsklearnrc  )r   rd  r  r   r   re  rf  rg  r0   rh  ri  rj  rk  )rl  r#  r  module_backups       r*   Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimatorr  3  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)DontPickleAttributeMixiniC  c                 D    U R                   R                  5       nS US'   U$ N_attribute_not_pickled)rx  rq   )r)   r   s     r*   rz  %DontPickleAttributeMixin.__getstate__D  s$    }}!!#)-%&r-   c                 D    SUS'   U R                   R                  U5        g )NT	_restored)rx  update)r)   states     r*   __setstate__%DontPickleAttributeMixin.__setstate__I  s    !kU#r-   r4   N)r/   r0   r1   r2   rz  r  r3   r4   r-   r*   r  r  C  s    
$r-   r  c                       \ rS rSrSS jrSrg)MultiInheritanceEstimatoriN  c                     Xl         S U l        g r%   attribute_pickledr  r)   r  s     r*   r+   "MultiInheritanceEstimator.__init__O      !2&*#r-   r  r  Nr   r.   r4   r-   r*   r  r  N  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  rf  rg  rk  r  r  r   
serializedestimator_restoreds      r*   3test_pickling_when_getstate_is_overwritten_by_mixinr  T  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  rW  r  )r  r  r   r0   rz  r  r  r  )r   textold_modr  s       r*   Ftest_pickling_when_getstate_is_overwritten_by_mixin_outside_of_sklearnr  _  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$ )SingleInheritanceEstimatorir  c                     Xl         S U l        g r%   r  r  s     r*   r+   #SingleInheritanceEstimator.__init__s  r  r-   c                 .   > [         TU ]  5       nS US'   U$ r  )rM   rz  )r)   r  rS   s     r*   rz  'SingleInheritanceEstimator.__getstate__w  s     $&*.&'r-   r  r  )r/   r0   r1   r2   r+   rz  r3   rV   rW   s   @r*   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  rf  rg  rk  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__  r3  r-   Nc                     U $ r%   r4   r   s      r*   r   @test_raises_on_get_params_non_attribute.<locals>.MyEstimator.fit  rK  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   )rW  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*   r5  8test_feature_names_in.<locals>.NoOpTransformer.transform  s    $/Hr-   r4   r%   r/   r0   r1   r2   r   r5  r3   r4   r-   r*   NoOpTransformerr    s    		r-   r  feature_names_in_z5The feature names should match those that were passedNrT  r   zVX does not have valid feature names, but NoOpTransformer was fitted with feature nameszIX has feature names, but NoOpTransformer was fitted without feature namesrc  )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   rd  r   	DataFramefeature_namesr   r   r   r   r  r  r   r   r   r5  r   r  rh  ri  rj  reescaper   )pdrl  X_npr.  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>.NoOpTransformeri1  r4   Nrh   r4   r-   r*   r  r	  1      r-   r  F)skip_check_arrayT)r   r  z*Validation should be done on X, y or both.r   N)r   r  r   rd  r  r   r  Seriesre  r   r   r    r  rv   ndarrayr   to_numpyr   r   )r  rl  r.  r   r  no_opX_np_outX_df_outy_np_outy_series_outr   s              r*   #test_validate_data_skip_check_arrayr  )  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  )r5  r5  N)r   
set_outputr   r	   )ssconfigss_cloneconfig_clones       r*   test_clone_keeps_output_configr  R  sG     
		$	$x	$	8BR0FRyH%k8<L!!!r-   c                       \ rS rSrSrg)_Emptyi]  r4   Nrh   r4   r-   r*   r  r  ]  ri   r-   r  c                       \ rS rSrSrg)EmptyEstimatoria  r4   Nrh   r4   r-   r*   r  r  a  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.
rv  N)rz  r  r  rf  rk  rg  r   )r   r  expecteds      r*   "test_estimator_empty_instance_dictr"  e  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>.WithSlotsix  xr4   N)r/   r0   r1   r2   	__slots__r3   r4   r-   r*   	WithSlotsr%  x  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*   	Estimatorr+  {  r
  r-   r,  zRYou cannot use `__slots__` in objects inheriting from `sklearn.base.BaseEstimator`r   N)r   r   r   r   rz  rf  rg  )r)  r,  r   s      r*   1test_estimator_getstate_using_slots_error_messager-  u  s     M9 	' 
 
y	,  " 
- 
y	,Y[! 
-	, 
-	, 
-	,s   B-B#
B #
B1zconstructor_name, minversion))	dataframez1.5.0)pyarrowz12.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:Uses the dataframe exchange protocol to get feature names.)r}   rW  r   )r   r   r  )col_0col_1col_2)columns_name
minversionc                   $    \ rS rSrSS jrS rSrg)0test_dataframe_protocol.<locals>.NoOpTransformeri  Nc                     [        X5        U $ r%   r  r   s      r*   r   4test_dataframe_protocol.<locals>.NoOpTransformer.fit  r  r-   c                     [        XSS9$ r  r  r   s     r*   r5  :test_dataframe_protocol.<locals>.NoOpTransformer.transform  s     66r-   r4   r%   r  r4   r-   r*   r  r8    s    		7r-   r  r/  )rE   rF   r:   )r5  zThe feature names should matchr   N)r   r   r   r   r   r  r5  r   r   r   r   )
constructor_namer6  r   r  r.  r  r  X_out	bad_namesr  s
             r*   test_dataframe_protocolr@    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  rK  r-   c                     U$ r%   r4   r)   r   rG  s      r*   r5  ^test_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.transform      Hr-   r4   r>   r%   r  r4   r-   r*   CustomTransformerrD        		r-   rM  z*`transform` method which consumes metadatar   TrG  r}   Nrecordr   )
r   r   r   r   r  set_transform_requestrQ  rh  ri  r   )rM  rQ  s     r*   9test_transformer_fit_transform_with_metadata_in_transformrS    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   rF  s       r*   r   Ztest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.fit  rK  r-   c                     U$ r%   r4   rJ  s      r*   r   ^test_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.predict  rL  r-   r4   r>   r%   )r/   r0   r1   r2   r   r   r3   r4   r-   r*   CustomOutlierDetectorrW    rN  r-   r\  z(`predict` method which consumes metadatar   TrO  r}   NrP  r   )
r   r   r   r   r  set_predict_requestfit_predictrh  ri  r   )r\  rQ  s     r*   7test_outlier_mixin_fit_predict_with_metadata_in_predictr_    s    
|  
k)S	T333>JJSEA3Q 	K 	
 
U 
	 	 	-333>JJQC5STRUV6{a 
.	- 
U	T 
.	-rT  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_htmlrc    sE    
F
#C!A%????!--;;;r-   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-   rh  Nr.   )default_values   r*   DynamicEstimatorrf    s    !. 	r-   rk  )r   )rj  rk  s   ` r*   make_estimator_with_paramrl    s    =  r-   zdefault_value, test_value)r4   )r}   r4   )r}   r   )r   rW  rm  rW  r|   c                     U $ r%   r4   r&  s    r*   <lambda>ro    s    r-         ?)abcdefrq  )TF)rp         @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
rh  r  Nrl  ra  rb  rj  
test_valuer   rb  s       r*   test_param_is_non_defaultry    s6    F *-8zJI,,.::Kk!!!r-   r>   )r4   r4   )r  r  r  )rq  rq  )TT)r}   r}   )rp  rp  )r   rs  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
rh  r  Nrv  rw  s       r*   test_param_is_defaultr{    s5    2 *-8zJI,,.::K+%%%r-   )rf  r  rh  numpyrv   r   scipy.sparsesparser   numpy.testingr   r  r   r   sklearn.baser   r   r   r	   r
   r   r   r   sklearn.clusterr   sklearn.decompositionr   sklearn.ensembler   sklearn.exceptionsr   sklearn.metricsr   sklearn.model_selectionr   r   sklearn.pipeliner   sklearn.preprocessingr   sklearn.svmr   r   sklearn.treer   r   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(  r=  r`  rq  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r-  r@  rS  r_  rc  rl  rw   r   ry  r{  r4   r-   r*   <module>r     sv    	     )  ,	 	 	 # % , 9 & 7 % 0   F 0 8 F
-   ] } & 	&( 		!4 	} M  M ($6(8#(L#&
 4  		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 $ $+ 8- +(-& =K$
)
(
9	5K"\&R"	 		V] 	 }8H&IJ0 K0"* "  @ -  . 2 -  . 2< 	aS		RXXqc]	!Q	1a&!"	r
	{		266(#$		
QC	
BHHaSM	se	bhhuo
Q!	1#A	uw	z*%&1:";:" 	R	RXXb\	I	BHHY'(	$	&%$	&r-   