
    Ugo                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlZd dlmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dl m!Z!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+  G d de          Z, G d de          Z- G d de          Z. G d de          Z/ G d de          Z0 G d de/          Z1 G d de/e0          Z2 G d de2          Z3 G d d e          Z4 G d! d"e          Z5 G d# d$          Z6 G d% d&e          Z7d' Z8d( Z9d) Z:d* Z;d+ Z<d, Z=d- Z>d. Z?d/ Z@d0 ZAd1 ZBd2 ZCd3 ZDd4 ZEd5 ZFd6 ZGejH        I                    d7 e!d8d 9           ejJ        d :          f e"d8d 9           ejK        d :          fg          d;             ZLd< ZMd= ZNd> ZO G d? d@e!          ZPdAZQdB ZR G dC dDe!          ZSdE ZTdF ZU G dG dH          ZV G dI dJeVe          ZWdK ZXdL ZY G dM dNe          ZZ e+e[O          dP             Z\dQ Z]dR Z^dS Z_dT Z`dU ZadV ZbdW ZcdX ZddY Ze G dZ d[          Zf G d\ d]efe          ZgejH        I                    d^ e             eg            g          d_             Zhd` ZiejH        I                    dag db          dc             ZjejH        k                    dd          de             ZlejH        k                    dd          df             ZmdS )g    N)assert_allclose)config_contextdatasets)BaseEstimatorOutlierMixinTransformerMixincloneis_classifier)PCA)InconsistentVersionWarning)GridSearchCV)Pipeline)StandardScaler)SVC)DecisionTreeClassifierDecisionTreeRegressor)MockDataFrame)_get_output_config)_convert_containerassert_array_equalassert_no_warningsignore_warningsc                       e Zd ZddZdS )MyEstimatorr   Nc                 "    || _         || _        d S N)l1empty)selfr   r   s      V/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/tests/test_base.py__init__zMyEstimator.__init__*   s    


    )r   N__name__
__module____qualname__r!    r"   r    r   r   )   s(             r"   r   c                       e Zd ZddZdS )KNc                 "    || _         || _        d S r   )cd)r   r+   r,   s      r    r!   z
K.__init__0       r"   NNr#   r'   r"   r    r)   r)   /   (             r"   r)   c                       e Zd ZddZdS )TNc                 "    || _         || _        d S r   )ab)r   r3   r4   s      r    r!   z
T.__init__6   r-   r"   r.   r#   r'   r"   r    r1   r1   5   r/   r"   r1   c                       e Zd Zd ZdS )NaNTagc                 
    ddiS )N	allow_nanTr'   r   s    r    
