
    Ki                     ^   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K0J1r1J2r2  S SK3J4r4J5r5   " S S\5      r6 " S S\5      r7 " S S\5      r8 " S S\5      r9 " S S\5      r: " S S\95      r; " S S\9\:5      r< " S  S!\<5      r= " S" S#\5      r> " S$ S%\5      r? " S& S'5      r@ " S( S)\5      rAS* rBS+ rCS, rDS- rES. rFS/ rGS0 rHS1 rIS2 rJS3 rKS4 rLS5 rMS6 rN\R                  R                  S7\'" 5       S84\" \'" 5       S9S:S;/05      S84\"" S<\'" 5       4/5      S84\"" S=\" \'" 5       S9S:S;/05      4/5      S84\(" 5       S>4\" \(" 5       S9S:S;/05      S>4\"" S?\(" 5       4/5      S>4\"" S@\" \(" 5       S9S:S;/05      4/5      S>4/5      SA 5       rQ\R                  R                  S7\(" 5       S84\" \(" 5       S9S:S;/05      S84\"" S?\(" 5       4/5      S84\"" S@\" \(" 5       S9S:S;/05      4/5      S84\'" 5       S>4\" \'" 5       S9S:S;/05      S>4\"" S<\'" 5       4/5      S>4\"" S=\" \'" 5       S9S:S;/05      4/5      S>4/5      SB 5       rR\R                  R                  S7\" 5       S84\" \" 5       SCSDSE/05      S84\"" SF\" 5       4/5      S84\"" SG\" \" 5       SCSDSE/05      4/5      S84\'" 5       S>4\" \'" 5       S9S:S;/05      S>4\"" S<\'" 5       4/5      S>4\"" S=\" \'" 5       S9S:S;/05      4/5      S>4/5      SH 5       rSSI rTSJ rUSK rV\R                  R                  SL\*" SMS SN9\R                  " S SO94\+" SMS SN9\R                  " S SO94/5      SP 5       rYSQ rZSR r[SS r\ " ST SU\*5      r]SVr^SW r_ " SX SY\*5      r`SZ ra\R                  R                  S[ 5       rc " S\ S]5      rd " S^ S_\d\5      reS` rfSa rg " Sb Sc\5      rhSd riSe rjSf rkSg rlSh rmSi rnSj roSk rpSl rqSm rr " Sn So5      rs " Sp Sq\s\5      rt\R                  R                  Sr\" 5       \t" 5       /5      Ss 5       ruSt rv\R                  R                  Su/ SvQ5      Sw 5       rw\" S8Sx9Sy 5       rx\" S8Sx9Sz 5       ryS{ rzS| r{\R                  R                  S}S~SS;/4S\R                  " S;/5      4SSSDS/4S\R                  " SDS/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;SM/SD/4\R                  " S;/5      SMSD/4S\ " 5       4S\" S5      4/5      S 5       r~S 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_regressor)KMeans)PCA)InconsistentVersionWarning)
