o
    \i                     @   s  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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"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z)m*Z* d dl+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6m7Z7 G dd deZ8G dd deZ9G dd deZ:G dd deZ;G dd deZ<G dd de;Z=G dd  d e;e<Z>G d!d" d"e>Z?G d#d$ d$eZ@G d%d& d&eZAG d'd( d(ZBG d)d* d*eZCd+d, ZDd-d. ZEd/d0 ZFd1d2 ZGd3d4 ZHd5d6 ZId7d8 ZJd9d: ZKd;d< ZLd=d> ZMd?d@ ZNdAdB ZOdCdD ZPejQRdEe) dFfe"e) dGdHdIgidFfe%dJe) fgdFfe%dKe"e) dGdHdIgifgdFfe* dLfe"e* dGdHdIgidLfe%dMe* fgdLfe%dNe"e* dGdHdIgifgdLfgdOdP ZSejQRdEe* dFfe"e* dGdHdIgidFfe%dMe* fgdFfe%dNe"e* dGdHdIgifgdFfe) dLfe"e) dGdHdIgidLfe%dJe) fgdLfe%dKe"e) dGdHdIgifgdLfgdQdR ZTejQRdEe dFfe"e dSdTdUgidFfe%dVe fgdFfe%dWe"e dSdTdUgifgdFfe) dLfe"e) dGdHdIgidLfe%dJe) fgdLfe%dKe"e) dGdHdIgifgdLfgdXdY ZUdZd[ ZVd\d] ZWd^d_ ZXejQRd`e,dad dbejYd dcfe-dad dbejZd dcfgddde Z[dfdg Z\dhdi Z]djdk Z^G dldm dme,Z_dnZ`dodp ZaG dqdr dre,Zbdsdt Zcdudv ZdG dwdx dxZeG dydz dzeeeZfd{d| Zgd}d~ ZhG dd deZidd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqdd Zrdd ZsG dd dZtG dd deteZuejQRde eu gdd Zvdd ZwejQRdg ddd ZxedFddd ZyedFddd Zzdd Z{dd Z|ejQRddddIgfde}dIgfdddTdgfde}dTdgfddg fddd fej~dfej~e}ej~gfdddgfdddIdIgfdIe}dIgfdddgfde}dgfdIdagdTgfe}dIgdadTgfde# fde dfgdd ZejQRddddg fde}g fddg dfde}g dfej~ej~fdddddgddƄ ZdS )    N)assert_allclose)config_contextdatasets)BaseEstimatorOutlierMixinTransformerMixincloneis_classifieris_clustereris_outlier_detectoris_regressor)KMeans)PCA)IsolationForest)InconsistentVersionWarning)
