o
    tBhM                     @   s4  d dl Z d dlZd dlm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	mZ d dl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 d dlmZ d dlmZ d dlZG 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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Z)G d#d$ d$Z*G d%d& d&eZ+d'd( Z,d)d* Z-d+d, Z.d-d. Z/d/d0 Z0d1d2 Z1d3d4 Z2d5d6 Z3d7d8 Z4d9d: Z5d;d< Z6d=d> Z7d?d@ Z8dAdB Z9dCdD Z:ej;<dEedFd dGej=d dHfedFd dGej>d dHfgdIdJ Z?dKdL Z@dMdN ZAG dOdP dPeZBdQZCdRdS ZDG dTdU dUeZEdVdW ZFdXdY ZGG dZd[ d[ZHG d\d] d]eHeZId^d_ ZJd`da ZKG dbdc dceZLeeMdddedf ZNdgdh ZOdidj ZPdkdl ZQdmdn ZRdodp ZSdqdr ZTdsdt ZUdS )u    N)assert_array_equal)assert_no_warnings)ignore_warnings)BaseEstimatorcloneis_classifier)SVC)Pipeline)GridSearchCV)DecisionTreeClassifier)DecisionTreeRegressor)datasets)TransformerMixin)MockDataFrame)config_contextc                   @   s   e Zd ZdddZdS )MyEstimatorr   Nc                 C      || _ || _d S N)l1empty)selfr   r    r   n/var/www/html/riverr-enterprise-integrations-main/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   r"   r#   r   r   r   r   '   r   z
K.__init__NNr   r   r   r   r   r!   &   r   r!   c                   @   r    )TNc                 C   r   r   )ab)r   r&   r'   r   r   r   r   -   r   z
T.__init__r$   r   r   r   r   r   r%   ,   r   r%   c                   @      e Zd Zdd ZdS )NaNTagc                 C      ddiS )N	allow_nanTr   r   r   r   r   
_more_tags3      zNaNTag._more_tagsNr   r   r   r-   r   r   r   r   r)   2       r)   c                   @   r(   )NoNaNTagc                 C   r*   Nr+   Fr   r,   r   r   r   r-   8   r.   zNoNaNTag._more_tagsNr/   r   r   r   r   r1   7   r0   r1   c                   @   r(   )OverrideTagc                 C   r*   r2   r   r,   r   r   r   r-   =   r.   zOverrideTag._more_tagsNr/   r   r   r   r   r3   <   r0   r3   c                   @   r(   )DiamondOverwriteTagc                 C   s   t  S r   )dictr,   r   r   r   r-   B      zDiamondOverwriteTag._more_tagsNr/   r   r   r   r   r4   A   r0   r4   c                   @   s   e Zd ZdS )InheritDiamondOverwriteTagN)r   r   r   r   r   r   r   r7   F   s    r7   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   )copyr&   r   r&   r   r   r   r   P   s   zModifyInitParams.__init__N)r   r   r   __doc__nparrayr   r   r   r   r   r8   J   s    r8   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   r&   r:   r   r   r   r   W   s   
zBuggy.__init__r   r   r   r   r;   r   r   r   r   r   r>   T   s    r>   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   \      zNoEstimator.__init__Nc                 C      | S r   r   r   Xyr   r   r   fit_   rE   zNoEstimator.fitc                 C   rD   r   r   r   rH   r   r   r   predictb   rE   zNoEstimator.predictr$   r   )r   r   r   r   rJ   rL   r   r   r   r   rC   [   s    
rC   c                   @   s   e Zd ZdZdd ZdS )VargEstimatorz-scikit-learn estimators shouldn't have vargs.c                 G   rD   r   r   )r   vargsr   r   r   r   i   rE   zVargEstimator.__init__NrB   r   r   r   r   rM   f   s    rM   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_selectionrP   rQ   r   
get_paramsr<   zerosrP   rQ   selectornew_selectorr   r   r   
test_cloneq   s   r]   c                  C   s<   ddl m} m} | |dd}d|_t|}t|drJ d S )Nr   rO   rR   rS   testown_attribute)rW   rP   rQ   r_   r   hasattrrZ   r   r   r   test_clone_2   s
   ra   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 )NrV   )
r>   r&   pytestraisesRuntimeErrorr   rC   	TypeErrorrM   r8   )buggyno_estimatorvarg_estestr   r   r   test_clone_buggy   s"   