get_scorer)GridSearchCVKFold)Pipeline)LabelEncoder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      Y/var/www/html/dynamic-report/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)K2   Nc                     Xl         X l        g r$   cd)r(   r9   r:   s      r)   r*   
K.__init__3       r,   r8   NNr-   r3   r,   r)   r5   r5   2       r,   r5   c                       \ rS rSrSS jrSrg)T8   Nc                     Xl         X l        g r$   ab)r(   rD   rE   s      r)   r*   
T.__init__9   r<   r,   rC   r=   r-   r3   r,   r)   r@   r@   8   r>   r,   r@   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)   rM   NaNTag.__sklearn_tags__?   s!    w')$(!r,   r3   r.   r/   r0   r1   rM   r2   __classcell__rR   s   @r)   rH   rH   >        r,   rH   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )NoNaNTagE   c                 F   > [         TU ]  5       nSUR                  l        U$ NFrK   rP   s     r)   rM   NoNaNTag.__sklearn_tags__F   !    w')$)!r,   r3   rT   rV   s   @r)   rY   rY   E   rW   r,   rY   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )OverrideTagL   c                 F   > [         TU ]  5       nSUR                  l        U$ r\   rK   rP   s     r)   rM   OverrideTag.__sklearn_tags__M   r^   r,   r3   rT   rV   s   @r)   r`   r`   L   rW   r,   r`   c                       \ rS rSrSrg)DiamondOverwriteTagS   r3   Nr.   r/   r0   r1   r2   r3   r,   r)   re   re   S       r,   re   c                       \ rS rSrSrg)InheritDiamondOverwriteTagW   r3   Nrg   r3   r,   r)   rj   rj   W   rh   r,   rj   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$   )copyrD   r(   rD   s     r)   r*   ModifyInitParams.__init__a   s    r,   rD   N)	r.   r/   r0   r1   __doc__nparrayr*   r2   r3   r,   r)   rm   rm   [   s    
 1# r,   rm   c                   "    \ rS rSrSrSS jrSrg)Buggye   z9A buggy estimator that does not set its parameters right.Nc                     SU l         g N   rs   rq   s     r)   r*   Buggy.__init__h   s	    r,   rs   r$   r.   r/   r0   r1   rt   r*   r2   r3   r,   r)   rx   rx   e   s
    ?r,   rx   c                   .    \ rS rSrS rSS jrSS jrSrg)	NoEstimatorl   c                     g r$   r3   r(   s    r)   r*   NoEstimator.__init__m       r,   Nc                     U $ r$   r3   r(   Xys      r)   fitNoEstimator.fitp   s    r,   c                     g r$   r3   r(   r   s     r)   predictNoEstimator.predicts   s    r,   r3   r=   r$   )r.   r/   r0   r1   r*   r   r   r2   r3   r,   r)   r   r   l   s    r,   r   c                       \ rS rSrSrS rSrg)VargEstimatorw   z-scikit-learn estimators shouldn't have vargs.c                     g r$   r3   )r(   vargss     r)   r*   VargEstimator.__init__z   r   r,   r3   Nr~   r3   r,   r)   r   r   w   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_paramsru   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   )
rx   rD   pytestraisesRuntimeErrorr	   r   	TypeErrorr   rm   )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!   ru   rv   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!   ru   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 )NrD   )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getattrru   eyer!   r	   r'   rR   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 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  rs   i  )r!   reprr@   r5   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)	r@   r5   r   
set_paramsrD   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   /       	"o555r,   
n_clusters      kmkm_cvc                 &    [        U 5      U:X  d   eg r$   )r   r   s     r)   test_is_clustererr  @  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  Q  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>.TestDecisionTreeig  c                 8   > [         TU ]  " S0 UD6  UT:X  d   eU $ )Nr3   )rL   r   )r(   kwargsrR   expected_kwargss     r)   r   Jtest_set_params_passes_all_parameters.<locals>.TestDecisionTree.set_paramsh  s&    G((_,,,Kr,   r3   )r.   r/   r0   r1   r   r2   rU   )rR   r  s   @r)   TestDecisionTreer  g  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  c  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  v  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	   ru   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(   r0  r1  s      r)   r*   <test_clone_pandas_dataframe.<locals>.DummyEstimator.__init__  s    G ,r,   c                     g r$   r3   r   s      r)   r   7test_clone_pandas_dataframe.<locals>.DummyEstimator.fit      r,   c                     g r$   r3   r   s     r)   	transform=test_clone_pandas_dataframe.<locals>.DummyEstimator.transform  r5  r,   r/  r{   r$   )	r.   r/   r0   r1   rt   r*   r   r7  r2   r3   r,   r)   DummyEstimatorr-    s    		-		r,   r9  r   r|   )r1  )
r   r   ru   aranger   r	   r0  valuesallr1  )r9  r:   r0  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(   rE  s     r)   r*   5test_clone_protocol.<locals>.FrozenEstimator.__init__  s    $4!r,   c                 .    [        U R                  U5      $ r$   )r   rE  )r(   r   s     r)   __getattr__8test_clone_protocol.<locals>.FrozenEstimator.__getattr__  s    400$77r,   c                     U $ r$   r3   r   s    r)   __sklearn_clone__>test_clone_protocol.<locals>.FrozenEstimator.__sklearn_clone__      Kr,   c                     U $ r$   r3   r(   argsr  s      r)   r   0test_clone_protocol.<locals>.FrozenEstimator.fit  rM  r,   c                 :    U R                   R                  " U0 UD6$ r$   )rE  r7  rO  s      r)   fit_transform:test_clone_protocol.<locals>.FrozenEstimator.fit_transform  s    ((22DCFCCr,   rD  N)
r.   r/   r0   r1   r*   rH  rK  r   rS  r2   r3   r,   r)   FrozenEstimatorrB    s    	5	8			Dr,   rU  r   r     r|   N)r   ru   rv   r   r   components_r   r   get_feature_names_outasarrayrS  r	   )rU  r   pca
components
frozen_pcaX_newclone_frozen_pcas          r)   test_clone_protocolrb    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_versionrs    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,   r3   Nr.   r/   r0   r1   r|  r2   r3   r,   r)   ru  ru    s    Ir,   ru  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)Nru  rw  r   old_versioncurrent_versionr   r   )r   rf  ru  r   r   rg  rh  ri  pickle_error_messageformatsklearn__version__r   warnsUserWarningrm  listmessage
isinstancer   estimator_nameoriginal_sklearn_versioncurrent_sklearn_version)rn  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$   )rz  r   s    r)   r|  TreeNoVersion.__getstate__  s    }}r,   r3   Nr~  r3   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)Nrd  r  zpre-0.18r  r   )r   rf  r  r   r   rg  rh  ri  r  r  r  r  r   r  r  rm  )rn  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
notsklearnre  )r   rf  r  r   r   rg  rh  ri  r/   rj  rk  rl  rm  )rn  r%  r  module_backups       r)   Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimatorr  4  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)DontPickleAttributeMixiniE  c                 D    U R                   R                  5       nS US'   U$ N_attribute_not_pickled)rz  rp   )r(   r   s     r)   r|  %DontPickleAttributeMixin.__getstate__F  s$    }}!!#)-%&r,   c                 D    SUS'   U R                   R                  U5        g )NT	_restored)rz  update)r(   states     r)   __setstate__%DontPickleAttributeMixin.__setstate__K  s    !kU#r,   r3   N)r.   r/   r0   r1   r|  r  r2   r3   r,   r)   r  r  E  s    
$r,   r  c                       \ rS rSrSS jrSrg)MultiInheritanceEstimatoriP  c                     Xl         S U l        g r$   attribute_pickledr  r(   r  s     r)   r*   "MultiInheritanceEstimator.__init__Q      !2&*#r,   r  r  Nr   r-   r3   r,   r)   r  r  P  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  rh  ri  rm  r  r  r   
serializedestimator_restoreds      r)   3test_pickling_when_getstate_is_overwritten_by_mixinr  V  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  rY  r  )r  r  r   r/   r|  r  r  r  )r   textold_modr  s       r)   Ftest_pickling_when_getstate_is_overwritten_by_mixin_outside_of_sklearnr  a  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$ )SingleInheritanceEstimatorit  c                     Xl         S U l        g r$   r  r  s     r)   r*   #SingleInheritanceEstimator.__init__u  r  r,   c                 .   > [         TU ]  5       nS US'   U$ r  )rL   r|  )r(   r  rR   s     r)   r|  'SingleInheritanceEstimator.__getstate__y  s     $&*.&'r,   r  r  )r.   r/   r0   r1   r*   r|  r2   rU   rV   s   @r)   r  r  t  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  rh  ri  rm  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$   )rH   rY   rM   rN   rO   r`   re   rj   )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$   r3   r(   params     r)   r*   Etest_raises_on_get_params_non_attribute.<locals>.MyEstimator.__init__  r5  r,   Nc                     U $ r$   r3   r   s      r)   r   @test_raises_on_get_params_non_attribute.<locals>.MyEstimator.fit  rM  r,   r3   r  r$   )r.   r/   r0   r1   r*   r   r2   r3   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  )rY  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)   r7  8test_feature_names_in.<locals>.NoOpTransformer.transform  s    $/Hr,   r3   r$   r.   r/   r0   r1   r   r7  r2   r3   r,   r)   NoOpTransformerr    s    		r,   r  feature_names_in_z5The feature names should match those that were passedNrV  r   zVX does not have valid feature names, but NoOpTransformer was fitted with feature nameszIX has feature names, but NoOpTransformer was fitted without feature namesre  )rD   rE   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   rf  r   	DataFramefeature_namesr   r   r   r   r  r  r   r   r   r7  r  r  rj  rk  rl  reescaper   )pdrn  X_npr0  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>.NoOpTransformeri3  r3   Nrg   r3   r,   r)   r  r  3      r,   r  F)skip_check_arrayT)r   r  z*Validation should be done on X, y or both.r   N)r   r  r   rf  r  r   r  Seriesrg  r   r   r   r  ru   ndarrayr   to_numpyr   r   )r  rn  r0  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  )r7  r7  N)r   r   r   r	   )ssconfigss_cloneconfig_clones       r)   test_clone_keeps_output_configr  T  sG     
		$	$x	$	8BR0FRyH%k8<L!!!r,   c                       \ rS rSrSrg)_Emptyi_  r3   Nrg   r3   r,   r)   r  r  _  rh   r,   r  c                       \ rS rSrSrg)EmptyEstimatoric  r3   Nrg   r3   r,   r)   r!  r!  c  rh   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.