get_scorer)GridSearchCVKFold)Pipeline)StandardScaler)SVCSVR)DecisionTreeClassifierDecisionTreeRegressor)MockDataFrame)_get_output_config)_convert_containerassert_array_equal)_check_n_featuresvalidate_datac                   @   s   e Zd ZdddZdS )MyEstimatorr   Nc                 C      || _ || _d S Nl1empty)selfr$   r%    r'   x/var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/tests/test_base.py__init__/      
zMyEstimator.__init__)r   N__name__
__module____qualname__r)   r'   r'   r'   r(   r    .       r    c                   @      e Zd ZdddZdS )KNc                 C   r!   r"   )cd)r&   r2   r3   r'   r'   r(   r)   5   r*   z
K.__init__NNr+   r'   r'   r'   r(   r1   4   r/   r1   c                   @   r0   )TNc                 C   r!   r"   )ab)r&   r6   r7   r'   r'   r(   r)   ;   r*   z
T.__init__r4   r+   r'   r'   r'   r(   r5   :   r/   r5   c                          e Zd Z fddZ  ZS )NaNTagc                       t   }d|j_|S )NTsuper__sklearn_tags__
input_tags	allow_nanr&   tags	__class__r'   r(   r=   A      
zNaNTag.__sklearn_tags__r,   r-   r.   r=   __classcell__r'   r'   rB   r(   r9   @       r9   c                       r8   )NoNaNTagc                    r:   NFr;   r@   rB   r'   r(   r=   H   rD   zNoNaNTag.__sklearn_tags__rE   r'   r'   rB   r(   rH   G   rG   rH   c                       r8   )OverrideTagc                    r:   rI   r;   r@   rB   r'   r(   r=   O   rD   zOverrideTag.__sklearn_tags__rE   r'   r'   rB   r(   rJ   N   rG   rJ   c                   @      e Zd ZdS )DiamondOverwriteTagNr,   r-   r.   r'   r'   r'   r(   rL   U       rL   c                   @   rK   )InheritDiamondOverwriteTagNrM   r'   r'   r'   r(   rO   Y   rN   rO   c                   @   s$   e Zd ZdZedgfddZdS )ModifyInitParamsz_Deprecated behavior.
    Equal parameters but with a type cast.
    Doesn't fulfill a is a
    r   c                 C   s   |  | _d S r"   )copyr6   r&   r6   r'   r'   r(   r)   c      zModifyInitParams.__init__N)r,   r-   r.   __doc__nparrayr)   r'   r'   r'   r(   rP   ]   s    rP   c                   @   s   e Zd ZdZdddZdS )Buggyz9A buggy estimator that does not set its parameters right.Nc                 C   s
   d| _ d S N   r6   rR   r'   r'   r(   r)   j      
zBuggy.__init__r"   r,   r-   r.   rT   r)   r'   r'   r'   r(   rW   g   s    rW   c                   @   s(   e Zd Zdd ZdddZd	ddZdS )
NoEstimatorc                 C      d S r"   r'   r&   r'   r'   r(   r)   o      zNoEstimator.__init__Nc                 C      | S r"   r'   r&   Xyr'   r'   r(   fitr   r`   zNoEstimator.fitc                 C   r^   r"   r'   r&   rc   r'   r'   r(   predictu   r`   zNoEstimator.predictr4   r"   )r,   r-   r.   r)   re   rg   r'   r'   r'   r(   r]   n   s    
r]   c                   @   s   e Zd ZdZdd ZdS )VargEstimatorz-scikit-learn estimators shouldn't have vargs.c                 G   r^   r"   r'   )r&   vargsr'   r'   r(   r)   |   r`   zVargEstimator.__init__Nr\   r'   r'   r'   r(   rh   y   s    rh   c                  C   sn   ddl m} m} | |dd}t|}||usJ | | ks"J | |tdd}t|}||us5J d S )Nr   	SelectFpr	f_classif皙?alpha)
      )sklearn.feature_selectionrk   rl   r   
get_paramsrU   zerosrk   rl   selectornew_selectorr'   r'   r(   
test_clone   s   rx   c                  C   s<   ddl m} m} | |dd}d|_t|}t|drJ d S )Nr   rj   rm   rn   testown_attribute)rr   rk   rl   rz   r   hasattrru   r'   r'   r(   test_clone_2   s
   r|   c                  C   s   t  } d| _tt t|  W d    n1 sw   Y  t }tt t| W d    n1 s6w   Y  t }tt t| W d    n1 sRw   Y  t	 }tt t| W d    d S 1 sow   Y  d S )Nrq   )
rW   r6   pytestraisesRuntimeErrorr   r]   	TypeErrorrh   rP   )buggyno_estimatorvarg_estestr'   r'   r(   test_clone_buggy   s"   



"r   c                  C   s^   t tg d} t| }t| j|j t ttdggd} t| }t| jj|jj d S )Nr%   r   )	r    rU   rV   r   r   r%   sp
csr_matrixdataclfclf2r'   r'   r(   test_clone_empty_array   s   r   c                  C   s(   t tjd} t| }| j|ju sJ d S Nr   )r    rU   nanr   r%   r   r'   r'   r(   test_clone_nan   s   r   c                  C   s*   dt  i} t| }| d |d usJ d S )Nr6   )r    r   )origclonedr'   r'   r(   test_clone_dict   s   
r   c                     sn    fddt tD } | D ]'  td}t|d}t|}|jj|jju s)J t|j	 |j	  qd S )Nc                    s0   g | ]}| d rttt|  tu r qS )_matrix)endswithtypegetattrr   ).0nameclsr'   r(   
<listcomp>   s    z.test_clone_sparse_matrices.<locals>.<listcomp>   r   )
dirr   rU   eyer    r   r%   rC   r   toarray)sparse_matrix_classessparse_matrixr   
clf_clonedr'   r   r(   test_clone_sparse_matrices   s   