_more_tagszNaNTag._more_tags<   s    T""r"   Nr$   r%   r&   r:   r'   r"   r    r6   r6   ;   s#        # # # # #r"   r6   c                       e Zd Zd ZdS )NoNaNTagc                 
    ddiS Nr8   Fr'   r9   s    r    r:   zNoNaNTag._more_tagsA       U##r"   Nr;   r'   r"   r    r=   r=   @   #        $ $ $ $ $r"   r=   c                       e Zd Zd ZdS )OverrideTagc                 
    ddiS r?   r'   r9   s    r    r:   zOverrideTag._more_tagsF   r@   r"   Nr;   r'   r"   r    rC   rC   E   rA   r"   rC   c                       e Zd Zd ZdS )DiamondOverwriteTagc                     t                      S r   )dictr9   s    r    r:   zDiamondOverwriteTag._more_tagsK   s    vvr"   Nr;   r'   r"   r    rF   rF   J   s#            r"   rF   c                       e Zd ZdS )InheritDiamondOverwriteTagNr$   r%   r&   r'   r"   r    rJ   rJ   O           Dr"   rJ   c                   :    e Zd ZdZ ej        dg          fdZdS )ModifyInitParamsz_Deprecated behavior.
    Equal parameters but with a type cast.
    Doesn't fulfill a is a
    r   c                 8    |                                 | _        d S r   )copyr3   r   r3   s     r    r!   zModifyInitParams.__init__Y   s    r"   N)r$   r%   r&   __doc__nparrayr!   r'   r"   r    rN   rN   S   sC         
 "1#      r"   rN   c                       e Zd ZdZddZdS )Buggyz9A buggy estimator that does not set its parameters right.Nc                     d| _         d S N   r3   rQ   s     r    r!   zBuggy.__init__`   s    r"   r   r$   r%   r&   rR   r!   r'   r"   r    rV   rV   ]   s.        ??     r"   rV   c                   $    e Zd Zd ZddZddZdS )NoEstimatorc                     d S r   r'   r9   s    r    r!   zNoEstimator.__init__e       r"   Nc                     | S r   r'   r   Xys      r    fitzNoEstimator.fith   s    r"   c                     d S r   r'   r   rb   s     r    predictzNoEstimator.predictk   s    tr"   r.   r   )r$   r%   r&   r!   rd   rg   r'   r"   r    r]   r]   d   sK                  r"   r]   c                       e Zd ZdZd ZdS )VargEstimatorz-scikit-learn estimators shouldn't have vargs.c                     d S r   r'   )r   vargss     r    r!   zVargEstimator.__init__r   r_   r"   Nr[   r'   r"   r    ri   ri   o   s)        77    r"   ri   c                     ddl m} m}  | |d          }t          |          }||usJ |                                |                                k    sJ  | |t          j        d                    }t          |          }||usJ d S )Nr   	SelectFpr	f_classif皙?alpha)
      )sklearn.feature_selectionrn   ro   r	   
get_paramsrS   zerosrn   ro   selectornew_selectors       r    
test_cloner{   z   s     ?>>>>>>>y#...H??L<''''  L$;$;$=$=====y"(7*;*;<<<H??L<''''''r"   c                      ddl m} m}  | |d          }d|_        t	          |          }t          |d          rJ d S )Nr   rm   rp   rq   testown_attribute)ru   rn   ro   r~   r	   hasattrrx   s       r    test_clone_2r      s_     ?>>>>>>>y#...H#H??L|_5555555r"   c                     t                      } d| _        t          j        t                    5  t          |            d d d            n# 1 swxY w Y   t                      }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   t                      }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   t                      }t          j        t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nrt   )
rV   r3   pytestraisesRuntimeErrorr	   r]   	TypeErrorri   rN   )buggyno_estimatorvarg_estests       r    test_clone_buggyr      s   GGEEG	|	$	$  e               ==L	y	!	!  l               H	|	$	$  h               

C	|	$	$  c


                 sG   AAA=BB BC''C+.C+D66D:=D:c                  n   t          t          j        g                     } t          |           }t	          | j        |j                   t          t          j        t          j        dgg                              } t          |           }t	          | j        j        |j        j                   d S )Nr   r   )	r   rS   rT   r	   r   r   sp
csr_matrixdataclfclf2s     r    test_clone_empty_arrayr      s    
BHRLL
)
)
)C::Dsy$*---
BM"(QC5//::
;
;
;C::Dsy~tz77777r"   c                  x    t          t          j                  } t          |           }| j        |j        u sJ d S Nr   )r   rS   nanr	   r   r   s     r    test_clone_nanr      s:    
BF
#
#
#C::D9
""""""r"   c                  h    dt                      i} t          |           }| d         |d         usJ d S )Nr3   )r   r	   )origcloneds     r    test_clone_dictr      s:    D4[[F9F3K''''''r"   c                  z   fdt          t                    D             } | D ] t          j        d                    }t	          |          }t          |          }|j        j        |j        j        u sJ t          |j        	                                |j        	                                           d S )Nc                     g | ]D}|                     d           r-t          t          t          |          x          t          u BES )_matrix)endswithtypegetattrr   ).0nameclss     r    
<listcomp>z.test_clone_sparse_matrices.<locals>.<listcomp>   s[       ==## )-GB4E4E-ES(F(F$(N(N 	(N(N(Nr"      r   )
dirr   rS   eyer   r	   r   	__class__r   toarray)sparse_matrix_classessparse_matrixr   
clf_clonedr   s       @r    test_clone_sparse_matricesr      s       GG   % L LBF1II...3ZZ
y"j&6&@@@@@39,,..
0@0H0H0J0JKKKKL Lr"   c                  n    t          t                     } t          |           }| j        |j        u sJ d S r   )r   r	   r   r   s     r    test_clone_estimator_typesr      s:     K
(
(
(C::D9
""""""r"   c                      d} t          j        t          |           5  t          t                     d d d            d S # 1 swxY w Y   d S )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   A  AAc                  &   t                      } t          |            t          t                      t                                }t          |          dk    sJ t          dgdz            }t	          t          |                    dk    sJ d S )NzT(a=K(), b=K())long_paramsi  rZ   i  )r   reprr1   r)   len)my_estimatorr}   some_ests      r    	test_reprr      s    ==LQSS!##;;D::*****M?T)***HtH~~#%%%%%%r"   c                  @    t                      } t          |            d S r   )r   str)r   s    r    test_strr      s    ==Lr"   c                     t          t                      t                    } d|                     d          v sJ d|                     d          vsJ |                     d           | j        j        dk    sJ t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )Na__dT)deepFrt   )r   )a__a)	r1   r)   rv   
set_paramsr3   r,   r   r   
ValueError)r}   s    r    test_get_paramsr      s    QSS!99DT__$_//////e444444OOO68q====	z	"	"    Q                                   s   B;;B?B?c                  2   t                      } t          |           sJ t          t          | dddgi                    sJ t          t          d| fg                    sJ t          t          dt          | dddgi          fg                    sJ d S )NCrp   rY   svcsvc_cv)r   r
   r   r   )r   s    r    test_is_classifierr     s    
%%CcC#q?;;<<<<<E3<.1122222Hl3sAh.P.P#Q"RSSTTTTTTTr"   c                  `   t          dt                      fg          } t          j        t                    5  |                     d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )Nr   T)svc__stupid_param)svm__stupid_param)r   r   r   r   r   r   )r   s    r    test_set_paramsr     s   
UCEEN#
$
$C 
z	"	" / /.../ / / / / / / / / / / / / / / 
z	"	" / /.../ / / / / / / / / / / / / / / / / /s#   AA"A?B##B'*B'c                       G fddt                     } dddt          d |             fg          t           |             i           fD ]}|                    dd           d S )Nc                   "     e Zd Z fdZ xZS )?test_set_params_passes_all_parameters.<locals>.TestDecisionTreec                 J     t                      j        di | |k    sJ | S )Nr'   )superr   )r   kwargsr   expected_kwargss     r    r   zJtest_set_params_passes_all_parameters.<locals>.TestDecisionTree.set_params%  s6    EGG(((((_,,,,Kr"   )r$   r%   r&   r   __classcell__)r   r   s   @r    TestDecisionTreer   $  s>        	 	 	 	 	 	 	 	 	 	r"   r   r   rt   )	max_depthmin_samples_leaf	estimator)estimator__max_depthestimator__min_samples_leaf)r   r   r   r   )r   r   r   s     @r    %test_set_params_passes_all_parametersr      s          1    %&1==O; 0 0 2 23455%%'',, N N 	A1MMMM	N Nr"   c                      t          t                      i           } |                     t                      d           | j        j        dk    sJ d S )Ng      E@)r   estimator__C)r   r   r   r   r   r   )gscvs    r    $test_set_params_updates_valid_paramsr   3  sP     .00"55DOOcee$O777>t######r"   ztree,datasetrt   )r   random_state)r   c                 D   t           j                            d          }|\  }}|                     ||           |                    ddt          |                    }|                     ||          }|                     |||          }d}||k    s
J |            d S )Nr   rY   rs   )size)sample_weightz5Unweighted and weighted scores are unexpectedly equal)rS   randomRandomStaterd   randintr   score)	treedatasetrngrb   rc   r   score_unweightedscore_weightedr   s	            r    test_score_sample_weightr   ;  s     )