rx  N)r|  r  r  rh  rm  ri  r   )r   r  expecteds      r)   "test_estimator_empty_instance_dictr$  g  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>.WithSlotsiz  xr3   N)r.   r/   r0   r1   	__slots__r2   r3   r,   r)   	WithSlotsr'  z  s    	r,   r+  c                       \ rS rSrSrg)Dtest_estimator_getstate_using_slots_error_message.<locals>.Estimatori}  r3   Nrg   r3   r,   r)   	Estimatorr-  }  r  r,   r.  zRYou cannot use `__slots__` in objects inheriting from `sklearn.base.BaseEstimator`r   N)r   r   r   r   r|  rh  ri  )r+  r.  r   s      r)   1test_estimator_getstate_using_slots_error_messager/  w  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|   rY  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)   r7  :test_dataframe_protocol.<locals>.NoOpTransformer.transform  s     66r,   r3   r$   r  r3   r,   r)   r  r:    s    		7r,   r  r1  )rD   rE   r9   )r7  zThe feature names should matchr   N)r   r   r   r   r   r  r7  r   r   r   r   )
constructor_namer8  r   r  r0  r  r  X_out	bad_namesr  s
             r)   test_dataframe_protocolrB    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$   r3   r(   r   r   props       r)   r   Xtest_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.fit  rM  r,   c                     U$ r$   r3   r(   r   rI  s      r)   r7  ^test_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.transform      Hr,   r3   r=   r$   r  r3   r,   r)   CustomTransformerrF        		r,   rO  z*`transform` method which consumes metadatar   TrI  r|   Nrecordr   )