r   c                  C   s&   t t d} t| }| j|ju sJ d S r   )r    r   r%   r   r'   r'   r(   test_clone_estimator_types   s   
r   c                  C   s@   d} t jt| d tt W d    d S 1 sw   Y  d S )Nz8You should provide an instance of scikit-learn estimatormatch)r}   r~   r   r   r    )msgr'   r'   r(   %test_clone_class_rather_than_instance   s   
"r   c                  C   sT   t  } t|  tt t }t|dksJ tdgd d}tt|dks(J d S )NzT(a=K(), b=K())long_paramsi  rZ   i  )r    reprr5   r1   len)my_estimatorry   some_estr'   r'   r(   	test_repr   s   r   c                  C   s   t  } t|  d S r"   )r    str)r   r'   r'   r(   test_str   s   r   c                  C   s   t t t} d| jddv sJ d| jddvsJ | jdd | jjdks(J tt | jdd W d    d S 1 s?w   Y  d S )Na__dT)deepFrq   )r   )a__a)	r5   r1   rs   
set_paramsr6   r3   r}   r~   
ValueError)ry   r'   r'   r(   test_get_params  s   "r   c                   C   s   t jtdd ttsJ W d    n1 sw   Y  t jtdd tts+J W d    n1 s5w   Y  t jtdd ttsHJ W d    n1 sRw   Y  t jtdd t	t
seJ W d    d S 1 spw   Y  d S )Nz!passing a class to.*is deprecatedr   )r}   warnsFutureWarningr	   r   r   r   r
   r   r   r   r'   r'   r'   r(   test_is_estimator_type_class  s   "r   zestimator, expected_resultTCrm   rY   svcsvc_cvFsvrsvr_cvc                 C      t | |ksJ d S r"   )r	   	estimatorexpected_resultr'   r'   r(   test_is_classifier     r   c                 C   r   r"   )r   r   r'   r'   r(   test_is_regressor0  r   r   
