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'   f/var/www/html/eduruby.in/lip-sync/lip-sync-env/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&   Z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_selectionrj   rk   r   
get_paramsrU   Zzerosrj   rk   selectorZnew_selectorr'   r'   r(   
test_clone   s   ru   c                  C   s<   ddl m} m} | |dd}d|_t|}t|drJ d S )Nr   ri   rl   rm   testown_attribute)rq   rj   rk   rw   r   hasattrrs   r'   r'   r(   test_clone_2   s
   ry   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 )Nrp   )
rW   r6   pytestraisesRuntimeErrorr   r]   	TypeErrorrh   rP   )ZbuggyZno_estimatorZ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%   spZ
csr_matrixdataclfZ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   )origZ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 )Z_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   Ztoarray)Zsparse_matrix_classesZsparse_matrixr   Z
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)rz   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())Zlong_paramsi  rZ   i  )r    reprr5   r1   len)my_estimatorrv   Z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)deepFrp   )r   )Za__a)	r5   r1   rr   
set_paramsr6   r3   rz   r{   
ValueError)rv   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   )rz   warnsFutureWarningr	   r   r   r   r
   r   r   r   r'   r'   r'   r(   test_is_estimator_type_class  s   "r   zestimator, expected_resultTCrl   rY   svcZsvc_cvFZsvrZsvr_cvc                 C      t | |ksJ d S r"   )r	   	estimatorZexpected_resultr'   r'   r(   test_is_classifier     r   c                 C   r   r"   )r   r   r'   r'   r(   test_is_regressor0  r   r   Z
n_clusters      kmZ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)Zsvc__stupid_param)Zsvm__stupid_param)r   r   rz   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   rp   )	max_depthZmin_samples_leafr   )Zestimator__max_depthZ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   Zestimator__C)r   r   r   r   r   r   )Zgscvr'   r'   r(   $test_set_params_updates_valid_paramsw  s   r   ztree,datasetrp   )r   random_state)r   c           	      C   sh   t jd}|\}}| || |jddt|d}| ||}| j|||d}d}||ks2J |d S )Nr   rY   ro   )size)sample_weightz5Unweighted and weighted scores are unexpectedly equal)rU   randomZRandomStatere   randintr   score)	treeZdatasetrngrc   rd   r   Zscore_unweightedZ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   ro   rY   )r   )
r   r   rU   Zaranger   r   r   valuesallr   )r   r3   r   eZ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   rp   r      rY   N)r   rU   rV   r   re   Zcomponents_r   r   Zget_feature_names_outZasarrayr   r   )r   rc   Zpca
componentsZ
frozen_pcaZX_newZ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   Ztree_pickleZtree_restoredZscore_of_originalZ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   Zold_versioncurrent_versionr   r   )r   r   r   re   r   r   r   r   pickle_error_messageformatsklearn__version__rz   r   UserWarningr   listmessage
isinstancer   Zestimator_nameZoriginal_sklearn_versionZcurrent_sklearn_version)r   r   Ztree_pickle_otherr   Zwarning_recordr'   r'   r(   <test_pickle_version_warning_is_issued_upon_different_version
  s    
r   c                   @   r   )TreeNoVersionc                 C   s   | j S r"   )r   r_   r'   r'   r(   r     s   zTreeNoVersion.__getstate__Nr   r'   r'   r'   r(   r     r   r   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   r   zpre-0.18r   r   )r   r   r   re   r   r   r   r   r   r   r   r   rz   r   r   r   )r   r   tree_pickle_noversionr   r'   r'   r(   Dtest_pickle_version_warning_is_issued_when_no_version_info_in_pickle"  s   
"r  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   r   re   r   r   r   r   r-   r   r   r   r   )r   r   r   Zmodule_backupr'   r'   r(   Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimator3  s   