"
"CDAqHHQNNNKK2CFFK33Mzz!Q''ZZ1MZBBN
AC~---s-----r"   c                  ,    G d dt           t                    } t          j        d          }t	          |          } | |d          }t          |          }|j        |j        k    j                                        sJ |j	        |j	        k    sJ d S )Nc                   (    e Zd ZdZddZddZd ZdS )	3test_clone_pandas_dataframe.<locals>.DummyEstimatora,  This 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
        -----
        NrY   c                 "    || _         || _        d S r   )dfscalar_param)r   r   r   s      r    r!   z<test_clone_pandas_dataframe.<locals>.DummyEstimator.__init__g  s    DG ,Dr"   c                     d S r   r'   ra   s      r    rd   z7test_clone_pandas_dataframe.<locals>.DummyEstimator.fitk      Dr"   c                     d S r   r'   rf   s     r    	transformz=test_clone_pandas_dataframe.<locals>.DummyEstimator.transformn  r   r"   rX   r   )r$   r%   r&   rR   r!   rd   r   r'   r"   r    DummyEstimatorr   W  sU        	 		- 	- 	- 	-	 	 	 		 	 	 	 	r"   r   rs   rY   )r   )
r   r   rS   aranger   r	   r   valuesallr   )r   r,   r   ecloned_es        r    test_clone_pandas_dataframer  V  s        )=   6 		"A	q		Br***AQxxH DHK'++----->X2222222r"   c                      G d dt                     } t          j        ddgddgddgg          }t                                          |          }|j        } | |          }t          |j        |           t          |                                |                                           t          j	        ddgddgd	dgg          }|                    |           t          |j        |           |
                    |           t          |j        |           t          |          }||u sJ t          |j        |           d