n_clusters      kmkm_cvc                 C   r   r"   )r
   r   r'   r'   r(   test_is_clustererA  r   r   c                  C   s   t dt fg} tt | jdd W d    n1 sw   Y  tt | jdd W d    d S 1 s:w   Y  d S )Nr   T)svc__stupid_param)svm__stupid_param)r   r   r}   r~   r   r   )r   r'   r'   r(   test_set_paramsR  s   "r   c                     sR   G  fdddt } ddd td|  fgt|  i fD ]	}|jddd qd S )Nc                       s   e Zd Z fddZ  ZS )z?test_set_params_passes_all_parameters.<locals>.TestDecisionTreec                    s"   t  jdi | |ksJ | S )Nr'   )r<   r   )r&   kwargs)rC   expected_kwargsr'   r(   r   i  s   zJtest_set_params_passes_all_parameters.<locals>.TestDecisionTree.set_params)r,   r-   r.   r   rF   r'   r   rB   r(   TestDecisionTreeh  s    r   r   rq   )	max_depthmin_samples_leafr   )estimator__max_depthestimator__min_samples_leaf)r   r   r   r   )r   r   r'   r   r(   %test_set_params_passes_all_parametersd  s   

r   c                  C   s0   t t i } | jt dd | jjdksJ d S )Ng      E@)r   estimator__C)r   r   r   r   r   r   )gscvr'   r'   r(   $test_set_params_updates_valid_paramsw  s   r   ztree,datasetrq   )r   random_state)r   c           	      C   sh   t jd}|\}}| || |jddt|d}| ||}| j|||d}d}||ks2J |d S )Nr   rY   rp   )size)sample_weightz5Unweighted and weighted scores are unexpectedly equal)rU   randomRandomStatere   randintr   score)	treedatasetrngrc   rd   r   score_unweightedscore_weightedr   r'   r'   r(   test_score_sample_weight  s   r   c                  C   sb   G dd dt t} td}t|}| |dd}t|}|j|jkj s'J |j	|j	ks/J d S )Nc                   @   s,   e Zd ZdZd
ddZdddZdd	 ZdS )z3test_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                 S   r!   r"   )dfscalar_param)r&   r   r   r'   r'   r(   r)     r*   z<test_clone_pandas_dataframe.<locals>.DummyEstimator.__init__c                 S   r^   r"   r'   rb   r'   r'   r(   re     r`   z7test_clone_pandas_dataframe.<locals>.DummyEstimator.fitc                 S   r^   r"   r'   rf   r'   r'   r(   	transform  r`   z=test_clone_pandas_dataframe.<locals>.DummyEstimator.transformrX   r"   )r,   r-   r.   rT   r)   re   r   r'   r'   r'   r(   DummyEstimator  s
    

r   rp   rY   )r   )
r   r   rU   aranger   r   r   valuesallr   )r   r3   r   ecloned_er'   r'   r(   test_clone_pandas_dataframe  s   
r   c                  C   s   G dd dt } tddgddgddgg}t |}|j}| |}t|j| t| |  t	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                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z,test_clone_protocol.<locals>.FrozenEstimatorc                 S   
   || _ d S r"   )fitted_estimator)r&   r   r'   r'   r(   r)     r[   z5test_clone_protocol.<locals>.FrozenEstimator.__init__c                 S   s   t | j|S r"   )r   r   )r&   r   r'   r'   r(   __getattr__  s   z8test_clone_protocol.<locals>.FrozenEstimator.__getattr__c                 S   ra   r"   r'   r_   r'   r'   r(   __sklearn_clone__  r`   z>test_clone_protocol.<locals>.FrozenEstimator.__sklearn_clone__c                 _   ra   r"   r'   r&   argsr   r'   r'   r(   re     r`   z0test_clone_protocol.<locals>.FrozenEstimator.fitc                 _   s   | j j|i |S r"   )r   r   r   r'   r'   r(   fit_transform     z:test_clone_protocol.<locals>.FrozenEstimator.fit_transformN)r,   r-   r.   r)   r   r   re   r   r'   r'   r'   r(   FrozenEstimator  s    r   rq   r      rY   N)r   rU   rV   r   re   components_r   r   get_feature_names_outasarrayr   r   )r   rc   pca
components
frozen_pcaX_newclone_frozen_pcar'   r'   r(   test_clone_protocol  s   

r  c                  C   s   t  } t | j| j}t|}d|v sJ t	  t
d t|}W d    n1 s1w   Y  || j| j}|| j| j}||ksLJ d S )N   _sklearn_versionerror)r   	load_irisr   re   r   targetpickledumpswarningscatch_warningssimplefilterloadsr   )irisr   tree_pickletree_restoredscore_of_originalscore_of_restoredr'   r'   r(   ?test_pickle_version_warning_is_not_raised_with_matching_version  s   


r  c                   @      e Zd Zdd ZdS )TreeBadVersionc                 C   s   t | j ddS )N	something)_sklearn_version)dict__dict__itemsr_   r'   r'   r(   __getstate__  r   zTreeBadVersion.__getstate__Nr,   r-   r.   r   r'   r'   r'   r(   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                  C   s   t  } t | j| j}t|}tj	ddt
jd}tjt|d}t| W d    n1 s2w   Y  |jd j}t|tsDJ |jdksKJ |jdksRJ |jt
jksZJ d S )Nr  r  r   old_versioncurrent_versionr   r   )r   r  r  re   r   r  r  r  pickle_error_messageformatsklearn__version__r}   r   UserWarningr  listmessage
isinstancer   estimator_nameoriginal_sklearn_versioncurrent_sklearn_version)r  r   tree_pickle_otherr,  warning_recordr'   r'   r(   <test_pickle_version_warning_is_issued_upon_different_version
  s    
r3  c                   @   r  )TreeNoVersionc                 C   s   | j S r"   )r  r_   r'   r'   r(   r     s   zTreeNoVersion.__getstate__Nr!  r'   r'   r'   r(   r4    r"  r4  c                  C   s   t  } t | j| j}t|}d|vsJ tj	ddt
jd}tjt|d t| W d    d S 1 s9w   Y  d S )Nr	  r4  zpre-0.18r#  r   )r   r  r4  re   r   r  r  r  r&  r'  r(  r)  r}   r   r*  r  )r  r   tree_pickle_noversionr,  r'   r'   r(   Dtest_pickle_version_warning_is_issued_when_no_version_info_in_pickle"  s   
"r6  c                  C   s   t  } t | j| j}t|}z0tj}dt_t	
  t	d t| W d    n1 s2w   Y  W |t_d S W |t_d S |t_w )N