r  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   r  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&   r  r'   r'   r(   r)   O  r*   z"MultiInheritanceEstimator.__init__Nr   r+   r'   r'   r'   r(   r  N  r/   r  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   )r  r  r   r   r   r  r  r   
serializedZestimator_restoredr'   r'   r(   3test_pickling_when_getstate_is_overwritten_by_mixinT  s   

r  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 )Nr  r  r   )r  r  r   r  )r  r  r   r-   r   r  r  r  )r   textold_modr  r'   r'   r(   Ftest_pickling_when_getstate_is_overwritten_by_mixin_outside_of_sklearn_  s   


r  c                       s&   e Zd ZdddZ fddZ  ZS )SingleInheritanceEstimatorr   c                 C   r  r"   r  r  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__r  )r,   r-   r.   r)   r   rF   r'   r'   rB   r(   r  r  s    
r  c                  C   s@   t  } d| _t| }t|}|jdksJ |jd u sJ d S r  )r  r  r   r   r   r  r  r'   r'   r(   Ctest_pickling_works_when_getstate_is_overwritten_in_the_child_class}  s   

r  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   )Znan_tag_estZno_nan_tag_estZredefine_tags_estZdiamond_tag_estZinherit_diamond_tag_estr'   r'   r(   test_tag_inheritance  s   r  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.fitr  r"   )r,   r-   r.   r)   re   r'   r'   r'   r(   r          
r    z-'MyEstimator' object has no attribute 'param'r   )r   rz   r{   AttributeErrorrr   )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/htmlr  display)r   _repr_mimebundle_r   )r   outputr'   r'   r(   test_repr_mimebundle_  s   "r&  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>r  r"  z _repr_html_ is only defined whenr   )r   _repr_html_r   rz   r{   r   )r   r%  r   r'   r'   r(   test_repr_html_wraps  s   
"r(  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   rp   r   )r   r      Tresetr   zHX does not contain any features, but MyEstimator is expecting 3 featuresr   	invalid XFN)r    r   n_features_in_rz   r{   r   )r~   ZX_trainr   r'   r'   r(   test_n_features_in_validation  s   "r/  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.r-  Tr+  r.  FN)r    r   rx   r~   r'   r'   r(    test_n_features_in_no_validation  s   r1  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 NFr+  r7  rf   r'   r'   r(   r     s   z8test_feature_names_in.<locals>.NoOpTransformer.transformr"   r,   r-   r.   re   r   r'   r'   r'   r(   NoOpTransformer      
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 namesr   )r6   r7   rY   rp   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.)rz   importorskipr   r   r   	DataFramefeature_namesr   r   re   r   r=  r4  rx   r{   r   r   r   r   r   r   r   reescaper}   )pdr   ZX_npr   r;  Ztransr   df_badZdf_int_namesZXsrc   Zdf_mixedr'   r'   r(   test_feature_names_in  sb   






$rE  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.r2  r3  c                   @   rK   )z<test_validate_data_skip_check_array.<locals>.NoOpTransformerNrM   r'   r'   r'   r(   r;  1  rN   r;  F)skip_check_arrayT)rd   rF  z*Validation should be done on X, y or both.r   N)rz   r>  r   r   r?  r   r@  ZSeriesr   r   r   r   r   rU   Zndarrayr   Zto_numpyr{   r   )rC  r   r   rd   r;  no_opZX_np_outZX_df_outZy_np_outZy_series_outr   r'   r'   r(   #test_validate_data_skip_check_array)  s8   