"rj   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   r<   r=   r   r   r   sp
csr_matrixdataclfclf2r   r   r   test_clone_empty_array   s   rr   c                  C   s(   t tjd} t| }| j|ju sJ d S Nrk   )r   r<   nanr   r   ro   r   r   r   test_clone_nan   s   ru   c                  C   sj   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                 S   s    g | ]}| d rtt|qS )_matrix)endswithgetattrrl   ).0namer   r   r   
<listcomp>   s
    
z.test_clone_sparse_matrices.<locals>.<listcomp>   rk   )
dirrl   r<   eyer   r   r   	__class__r   toarray)sparse_matrix_classesclssparse_matrixrp   
clf_clonedr   r   r   test_clone_sparse_matrices   s   
r   c                  C   s&   t t d} t| }| j|ju sJ d S rs   )r   r   r   ro   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)rb   rc   re   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  rA   i  )r   reprr%   r!   len)my_estimatorr^   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)deepFrV   )r   )a__a)	r%   r!   rX   
set_paramsr&   r#   rb   rc   
ValueError)r^   r   r   r   test_get_params   s   "r   c                  C   sj   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s3J d S )NCrR   r@   svcsvc_cv)r   r   r
   r	   )r   r   r   r   test_is_classifier   s
   (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   rb   rc   r   r   )rp   r   r   r   test_set_params   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   )superr   )r   kwargs)r   expected_kwargsr   r   r     s   zJtest_set_params_passes_all_parameters.<locals>.TestDecisionTree.set_params)r   r   r   r   __classcell__r   r   )r   r   TestDecisionTree  s    r   r|   rV   )	max_depthmin_samples_leaf	estimator)estimator__max_depthestimator__min_samples_leaf)r   r	   r
   r   )r   ri   r   r   r   %test_set_params_passes_all_parameters  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_params!  s   r   ztree,datasetrV   )r   random_state)r   c           	      C   sh   t jd}|\}}| || |jddt|d}| ||}| j|||d}d}||ks2J |d S )Nr   r@   rU   )size)sample_weightz5Unweighted and weighted scores are unexpectedly equal)r<   randomRandomStaterJ   randintr   score)	treedatasetrngrH   rI   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
        -----
        Nr@   c                 S   r   r   )dfscalar_param)r   r   r   r   r   r   r   U  r   z<test_clone_pandas_dataframe.<locals>.DummyEstimator.__init__c                 S   rD   r   r   rG   r   r   r   rJ   Y  rE   z7test_clone_pandas_dataframe.<locals>.DummyEstimator.fitc                 S   rD   r   r   rK   r   r   r   	transform\  rE   z=test_clone_pandas_dataframe.<locals>.DummyEstimator.transformr?   r   )r   r   r   r;   r   rJ   r   r   r   r   r   DummyEstimatorE  s
    