notsklearnr
  )r   r  r4  re   r   r  r  r  r-   r  r  r  r  )r  r   r5  module_backupr'   r'   r(   Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimator3  s   



r9  c                   @   s   e Zd Zdd Zdd ZdS )DontPickleAttributeMixinc                 C   s   | j  }d |d< |S N_attribute_not_pickled)r  rQ   )r&   r   r'   r'   r(   r   D  rD   z%DontPickleAttributeMixin.__getstate__c                 C   s   d|d< | j | d S )NT	_restored)r  updater&   stater'   r'   r(   __setstate__I  s   z%DontPickleAttributeMixin.__setstate__N)r,   r-   r.   r   rA  r'   r'   r'   r(   r:  C  s    r:  c                   @   s   e Zd ZdddZdS )MultiInheritanceEstimatorr   c                 C      || _ d | _d S r"   attribute_pickledr<  r&   rE  r'   r'   r(   r)   O  r*   z"MultiInheritanceEstimator.__init__Nr   r+   r'   r'   r'   r(   rB  N  r/   rB  c                  C   sJ   t  } d| _t| }t|}|jdksJ |jd u sJ |js#J d S N$this attribute should not be pickledr   )rB  r<  r  r  r  rE  r=  r   
serializedestimator_restoredr'   r'   r(   3test_pickling_when_getstate_is_overwritten_by_mixinT  s   

rM  c               	   C   s   z<t  } d}|| _t| j}dt| _|  }|d ddks J d|d< | | | jdks0J | js5J W |t| _d S |t| _w )NrI  r7  r   )r<  rE  r   rE  )rB  r<  r   r-   r   rA  rE  r=  )r   textold_modrK  r'   r'   r(   Ftest_pickling_when_getstate_is_overwritten_by_mixin_outside_of_sklearn_  s   


rP  c                       s&   e Zd ZdddZ fddZ  ZS )SingleInheritanceEstimatorr   c                 C   rC  r"   rD  rF  r'   r'   r(   r)   s  r*   z#SingleInheritanceEstimator.__init__c                    s   t   }d |d< |S r;  )r<   r   r?  rB   r'   r(   r   w  rD   z'SingleInheritanceEstimator.__getstate__rG  )r,   r-   r.   r)   r   rF   r'   r'   rB   r(   rQ  r  s    
rQ  c                  C   s@   t  } d| _t| }t|}|jdksJ |jd u sJ d S rH  )rQ  r<  r  r  r  rE  rJ  r'   r'   r(   Ctest_pickling_works_when_getstate_is_overwritten_in_the_child_class}  s   