S )z:Checks that clone works with `__sklearn_clone__` protocol.c                   ,    e Zd Zd Zd Zd Zd Zd ZdS ),test_clone_protocol.<locals>.FrozenEstimatorc                     || _         d S r   )fitted_estimator)r   r  s     r    r!   z5test_clone_protocol.<locals>.FrozenEstimator.__init__  s    $4D!!!r"   c                 ,    t          | j        |          S r   )r   r  )r   r   s     r    __getattr__z8test_clone_protocol.<locals>.FrozenEstimator.__getattr__  s    40$777r"   c                     | S r   r'   r9   s    r    __sklearn_clone__z>test_clone_protocol.<locals>.FrozenEstimator.__sklearn_clone__      Kr"   c                     | S r   r'   r   argsr   s      r    rd   z0test_clone_protocol.<locals>.FrozenEstimator.fit  r  r"   c                 &     | j         j        |i |S r   )r  r   r  s      r    fit_transformz:test_clone_protocol.<locals>.FrozenEstimator.fit_transform  s    24(2DCFCCCr"   N)r$   r%   r&   r!   r  r
  rd   r  r'   r"   r    FrozenEstimatorr    sd        	5 	5 	5	8 	8 	8	 	 		 	 		D 	D 	D 	D 	Dr"   r  rt         rY   N)r   rS   rT   r   rd   components_r   r   get_feature_names_outasarrayr  r	   )r  rb   pca
components
frozen_pcaX_newclone_frozen_pcas          r    test_clone_protocolr  |  sk   D D D D D- D D D  	2r(RHr2h/00A
%%))A,,CJ %%JJ*J777 z77993;T;T;V;VWWW JQ!Q!Q011ENN5J*J777 U###J*J777 Z((z))))$0*=====r"   c                  |   t          j                    } t                                          | j        | j                  }t          j        |          }d|v sJ t          t          j	        |          }|
                    | j        | j                  }|
                    | j        | j                  }||k    sJ d S )N   _sklearn_version)r   	load_irisr   rd   r   targetpickledumpsr   loadsr   )irisr   tree_pickletree_restoredscore_of_originalscore_of_restoreds         r    ?test_pickle_version_warning_is_not_raised_with_matching_versionr,    s    D!##''	4;??D,t$$K+----&v|[AAM 

49dk::%++DIt{CC 1111111r"   c                       e Zd Zd ZdS )TreeBadVersionc                 R    t          | j                                        d          S )N	something)_sklearn_version)rH   __dict__itemsr9   s    r    __getstate__zTreeBadVersion.__getstate__  s#    DM''))KHHHHr"   Nr$   r%   r&   r4  r'   r"   r    r.  r.    s(        I I I I Ir"   r.  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                  <   t          j                    } t                                          | j        | j                  }t          j        |          }t          	                    ddt          j                  }t          j        t          |          5 }t          j        |           d d d            n# 1 swxY w Y   |j        d         j        }t%          |t&                    sJ |j        dk    sJ |j        dk    sJ |j        t          j        k    sJ d S )Nr.  r0  r   old_versioncurrent_versionr   r   )r   r"  r.  rd   r   r#  r$  r%  pickle_error_messageformatsklearn__version__r   warnsUserWarningr&  listmessage
isinstancer   estimator_nameoriginal_sklearn_versioncurrent_sklearn_version)r'  r   tree_pickle_otherrA  warning_records        r    <test_pickle_version_warning_is_issued_upon_different_versionrH    sN   D	4;77DT**"))"+ *  G
 
k	1	1	1 (^&'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( !!$,Gg9:::::!%55555+{::::*g.AAAAAAAs   B77B;>B;c                       e Zd Zd ZdS )TreeNoVersionc                     | j         S r   )r2  r9   s    r    r4  zTreeNoVersion.__getstate__  s
    }r"   Nr5  r'   r"   r    rJ  rJ    s#            r"   rJ  c                     t          j                    } t                                          | j        | j                  }t          j        |          }d|vsJ t          	                    ddt          j                  }t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr!  rJ  zpre-0.18r7  r   )r   r"  rJ  rd   r   r#  r$  r%  r:  r;  r<  r=  r   r>  r?  r&  )r'  r   tree_pickle_noversionrA  s       r    Dtest_pickle_version_warning_is_issued_when_no_version_info_in_picklerN    s   D??ty$+66D"L..&;;;;;"))!+ *  G 
k	1	1	1 , ,*+++, , , , , , , , , , , , , , , , , ,s   B>>CCc                  L   t          j                    } t                                          | j        | j                  }t          j        |          }	 t          j        }dt          _        t          t          j
        |           |t          _        d S # |t          _        w xY w)N