r   rU   r@   )r   )
r   r   r<   aranger   r   r   valuesallr   )r   r#   r   ecloned_er   r   r   test_clone_pandas_dataframeD  s   
r   c                  C   sl   t  } t | j| j}t|}d|v sJ ttj	|}|
| j| j}|
| j| j}||ks4J d S )N   version)r   	load_irisr   rJ   rn   targetpickledumpsr   loadsr   )irisr   tree_pickletree_restoredscore_of_originalscore_of_restoredr   r   r   ?test_pickle_version_warning_is_not_raised_with_matching_versionj  s   
r   c                   @   r(   )TreeBadVersionc                 C   s   t | j ddS )N	something)_sklearn_version)r5   __dict__itemsr,   r   r   r   __getstate__x  s   zTreeBadVersion.__getstate__Nr   r   r   r   r   r   r   r   r   w  r0   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   st   t  } t | j| j}t|}tj	ddt
jd}tjt|d t| W d    d S 1 s3w   Y  d S )Nr   r   r   old_versioncurrent_versionr   )r   r   r   rJ   rn   r   r   r   pickle_error_messageformatsklearn__version__rb   warnsUserWarningr   )r   r   tree_pickle_othermessager   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     r6   zTreeNoVersion.__getstate__Nr   r   r   r   r   r     r0   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   rJ   rn   r   r   r   r   r   r   r   rb   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   sR   t  } t | j| j}t|}ztj}dt_t	tj
| W |t_d S |t_w )N
notsklearn)r   r   r   rJ   rn   r   r   r   r   r   r   )r   r   r   module_backupr   r   r   Ctest_pickle_version_no_warning_is_issued_with_non_sklearn_estimator  s   
r   c                   @   s   e Zd Zdd Zdd ZdS )DontPickleAttributeMixinc                 C      | j  }d |d< |S N_attribute_not_pickledr   r9   r   rn   r   r   r   r        
z%DontPickleAttributeMixin.__getstate__c                 C   s   d|d< | j | d S )NT	_restored)r   update)r   stater   r   r   __setstate__  s   z%DontPickleAttributeMixin.__setstate__N)r   r   r   r   r   r   r   r   r   r     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     r   z"MultiInheritanceEstimator.__init__Nr|   r   r   r   r   r   r     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   
serializedestimator_restoredr   r   r   3test_pickling_when_getstate_is_overwritten_by_mixin  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   typer   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dd ZdS )SingleInheritanceEstimatorr|   c                 C   r   r   r   r   r   r   r   r     r   z#SingleInheritanceEstimator.__init__c                 C   r   r   r   r   r   r   r   r     r   z'SingleInheritanceEstimator.__getstate__Nr   )r   r   r   r   r   r   r   r   r   r        
r  )categoryc                  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 }|  d sJ | d rJ t }| d r!J t }| d s,J t }| d s7J d S )Nr+   )r)   r1   	_get_tagsr3   r4   r7   )nan_tag_estno_nan_tag_estredefine_tags_estdiamond_tag_est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   rD   r   r   )r   paramr   r   r   r     rE   zEtest_raises_on_get_params_non_attribute.<locals>.MyEstimator.__init__Nc                 S   rF   r   r   rG   r   r   r   rJ     rE   z@test_raises_on_get_params_non_attribute.<locals>.MyEstimator.fitr   r   )r   r   r   r   rJ   r   r   r   r   r     s    
r   z-'MyEstimator' object has no attribute 'param'r   )r   rb   rc   AttributeErrorrX   )r   ri   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   rb   rc   r  )r   r  r   r   r   r   test_repr_html_wraps'  s   
"r  c                  C   sx   t  } g dg dg}| j|dd | jdksJ d}tjt|d | jdd	d W d
   d
S 1 s5w   Y  d
S )z>Check that `_check_n_features` validates data when reset=False)r@   rV      )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_rb   rc   r   )ri   X_trainr   r   r   r   test_n_features_in_validation4  s   "r$  c                  C   s4   t  } | jddd t| drJ | j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!  r`   )ri   r   r   r    test_n_features_in_no_validationA  s   r%  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                   @   s   e Zd ZdddZdd ZdS )z.test_feature_names_in.<locals>.NoOpTransformerNc                 S   s   |  | | S r   _validate_datarG   r   r   r   rJ   U  s   
z2test_feature_names_in.<locals>.NoOpTransformer.fitc                 S   s   | j |dd |S )NFr  r(  rK   r   r   r   r   Y  s   z8test_feature_names_in.<locals>.NoOpTransformer.transformr   )r   r   r   rJ   r   r   r   r   r   NoOpTransformerT  r  r*  feature_names_in_z5The feature names should match those that were passedNr   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)r&   r'   r@   rV   zdFeature names only support names that are all strings. Got feature names with dtypes: ['int', 'str'])rb   importorskipr   r   rn   	DataFramefeature_namesr   r   rJ   r   r+  r'  r`   r   FutureWarningr   r   warningscatch_warningssimplefilterreescape)pdr   X_npr   r*  transr   df_baddf_int_namesXsrH   df_mixedrecordr   r   r   test_feature_names_inM  sb   






$r?  )Vr5  numpyr<   scipy.sparsesparserl   rb   r2  r   sklearn.utils._testingr   r   r   sklearn.baser   r   r   sklearn.svmr   sklearn.pipeliner	   sklearn.model_selectionr
   sklearn.treer   r   r   r   sklearn.utils._mockingr   r   r   r   r!   r%   r)   r1   r3   r4   r7   r8   r>   rC   rM   r]   ra   rj   rr   ru   r   r   r   r   r   r   r   r   r   r   markparametrizemake_classificationmake_regressionr   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r
  r  r  r  r  r$  r%  r?  r   r   r   r   <module>   s   
	




&	