rR  c                  C   sr   t  } t }|  jjsJ | jjrJ t }| jjr!J t }| jjs,J t }| jjs7J d S r"   )r9   rH   r=   r>   r?   rJ   rL   rO   )nan_tag_estno_nan_tag_estredefine_tags_estdiamond_tag_estinherit_diamond_tag_estr'   r'   r(   test_tag_inheritance  s   rX  c                  C   sV   G dd dt } |  }d}tjt|d |  W d    d S 1 s$w   Y  d S )Nc                   @   s    e Zd ZdddZdddZdS )	z<test_raises_on_get_params_non_attribute.<locals>.MyEstimatorr   c                 S   r^   r"   r'   r&   paramr'   r'   r(   r)     r`   zEtest_raises_on_get_params_non_attribute.<locals>.MyEstimator.__init__Nc                 S   ra   r"   r'   rb   r'   r'   r(   re     r`   z@test_raises_on_get_params_non_attribute.<locals>.MyEstimator.fitrG  r"   )r,   r-   r.   r)   re   r'   r'   r'   r(   r          
r    z-'MyEstimator' object has no attribute 'param'r   )r   r}   r~   AttributeErrorrs   )r    r   r   r'   r'   r(   'test_raises_on_get_params_non_attribute  s   
"r]  c                  C   sv   t  } |  }d|v sJ d|v sJ tdd |  }d|v s#J d|vs)J W d    d S 1 s4w   Y  d S )Nz
text/plainz	text/htmlrN  display)r   _repr_mimebundle_r   )r   outputr'   r'   r(   test_repr_mimebundle_  s   "rb  c               	   C   s   t  } |  }d|v sJ tdd. d}tjt|d |  }W d    n1 s+w   Y  W d    d S W d    d S 1 sCw   Y  d S )Nz<style>rN  r^  z _repr_html_ is only defined whenr   )r   _repr_html_r   r}   r~   r\  )r   ra  r   r'   r'   r(   test_repr_html_wraps  s   
"rd  c                  C   sx   t  } g dg dg}t| |dd | jdksJ d}tjt|d t| dd	d W d
   d
S 1 s5w   Y  d
S )z>Check that `_check_n_features` validates data when reset=FalserY   rq   r   )r   r      Tresetr   zHX does not contain any features, but MyEstimator is expecting 3 featuresr   	invalid XFN)r    r   n_features_in_r}   r~   r   )r   X_trainr   r'   r'   r(   test_n_features_in_validation  s   "rl  c                  C   s4   t  } t| ddd t| drJ t| ddd dS )z]Check that `_check_n_features` does not validate data when
    n_features_in_ is not defined.ri  Trg  rj  FN)r    r   r{   r   r'   r'   r(    test_n_features_in_no_validation  s   rn  c               	   C   s  t d} t }|j}| j||jd}G dd dtt}| 	|}t
|j|j |	| t|dr6J |	| d}| j||jddd d}t jt|d	 || W d   n1 saw   Y  d
}t jt|d	 || W d   n1 sw   Y  d}| 	|}t jt|d	 || W d   n1 sw   Y  | |}| }t  tdt |	| W d   n1 sw   Y  ||g}	|	D ]!}
t  tdt ||
 W d   n1 sw   Y  q| j|g dd}| }td}t jt|d	 |	| W d   n	1 s w   Y  t jt|d	 || W d   dS 1 s>w   Y  dS )z;Check that feature_name_in are recorded by `_validate_data`pandascolumnsc                   @      e Zd ZdddZdd ZdS )z.test_feature_names_in.<locals>.NoOpTransformerNc                 S      t | | | S r"   r   rb   r'   r'   r(   re        
z2test_feature_names_in.<locals>.NoOpTransformer.fitc                 S   s   t | |dd |S NFrg  rt  rf   r'   r'   r(   r     s   z8test_feature_names_in.<locals>.NoOpTransformer.transformr"   r,   r-   r.   re   r   r'   r'   r'   r(   NoOpTransformer      
rx  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 namesr
  )r6   r7   rY   rq   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   re   r   rz  rq  r{   r~   r   r   r   r*  r  r  r  reescaper   )pdr  X_npr   rx  transr   df_baddf_int_namesXsrc   df_mixedr'   r'   r(   test_feature_names_in  sb   






$r  c                  C   s  t d} t }| j|j|jd}| |j}G dd dt	t
}| }t||dd}t|tjs3J t||  t||dd}||u sGJ t||dd}t|tjsVJ t||  t||dd}	|	|u sjJ t|||dd\}}t|tjs|J t||  t|tjsJ t||  t|||dd\}}	||u sJ |	|u sJ d	}
t jt|
d
 t| W d   dS 1 sw   Y  dS )z0Check skip_check_array option of _validate_data.ro  rp  c                   @   rK   )z<test_validate_data_skip_check_array.<locals>.NoOpTransformerNrM   r'   r'   r'   r(   rx  1  rN   rx  F)skip_check_arrayT)rd   r  z*Validation should be done on X, y or both.r   N)r}   r{  r   r  r|  r   r}  Seriesr  r   r   r   r-  rU   ndarrayr   to_numpyr~   r   )r  r  r   rd   rx  no_opX_np_outX_df_outy_np_outy_series_outr   r'   r'   r(   #test_validate_data_skip_check_array)  s8   

"r  c                  C   s:   t  jdd} td| }t| }td|}||ksJ dS )z-Check that clone keeps the set_output config.ro  )r   r   N)r   
set_outputr   r   )ssconfigss_cloneconfig_cloner'   r'   r(   test_clone_keeps_output_configR  s
   

r  c                   @   rK   )_EmptyNrM   r'   r'   r'   r(   r  ]  rN   r  c                   @   rK   )EmptyEstimatorNrM   r'   r'   r'   r(   r  a  rN   r  r   c                 C   s4   |   }dtji}||ksJ tt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.
    r  N)r   r(  r)  r  r  r  r   )r   r@  expectedr'   r'   r(   "test_estimator_empty_instance_dicte  s   
r  c                  C   s   G dd d} G dd dt | }d}tjt|d |   W d   n1 s)w   Y  tjt|d t|  W d   dS 1 sGw   Y  dS )z:Using a `BaseEstimator` with `__slots__` is not supported.c                   @   s   e Zd ZdZdS )zDtest_estimator_getstate_using_slots_error_message.<locals>.WithSlotsxN)r,   r-   r.   	__slots__r'   r'   r'   r(   	WithSlotsx  s    r  c                   @   rK   )zDtest_estimator_getstate_using_slots_error_message.<locals>.EstimatorNrM   r'   r'   r'   r(   	Estimator{  rN   r  zRYou cannot use `__slots__` in objects inheriting from `sklearn.base.BaseEstimator`r   N)r   r}   r~   r   r   r  r  )r  r  r   r'   r'   r(   1test_estimator_getstate_using_slots_error_messageu  s   "r  zconstructor_name, minversion))	dataframez1.5.0)pyarrowz12.0.0)polarsz0.20.23c           
      C   s   g dg dg}g d}t || ||d}G dd dtt}| }|| t|j| ||}| dkr9t|| g d}t || |d	}	tj	t
d
d ||	 W d   dS 1 s\w   Y  dS )z:Uses the dataframe exchange protocol to get feature names.)rY   r   rq   )r   r   rf  )col_0col_1col_2)columns_name
minversionc                   @   rr  )z0test_dataframe_protocol.<locals>.NoOpTransformerNc                 S   rs  r"   rt  rb   r'   r'   r(   re     ru  z4test_dataframe_protocol.<locals>.NoOpTransformer.fitc                 S   s   t | |ddS rv  rt  rf   r'   r'   r(   r     rS   z:test_dataframe_protocol.<locals>.NoOpTransformer.transformr"   rw  r'   r'   r'   r(   rx    ry  rx  r  )r6   r7   r2   )r  zThe feature names should matchr   N)r   r   r   re   r   rz  r   r   r}   r~   r   )
constructor_namer  r   rq  r   rx  r  X_out	bad_namesr  r'   r'   r(   test_dataframe_protocol  s"   



"r  )enable_metadata_routingc                  C      G dd dt t} tjtdd |  jddjdggdgdd W d   n1 s+w   Y  tjdd	}|  jdddggdg t	|d
ksMJ W d   dS 1 sXw   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dZdddZdS )zTtest_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformerNc                 S   ra   r"   r'   r&   rc   rd   propr'   r'   r(   re     r`   zXtest_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.fitc                 S      |S r"   r'   r&   rc   r  r'   r'   r(   r     r`   z^test_transformer_fit_transform_with_metadata_in_transform.<locals>.CustomTransformer.transformr4   r"   rw  r'   r'   r'   r(   CustomTransformer  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  r'   r'   r(   9test_transformer_fit_transform_with_metadata_in_transform     	"r  c                  C   r  )ziTest that having an OutlierMixin with metadata for predict raises a
    warning when calling fit_predict.c                   @   r  )zVtest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetectorNc                 S   ra   r"   r'   r  r'   r'   r(   re     r`   zZtest_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.fitc                 S   r  r"   r'   r  r'   r'   r(   rg     r`   z^test_outlier_mixin_fit_predict_with_metadata_in_predict.<locals>.CustomOutlierDetector.predictr4   r"   )r,   r-   r.   re   rg   r'   r'   r'   r(   CustomOutlierDetector  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  r'   r'   r(   7test_outlier_mixin_fit_predict_with_metadata_in_predict  r  r  c                  C   s6   t dd} |  dddksJ |  jdksJ dS )z5Check the behaviour of the `_get_params_html` method.ry   r   r   r#   N)r    _get_params_htmlnon_defaultrm  r'   r'   r(   test_get_params_html  s   