notsklearn)r   r"  rJ  rd   r   r#  r$  r%  r%   r   r&  )r'  r   rM  module_backups       r    Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimatorrR    s    D??ty$+66D"L..1%0#/ 6<)>???#0   = 0000s   2B B#c                       e Zd Zd Zd ZdS )DontPickleAttributeMixinc                 B    | j                                         }d |d<   |S N_attribute_not_pickledr2  rP   r   r   s     r    r4  z%DontPickleAttributeMixin.__getstate__  %    }!!##)-%&r"   c                 D    d|d<   | j                             |           d S )NT	_restored)r2  update)r   states     r    __setstate__z%DontPickleAttributeMixin.__setstate__  s(    !kU#####r"   N)r$   r%   r&   r4  r_  r'   r"   r    rT  rT    s2          
$ $ $ $ $r"   rT  c                       e Zd ZddZdS )MultiInheritanceEstimatorr   c                 "    || _         d | _        d S r   attribute_pickledrW  r   rd  s     r    r!   z"MultiInheritanceEstimator.__init__      !2&*###r"   Nr   r#   r'   r"   r    ra  ra    s(        + + + + + +r"   ra  c                      t                      } d| _        t          j        |           }t          j        |          }|j        dk    sJ |j        J |j        sJ d S N$this attribute should not be pickledr   )ra  rW  r$  r%  r&  rd  r\  r   
serializedestimator_restoreds      r    3test_pickling_when_getstate_is_overwritten_by_mixinrn  	  sl    )++I'MI$i((Jj11/144444<<<''''''r"   c                     	 t                      } d}|| _        t          |           j        }dt          |           _        |                                 }|d ddk    sJ d|d<   |                     |           | j        dk    sJ | j        sJ 	 |t          |           _        d S # |t          |           _        w xY w)Nrj  rP  r   )rW  rd  r  rd  )ra  rW  r   r%   r4  r_  rd  r\  )r   textold_modrl  s       r    Ftest_pickling_when_getstate_is_overwritten_by_mixin_outside_of_sklearnrr    s    --//	5+/	(y//,%1Y"++--
STUUUUUU*+
&'z****a////"""""%,Y"""WY",,,,s   BB' 'B=c                       e Zd ZddZd ZdS )SingleInheritanceEstimatorr   c                 "    || _         d | _        d S r   rc  re  s     r    r!   z#SingleInheritanceEstimator.__init__(  rf  r"   c                 B    | j                                         }d |d<   |S rV  rX  rY  s     r    r4  z'SingleInheritanceEstimator.__getstate__,  rZ  r"   Nrg  )r$   r%   r&   r!   r4  r'   r"   r    rt  rt  '  s7        + + + +    r"   rt  )categoryc                      t                      } d| _        t          j        |           }t          j        |          }|j        dk    sJ |j        J d S ri  )rt  rW  r$  r%  r&  rd  rk  s      r    Ctest_pickling_works_when_getstate_is_overwritten_in_the_child_classry  2  s]    *,,I'MI$i((Jj11/144444<<<<<r"   c                     t                      } t                      }|                                 d         sJ |                                d         rJ t                      }|                                d         rJ t	                      }|                                d         sJ t                      }|                                d         sJ d S )Nr8   )r6   r=   	_get_tagsrC   rF   rJ   )nan_tag_estno_nan_tag_estredefine_tags_estdiamond_tag_estinherit_diamond_tag_ests        r    test_tag_inheritancer  =  s     ((KZZN  "";////''))+6666# **,,[9999)++O$$&&{33338::",,..{;;;;;;r"   c                       G d dt                     }  |             }d}t          j        t          |          5  |                                 d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZddZddZdS )<test_raises_on_get_params_non_attribute.<locals>.MyEstimatorr   c                     d S r   r'   )r   params     r    r!   zEtest_raises_on_get_params_non_attribute.<locals>.MyEstimator.__init__Q  r   r"   Nc                     | S r   r'   ra   s      r    rd   z@test_raises_on_get_params_non_attribute.<locals>.MyEstimator.fitT  r  r"   rg  r   )r$   r%   r&   r!   rd   r'   r"   r    r   r  P  s<        	 	 	 		 	 	 	 	 	r"   r   z-'MyEstimator' object has no attribute 'param'r   )r   r   r   AttributeErrorrv   )r   r   r   s      r    'test_raises_on_get_params_non_attributer  O  s        m    +--C
9C	~S	1	1	1                   s   AA!$A!c                      t                      } |                                 }d|v sJ d|v sJ t          d          5  |                                 }d|v sJ d|vsJ 	 d d d            d S # 1 swxY w Y   d S )Nz
text/plainz	text/htmlrp  display)r   _repr_mimebundle_r   )r   outputs     r    test_repr_mimebundle_r  ^  s    !##D##%%F6!!!!&    		'	'	' ) )''))v%%%%&((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   !A..A25A2c                  :   t                      } |                                 }d|v sJ t          d          5  d}t          j        t
          |          5  |                                 }d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz<style>rp  r  z _repr_html_ is only defined whenr   )r   _repr_html_r   r   r   r  )r   r  r   s      r    test_repr_html_wrapsr  k  s$   !##DF		'	'	' ( (0]>555 	( 	(%%''F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s5   BA8,B8A<	<B?A<	 BBBc                     t                      } g dg dg}|                     |d           | j        dk    sJ d}t          j        t
          |          5  |                     dd	           d
d
d
           d
S # 1 swxY w Y   d
S )z>Check that `_check_n_features` validates data when reset=False)rY   rt   r  )r  r      Tresetr  zHX does not contain any features, but MyEstimator is expecting 3 featuresr   	invalid XFN)r   _check_n_featuresn_features_in_r   r   r   )r   X_trainr   s      r    test_n_features_in_validationr  x  s    
--Cyy)))$G'...""""
TC	z	-	-	- 8 8k7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   A==BBc                      t                      } |                     dd           t          | d          rJ |                     dd           dS )z]Check 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    s^     --C+T222s,----- +U33333r"   c                  :   t          j        d          } t          j                    }|j        }|                     ||j                  } G d dt          t                    } |            	                    |          }t          |j        |j                   |	                    |           t          |d          rJ |	                    |           d}|                     ||j        ddd                   }t          j        t          |	          5  |                    |           ddd           n# 1 swxY w Y   d
}t          j        t$          |	          5  |                    |           ddd           n# 1 swxY w Y   d} |            	                    |          }t          j        t$          |	          5  |                    |           ddd           n# 1 swxY w Y   |                     |          } |            }t'          j                    5  t'          j        dt$                     |	                    |           ddd           n# 1 swxY w Y   ||g}	|	D ]\}
t'          j                    5  t'          j        dt$                     |                    |
           ddd           n# 1 swxY w Y   ]|                     |g d          } |            }t-          j        d          }t          j        t0          |	          5  |	                    |           ddd           n# 1 swxY w Y   t          j        t0          |	          5  |                    |           ddd           dS # 1 swxY w Y   dS )z;Check that feature_name_in are recorded by `_validate_data`pandascolumnsc                       e Zd ZddZd ZdS ).test_feature_names_in.<locals>.NoOpTransformerNc                 0    |                      |           | S r   _validate_datara   s      r    rd   z2test_feature_names_in.<locals>.NoOpTransformer.fit      """Kr"   c                 4    |                      |d           |S NFr  r  rf   s     r    r   z8test_feature_names_in.<locals>.NoOpTransformer.transform  s     ///Hr"   r   r$   r%   r&   rd   r   r'   r"   r    NoOpTransformerr    s7        	 	 	 		 	 	 	 	r"   r  feature_names_in_z5The feature names should match those that were passedNr  r   zVX does not have valid feature names, but NoOpTransformer was fitted with feature nameszIX has feature names, but NoOpTransformer was fitted without feature nameserror)r3   r4   rY   rt   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   r"  r   	DataFramefeature_namesr   r   rd   r   r  r  r   r   r   r   r>  r?  warningscatch_warningssimplefilterreescaper   )pdr'  X_npr   r  transr   df_baddf_int_namesXsrb   df_mixeds               r    test_feature_names_inr    s:   		X	&	&BD9D	dD$6	7	7B    *M    O!!"%%Eu.
;;; 
IIdOOOu122222	IIbMMM
AC\\$(:44R4(@\AAF	z	-	-	-                                 
	$  
k	-	-	-                 VCO!!$''E	k	-	-	-                 <<%%LOE		 	"	"    g{333		,                              	B  $&& 	 	!';777OOA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ||D*:*:*:|;;HOE
)	? C 
y	,	,	,  		(               
y	,	,	, " "!!!" " " " " " " " " " " " " " " " " "s~   D;;D?D?#FF	F	
G,,G03G0)0I%%I),I)0KK	K	%MMM-NNNc                     t          j        d          } t          j                    }|                     |j        |j                  }|                     |j                  } G d dt          t                    } |            }|                    |d          }t          |t          j                  sJ t          ||                                           |                    |d          }||u sJ |                    |d          }t          |t          j                  sJ t          ||                                           |                    |d          }	|	|u sJ |                    ||d          \  }}t          |t          j                  sJ t          ||                                           t          |t          j                  sJ t          ||                                           |                    ||d          \  }}	||u sJ |	|u sJ d	}
t          j        t$          |

          5  |                                 ddd           dS # 1 swxY w Y   dS )z/Check cast_to_ndarray option of _validate_data.r  r  c                       e Zd ZdS );test_validate_data_cast_to_ndarray.<locals>.NoOpTransformerNrK   r'   r"   r    r  r            r"   r  T)cast_to_ndarrayF)rc   r  z*Validation should be done on X, y or both.r   N)r   r  r   r"  r  r   r  Seriesr#  r   r   r  rB  rS   ndarrayr   to_numpyr   r   )r  r'  r   rc   r  no_opX_np_outX_df_outy_np_outy_series_outr   s              r    "test_validate_data_cast_to_ndarrayr    s    
	X	&	&BD	di);	<	<B
		$+A    *M    OE##B#==Hh
+++++Hbkkmm,,,##B#>>Hr>>>>##a#>>Hh
+++++Hajjll+++''!U'CCL1--b!T-JJHhh
+++++Hbkkmm,,,h
+++++Hajjll+++"11"a1OOHlr>>>>1
6C	z	-	-	-                   s   I''I+.I+c                      t                                          d          } t          d|           }t          |           }t          d|          }||k    sJ dS )z-Check that clone keeps the set_output config.r  )r   r   N)r   
set_outputr   r	   )ssconfigss_cloneconfig_clones       r    test_clone_keeps_output_configr    s`     
			$	$x	$	8	8BR00FRyyH%k8<<L\!!!!!!r"   c                       e Zd ZdS )_EmptyNrK   r'   r"   r    r  r    rL   r"   r  c                       e Zd ZdS )EmptyEstimatorNrK   r'   r"   r    r  r    rL   r"   r  r   c                     |                                  }dt          j        i}||k    sJ t          j        t          j        t                                           dS )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.
    r1  N)r4  r<  r=  r$  r&  r%  r   )r   r^  expecteds      r    "test_estimator_empty_instance_dictr    sY     ""$$E"G$78HH Lmoo../////r"   c                      G d d          }  G d dt           |           }d}t          j        t          |          5   |                                             ddd           n# 1 swxY w Y   t          j        t          |          5  t          j         |                       ddd           dS # 1 swxY w Y   dS )z:Using a `BaseEstimator` with `__slots__` is not supported.c                       e Zd ZdZdS )Dtest_estimator_getstate_using_slots_error_message.<locals>.WithSlots)xN)r$   r%   r&   	__slots__r'   r"   r    	WithSlotsr  .  s        			r"   r  c                       e Zd ZdS )Dtest_estimator_getstate_using_slots_error_message.<locals>.EstimatorNrK   r'   r"   r    	Estimatorr  1  r  r"   r  zRYou cannot use `__slots__` in objects inheriting from `sklearn.base.BaseEstimator`r   N)r   r   r   r   r4  r$  r%  )r  r  r   s      r    1test_estimator_getstate_using_slots_error_messager  +  su              M9   	' 
 
y	,	,	, # #	  """# # # # # # # # # # # # # # # 
y	,	,	, " "YY[[!!!" " " " " " " " " " " " " " " " " "s#   A((A,/A,B88B<?B<zconstructor_name, minversion))	dataframez1.5.0)pyarrowz12.0.0)polarsz0.20.23c                    g dg dg}g d}t          || ||          } G d dt          t                    } |            }|                    |           t	          |j        |           |                    |          }| dk    rt          ||           g d}t          || |	          }	t          j	        t          d
          5  |                    |	           ddd           dS # 1 swxY w Y   dS )z:Uses the dataframe exchange protocol to get feature names.)rY   r  rt   )r  r  r  )col_0col_1col_2)columns_name
minversionc                       e Zd ZddZd ZdS )0test_dataframe_protocol.<locals>.NoOpTransformerNc                 0    |                      |           | S r   r  ra   s      r    rd   z4test_dataframe_protocol.<locals>.NoOpTransformer.fitQ  r  r"   c                 0    |                      |d          S r  r  rf   s     r    r   z:test_dataframe_protocol.<locals>.NoOpTransformer.transformU  s    &&q&666r"   r   r  r'   r"   r    r  r  P  s7        	 	 	 		7 	7 	7 	7 	7r"   r  r  )r3   r4   r+   )r  zThe feature names should matchr   N)r   r   r   rd   r   r  r   r   r   r   r   )
constructor_namer  r   r  r   r  r  X_out	bad_namesr  s
             r    test_dataframe_protocolr  @  su    IIyyy!D)))G	W
 
 
B7 7 7 7 7*M 7 7 7 OE	IIbMMMu.888OOBE9$$ 	E"""I&6YOOOF	z)I	J	J	J                                       s   	C,,C03C0enable_slep006c                      G d dt           t                    } t          j        t          d          5   |                                 d                              dggdgd           ddd           n# 1 swxY w Y   t          j        d	          5 } |                                 d                              dggdg           t          |          d
k    sJ 	 ddd           dS # 1 swxY w Y   dS )zkTest that having a transformer with metadata for transform raises a
    warning when calling fit_transform.c                       e Zd ZddZddZdS )Ttest_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformerNc                     | S r   r'   r   rb   rc   props       r    rd   zXtest_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.fitn  r  r"   c                     |S r   r'   r   rb   r  s      r    r   z^test_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.transformq      Hr"   r.   r   r  r'   r"   r    CustomTransformerr  m  <        	 	 	 		 	 	 	 	 	r"   r  z*`transform` method which consumes metadatar   Tr  rY   Nrecordr   )
r   r   r   r>  r?  set_transform_requestr  r  r  r   )r  r  s     r    9test_transformer_fit_transform_with_metadata_in_transformr  h  s   
    M+;    
k)U	V	V	V 
 
11t1<<JJSEA3Q 	K 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	 	-	-	-  11t1<<JJQC5STRUVVV6{{a                                   $   8A99A= A=AC22C69C6c                      G d dt           t                    } t          j        t          d          5   |                                 d                              dggdgd           ddd           n# 1 swxY w Y   t          j        d	          5 } |                                 d                              dggdg           t          |          d
k    sJ 	 ddd           dS # 1 swxY w Y   dS )ziTest that having an OutlierMixin with metadata for predict raises a
    warning when calling fit_predict.c                       e Zd ZddZddZdS )Vtest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetectorNc                     | S r   r'   r  s       r    rd   zZtest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.fit  r  r"   c                     |S r   r'   r  s      r    rg   z^test_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.predict  r  r"   r.   r   )r$   r%   r&   rd   rg   r'   r"   r    CustomOutlierDetectorr	    r   r"   r  z(`predict` method which consumes metadatar   Tr  rY   Nr  r   )
r   r   r   r>  r?  set_predict_requestfit_predictr  r  r   )r  r  s     r    7test_outlier_mixin_fit_predict_with_metadata_in_predictr    s   
    |    
k)S	T	T	T 
 
333>>JJSEA3Q 	K 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	 	-	-	-  333>>JJQC5STRUVVV6{{a                                   r  )nr$  r  r  numpyrS   r   scipy.sparsesparser   numpy.testingr   r<  r   r   sklearn.baser   r   r   r	   r
   sklearn.decompositionr   sklearn.exceptionsr   sklearn.model_selectionr   sklearn.pipeliner   sklearn.preprocessingr   sklearn.svmr   sklearn.treer   r   sklearn.utils._mockingr   sklearn.utils._set_outputr   sklearn.utils._testingr   r   r   r   r   r)   r1   r6   r=   rC   rF   rJ   rN   rV   r]   ri   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizemake_classificationmake_regressionr   r  r  r,  r.  r:  rH  rJ  rN  rR  rT  ra  rn  rr  rt  r?  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  usefixturesr  r  r'   r"   r    <module>r$     s    				             ) ) ) ) ) )  , , , , , , , ,              & % % % % % 9 9 9 9 9 9 0 0 0 0 0 0 % % % % % % 0 0 0 0 0 0       F F F F F F F F 0 0 0 0 0 0 8 8 8 8 8 8               -                 # # # # #] # # #
$ $ $ $ $} $ $ $
$ $ $ $ $& $ $ $
    &(   
	 	 	 	 	!4 	 	 	    }       M              M   ( ( ($6 6 6  (8 8 8# # #( ( (L L L# # #  & & &  
  
  
 U U U
/ 
/ 
/$N N N&$ $ $  #"QQ???(H(a888	

 "!AA>>>$H$!444	
	 3 3 3#3 #3 #3L)> )> )>X
2 
2 
2I I I I I+ I I I B B B&    *   
, , ,"	1 	1 	1$ $ $ $ $ $ $ $+ + + + + 8- + + +( ( (- - -&        ;(((= = )(=< < <$  
) 
) 
)
( 
( 
(
8 
8 
8	4 	4 	4K" K" K"\& & &R" " "	 	 	 	 	 	 	 		 	 	 	 	V] 	 	 	 }}8H8H&IJJ0 0 KJ0" " "* "        @ )**    +* 2 )**    +*     r"   