"rH  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.r2  )r   r   N)r   Z
set_outputr   r   )ssconfigZss_cloneZconfig_cloner'   r'   r(   test_clone_keeps_output_configR  s
   

rK  c                   @   rK   )_EmptyNrM   r'   r'   r'   r(   rL  ]  rN   rL  c                   @   rK   )EmptyEstimatorNrM   r'   r'   r'   r(   rM  a  rN   rM  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   
rO  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    rS  c                   @   rK   )zDtest_estimator_getstate_using_slots_error_message.<locals>.EstimatorNrM   r'   r'   r'   r(   	Estimator{  rN   rT  zRYou cannot use `__slots__` in objects inheriting from `sklearn.base.BaseEstimator`r   N)r   rz   r{   r}   r   r   r   )rS  rT  r   r'   r'   r(   1test_estimator_getstate_using_slots_error_messageu  s   "rU  zconstructor_name, minversion))Z	dataframez1.5.0)pyarrowz12.0.0)Z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   rp   )r   r   r*  )Zcol_0Zcol_1Zcol_2)columns_name
minversionc                   @   r5  )z0test_dataframe_protocol.<locals>.NoOpTransformerNc                 S   r6  r"   r7  rb   r'   r'   r(   re     r8  z4test_dataframe_protocol.<locals>.NoOpTransformer.fitc                 S   s   t | |ddS r9  r7  rf   r'   r'   r(   r     rS   z:test_dataframe_protocol.<locals>.NoOpTransformer.transformr"   r:  r'   r'   r'   r(   r;    r<  r;  rV  )r6   r7   r2   )rW  zThe feature names should matchr   N)r   r   r   re   r   r=  r   r   rz   r{   r   )
Zconstructor_namerX  r   r4  r   r;  rG  ZX_outZ	bad_namesrD  r'   r'   r(   test_dataframe_protocol  s"   



"rY  )Z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"   r:  r'   r'   r'   r(   CustomTransformer  r  r`  z*`transform` method which consumes metadatar   Tr]  rY   Nrecordr   )
r   r   rz   r   r   Zset_transform_requestr   r   r   r   )r`  rc  r'   r'   r(   9test_transformer_fit_transform_with_metadata_in_transform     	"rd  c                  C   rZ  )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  rf  z(`predict` method which consumes metadatar   Tra  rY   Nrb  r   )
r   r   rz   r   r   Zset_predict_requestZfit_predictr   r   r   )rf  rc  r'   r'   r(   7test_outlier_mixin_fit_predict_with_metadata_in_predict  re  rg  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.rv   r   r   r#   N)r    _get_params_htmlnon_defaultr0  r'   r'   r(   test_get_params_html  s   
rj  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"   r  r  r'   r'   r(   r)     r[   z<make_estimator_with_param.<locals>.DynamicEstimator.__init__Nr+   r'   default_valuer'   r(   DynamicEstimator  s    rn  )r   )rm  rn  r'   rl  r(   make_estimator_with_param  s   ro  zdefault_value, test_value)r'   )rY   r'   )rY   rp   )r   r   rp  r   rX   c                 C   ra   r"   r'   rP  r'   r'   r(   <lambda>  s    rq        ?)abcdefrs  )TF)rr         @Z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
    rk  r  Nro  rh  ri  rm  Z
test_valuer   ri  r'   r'   r(   test_param_is_non_default  s   #
rx  r4   )r'   r'   )r)  r)  r)  )rs  rs  )TT)rY   rY   )rr  rr  )rp   ru  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
    rk  r  Nrv  rw  r'   r'   r(   test_param_is_default  s   
ry  )r   rA  r   numpyrU   rz   Zscipy.sparsesparser   Znumpy.testingr   r   r   r   Zsklearn.baser   r   r   r   r	   r
   r   r   Zsklearn.clusterr   Zsklearn.decompositionr   Zsklearn.ensembler   Zsklearn.exceptionsr   Zsklearn.metricsr   Zsklearn.model_selectionr   r   Zsklearn.pipeliner   Zsklearn.preprocessingr   Zsklearn.svmr   r   Zsklearn.treer   r   Zsklearn.utils._mockingr   Zsklearn.utils._set_outputr   Zsklearn.utils._testingr   r   Zsklearn.utils.validationr   r   r    r1   r5   r9   rH   rJ   rL   rO   rP   rW   r]   rh   ru   ry   r   r   r   r   r   r   r   r   r   r   r   markZparametrizer   r   r   r   r   r   Zmake_classificationZmake_regressionr   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r!  r&  r(  r/  r1  rE  rH  rK  rL  rM  rO  rU  rY  rd  rg  rj  ro  rV   r   rx  ry  r'   r'   r'   r(   <module>   s|  (

	  
  
  





&,	
N)

 