r  c                    s   G  fdddt }|S )Nc                       s   e Zd Z fddZdS )z3make_estimator_with_param.<locals>.DynamicEstimatorc                 S   r   r"   rZ  rY  r'   r'   r(   r)     r[   z<make_estimator_with_param.<locals>.DynamicEstimator.__init__Nr+   r'   default_valuer'   r(   DynamicEstimator  s    r  )r   )r  r  r'   r  r(   make_estimator_with_param  s   r  zdefault_value, test_value)r'   )rY   r'   )rY   rq   )r   r   r  r   rX   c                 C   ra   r"   r'   r  r'   r'   r(   <lambda>  s    r        ?)abcdefr  )TF)r         @accuracyc                 C   s(   t | |d}| j}d|v sJ dS )zCheck that we detect non-default parameters with various types.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/31525
    r  rZ  Nr  r  r  r  
test_valuer   r  r'   r'   r(   test_param_is_non_default  s   #
r  r4   )r'   r'   )re  re  re  )r  r  )TT)rY   rY   )r  r  )rq   r  c                 C   s(   t | |d}| j}d|vsJ dS )zCheck that we detect the default parameters and values in an array-like will
    be reported as default as well.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/31525
    r  rZ  Nr  r  r'   r'   r(   test_param_is_default  s   
r  )r  r~  r  numpyrU   r}   scipy.sparsesparser   numpy.testingr   r(  r   r   sklearn.baser   r   r   r   r	   r
   r   r   sklearn.clusterr   sklearn.decompositionr   sklearn.ensembler   sklearn.exceptionsr   sklearn.metricsr   sklearn.model_selectionr   r   sklearn.pipeliner   sklearn.preprocessingr   sklearn.svmr   r   sklearn.treer   r   sklearn.utils._mockingr   sklearn.utils._set_outputr   sklearn.utils._testingr   r   sklearn.utils.validationr   r   r    r1   r5   r9   rH   rJ   rL   rO   rP   rW   r]   rh   rx   r|   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   make_classificationmake_regressionr   r   r  r  r  r&  r3  r4  r6  r9  r:  rB  rM  rP  rQ  rR  rX  r]  rb  rd  rl  rn  r  r  r  r  r  r  r  r  r  r  r  r  rV   r   r  r  r'   r'   r'   r(   <module>   s|  (

	  
  
  





&,	
N)

 