r   r   r   r  r  set_transform_requestrS  rj  rk  r   )rO  rS  s     r)   9test_transformer_fit_transform_with_metadata_in_transformrU    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$   r3   rH  s       r)   r   Ztest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.fit  rM  r,   c                     U$ r$   r3   rL  s      r)   r   ^test_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.predict  rN  r,   r3   r=   r$   )r.   r/   r0   r1   r   r   r2   r3   r,   r)   CustomOutlierDetectorrY    rP  r,   r^  z(`predict` method which consumes metadatar   TrQ  r|   NrR  r   )
r   r   r   r  r  set_predict_requestfit_predictrj  rk  r   )r^  rS  s     r)   7test_outlier_mixin_fit_predict_with_metadata_in_predictra    s    
|  
k)S	T333>JJSEA3Q 	K 	
 
U 
	 	 	-333>JJQC5STRUV6{a 
.	- 
U	T 
.	-rV  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_htmlre    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,   rj  Nr-   default_values   r)   DynamicEstimatorrh    s    !. 	r,   rn  )r   )rm  rn  s   ` r)   make_estimator_with_paramro    s    =  r,   zdefault_value, test_value)r3   )r|   r3   )r|   r   )r  rY  rp  rY  r{   c                     U $ r$   r3   r(  s    r)   <lambda>rr    s    r,         ?)abcdefrt  )TF)rs         @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
rj  r  Nro  rc  rd  rm  
test_valuer   rd  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   rl  rj  r  N)r   r  ro  NArc  rd  )r  r   rd  s      r)   (test_param_is_non_default_when_pandas_NAr     sI     
		X	&B):GI,,.::Kk!!!r,   r=   )r3   r3   )r  r  r  )rt  rt  )TT)r|   r|   )rs  rs  )r   rv  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
rj  r  Nry  rz  s       r)   test_param_is_defaultr  -  s5    2 *-8zJI,,.::K+%%%r,   )rh  r   rj  numpyru   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.utils._mockingr   sklearn.utils._set_outputr   sklearn.utils._testingr   r   sklearn.utils.validationr   r   r!   r5   r@   rH   rY   r`   re   rj   rm   rx   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?  rb  rs  ru  r  r  r  r  thread_unsafer  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r!  r$  r/  rB  rU  ra  re  ro  rv   r   r|  r  r  r3   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< 	aS		RXXqc]	!Q	1a&!"	r
	{		266(#$		
QC	
BHHaSM	se	bhhuo
Q!	1#A	uw	z*%&1:";:"
" 	R	RXXb\	I	BHHY'(	$	&%$	&r,   