U
    ½mœd“M  ã                $   @   sB  d Z 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mZ ddl	m
Z
mZ ddlmZ ddlZddlZddlmZmZmZmZmZ ddlmZ ddlmZ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&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/m0Z0 ddl1Z1ddl2m3Z3 ddl2m4Z4 ddl5m6Z6 ddl#m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl<m>Z> ddl?m@Z@ ddl?mAZA ddl?mBZB ddl?mCZC ddlDmEZE ddl(mFZF ddlGmHZHmIZI ddl*mJZJmKZK dd l/mLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d!d"„ ZZd™d$d%„Z[ej\ ]d&ee[d#d'�d(fe[d%fee[d)ƒd%fe=d*d+�d,fe=d#d-d.d/d0�d1fg¡d2d3„ ƒZ^dšd4d5„Z_ePe`e_ƒ ƒƒd6d7„ ƒZad8d9„ Zbd:d;„ Zcd<d=„ Zdej\ ]d>edƒ ¡d?d@„ ƒZee+dAdB„ ƒZfdCdD„ ZgdEdF„ ZhdGdH„ ZidIdJ„ ZjePe`ejƒ ƒƒdKdL„ ƒZkej\j]dMe_ƒ eNdN�dOdP„ ƒZlej\j]dMe_ƒ eNdN�dQdR„ ƒZmdSdT„ Zne`ee_ƒ eEe=d#d+�ƒge`ejƒ ƒenƒ ƒƒZoej\j]dMeoeNdN�dUdV„ ƒZpdWdXgZqdYdZ„ Zrd[d\„ e_d]ƒD ƒZsej\j]d]eseNdN�d^d_„ ƒZtd`d\„ e_ƒ D ƒZudadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd€d�d‚dƒd„g$Zvej\j]dMeueNdN�d…d†„ ƒZwej\ ]d‡dˆd\„ e)ƒ D ƒ¡d‰dŠ„ ƒZxej\j]dMe_ƒ eNdN�d‹dŒ„ ƒZyej\ ]d‡eeeee e!e"e&e'eeeeeeg¡d�dŽ„ ƒZze`ee_d]ƒeEe7ƒ e8ƒ ƒe9d�d��e$d‘d’�gƒƒZ{ej\j]dMe{eNdN�d“d”„ ƒZ|ej\j]dMe{eNdN�d•d–„ ƒZ}ej\j]dMe{eNdN�d—d˜„ ƒZ~dS )›z.
General tests for all estimators in sklearn.
é    N)ÚisgeneratorÚ	signature)ÚproductÚchain)Úpartial)ÚAffinityPropagationÚBirchÚ	MeanShiftÚOPTICSÚSpectralClustering)Ú
make_blobs)ÚIsomapÚTSNEÚLocallyLinearEmbedding)ÚLocalOutlierFactorÚKNeighborsClassifierÚKNeighborsRegressorÚRadiusNeighborsClassifierÚRadiusNeighborsRegressor)ÚFunctionTransformer)ÚLabelPropagationÚLabelSpreading)Úall_estimators)Úignore_warnings)ÚConvergenceWarning)ÚFitFailedWarning)Úcheck_estimator)Úenable_iterative_imputer)Úenable_halving_search_cv)ÚPCA)ÚStandardScalerÚMinMaxScalerÚOneHotEncoder)ÚLinearClassifierMixin)ÚLogisticRegression)ÚRidge)ÚGridSearchCV)ÚRandomizedSearchCV)ÚHalvingGridSearchCV)ÚHalvingRandomSearchCV)Úmake_pipeline)ÚIS_PYPY)Ú_DEFAULT_TAGSÚ
_safe_tags)ÚSkipTestÚset_random_state)Ú_construct_instanceÚ_set_checking_parametersÚ_get_check_estimator_idsÚ-check_class_weight_balanced_linear_classifierÚparametrize_with_checksÚ(check_dataframe_column_names_consistencyÚ!check_n_features_in_after_fittingÚcheck_param_validationÚ'check_transformer_get_feature_names_outÚ.check_transformer_get_feature_names_out_pandasÚcheck_set_output_transformÚ!check_set_output_transform_pandasÚ$check_global_ouptut_transform_pandasÚ!check_get_feature_names_out_errorc                  C   s4   t ƒ D ](\} }d | ¡}|  ¡  d¡rt|ƒ‚qd S )NzDBase estimators such as {0} should not be included in all_estimatorsÚbase)r   ÚformatÚlowerÚ
startswithÚAssertionError)ÚnameÚ	EstimatorÚmsg© rF   úR/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/tests/test_common.pyÚ test_all_estimator_no_base_classW   s    ÿþrH   é   c                 C   s   d S ©NrF   )ÚxÚyrF   rF   rG   Ú_sample_func`   s    rM   zval, expected)rL   z_sample_func(y=1)Zworldg       @)ÚCzLogisticRegression(C=2.0)z	newton-cgZbalancedT)Úrandom_stateZsolverÚclass_weightZ
warm_startz]LogisticRegression(class_weight='balanced',random_state=1,solver='newton-cg',warm_start=True)c                 C   s   t | ƒ|kst‚d S rJ   )r2   rB   )ÚvalÚexpectedrF   rF   rG   Útest_get_check_estimator_idsd   s    rS   c              	   c   sD   t | d�D ]4\}}zt|ƒ}W n tk
r6   Y q
Y nX |V  q
d S )N©Útype_filter)r   r0   r.   )rU   rC   rD   Ú	estimatorrF   rF   rG   Ú_tested_estimators{   s    
rW   c              	   C   s0   t tttfd�� t| ƒ || ƒ W 5 Q R X d S ©N©Úcategory)r   ÚFutureWarningr   ÚUserWarningr1   ©rV   ÚcheckÚrequestrF   rF   rG   Útest_estimators…   s    r`   c                  C   s   t tƒ dd�} t| ƒst‚d S )NT)Zgenerate_only)r   r$   r   rB   )Zall_instance_gen_checksrF   rF   rG   Ú"test_check_estimator_generate_only�   s    ra   c               
   C   sÐ   t  d¡ t ¡ } tj tj tjd d¡¡}tj |d¡}tj 	|¡sRt  
d¡ zft |¡ tj}ddgt_t ¡ �: t dt¡ tdƒ�}t| ¡ tdd	�ƒ W 5 Q R X W 5 Q R X W 5 |t_t | ¡ X d S )
NÚCythonr   z..zsetup.pyzsetup.py not availableÚconfigÚignoreÚ__main__)Ú__name__)ÚpytestZimportorskipÚosÚgetcwdÚpathÚabspathÚjoinÚsklearnÚ__path__ÚexistsÚskipÚsysÚargvÚchdirÚwarningsÚcatch_warningsÚsimplefilterr\   ÚopenÚexecÚreadÚdict)ÚcwdZ
setup_pathZsetup_filenameZold_argvÚfrF   rF   rG   Útest_configure’   s     





,r}   c               	   c   sp   t dd�} tjdd��P | D ]D\}}t|dg ƒ}t|ƒr:qd|ƒ  ¡  ¡ krt|tƒr||fV  qW 5 Q R X d S )NÚ
classifierrT   T©ÚrecordZ_required_parametersrP   )	r   rt   ru   ÚgetattrÚlenÚ
get_paramsÚkeysÚ
issubclassr#   )ÚclassifiersrC   ZclazzZrequired_parametersrF   rF   rG   Ú_tested_linear_classifiers®   s    
 ÿr‡   zname, Classifierc                 C   s   t | |ƒ d S rJ   )r3   )rC   Ú
ClassifierrF   rF   rG   Ú-test_class_weight_balanced_linear_classifiers¾   s    r‰   c                  C   s�   t jtjddd„ d�} dd„ | D ƒ}|dg D ]\}d|kr<q.trRd	|ks.d
|krRq.t|dd�}t|ddƒD ]}t||ƒsjtd 	||¡ƒ‚qjq.d S )Núsklearn.c                 S   s   d S rJ   rF   ©Ú_rF   rF   rG   Ú<lambda>È   ó    z-test_import_all_consistency.<locals>.<lambda>)rj   ÚprefixÚonerrorc                 S   s   g | ]\}}}|‘qS rF   rF   )Ú.0rŒ   ÚmodnamerF   rF   rG   Ú
<listcomp>Ê   s     z/test_import_all_consistency.<locals>.<listcomp>rm   z.tests.Z_svmlight_format_ioz feature_extraction._hashing_fastÚdummy)ÚfromlistÚ__all__rF   z#Module '{0}' has no attribute '{1}')
ÚpkgutilÚwalk_packagesrm   rn   r+   Ú
__import__r�   ÚhasattrrB   r?   )ÚpkgsZsubmodsr’   ÚpackagerC   rF   rF   rG   Útest_import_all_consistencyÃ   s*      ÿÿþ ÿr�   c                  C   sR   d} t jtjdd„ d�D ]4\}}}d|ks| d¡s|| kr>q|tjkst‚qd S )N)ÚutilsÚtestsr>   ÚsetupZconftestc                 S   s   d S rJ   rF   r‹   rF   rF   rG   r�   Ý   rŽ   z3test_root_import_all_completeness.<locals>.<lambda>)rj   r�   Ú.rŒ   )r—   r˜   rm   rn   rA   r–   rB   )Z
EXCEPTIONSrŒ   r’   rF   rF   rG   Ú!test_root_import_all_completenessÚ   s     ÿr¢   c                     sb   t  d¡‰ dddh‰dd„ tjtjdd�D ƒ‰‡ ‡‡fd	d
„ˆ ¡ D ƒ} | g ks^td | ¡ƒ‚d S )NzÃ(?x)
                                      \.externals(\.|$)|
                                      \.tests(\.|$)|
                                      \._
                                      zsklearn.datasets.datazsklearn.datasets.descrzsklearn.datasets.imagesc                 S   s   i | ]\}}}||“qS rF   rF   )r‘   rŒ   rC   ÚispkgrF   rF   rG   Ú
<dictcomp>ô   s   ÿ z1test_all_tests_are_importable.<locals>.<dictcomp>rŠ   )r�   c                    s6   g | ].\}}|r|ˆkrˆ   |¡s|d  ˆkr|‘qS )z.tests)Úsearch)r‘   rC   r£   ©ZHAS_TESTS_EXCEPTIONSÚlookupZresource_modulesrF   rG   r“   ø   s   
ûz1test_all_tests_are_importable.<locals>.<listcomp>z{{0} do not have `tests` subpackages. Perhaps they require __init__.py or an add_subpackage directive in the parent setup.py)	ÚreÚcompiler—   r˜   rm   rn   ÚitemsrB   r?   )Zmissing_testsrF   r¦   rG   Útest_all_tests_are_importableä   s$    ÿýþþ
üÿr«   c               	   C   sN   d} t jt| d�� ttƒ W 5 Q R X t jt| d�� ttgƒ W 5 Q R X d S )Nz8Passing a class was deprecated.* isn't supported anymore)Úmatch)rg   ZraisesÚ	TypeErrorr   r$   r4   ©rE   rF   rF   rG   Útest_class_support_removed	  s
    r¯   c                  c   s  t ttttgtdddgiftdddgifgƒD ]P\} \}}t| ƒj}d|krTddini }| |ƒ |fddi|—Ž}t|ƒ |V  q.t tttt	gtd	ddgiftd
ddgifgƒD ]`\} \}}t| ƒj}d|krÔddini }| t
tƒ |ƒ ƒ|fddi|—Žjdd�}t|ƒ |V  q®d S )NÚalphagš™™™™™¹?ç      ð?rN   Zmin_resourcesÚsmallestZcvé   Zridge__alphaZlogisticregression__CÚraise)Zerror_score)r   r&   r(   r'   r%   r$   r   Ú
parametersr/   r)   r*   r   Ú
set_params)ZSearchCVrD   Z
param_gridZinit_paramsZextra_paramsZ	search_cvrF   rF   rG   Ú_generate_search_cv_instances  sR    üþù
ÿüþù
ÿ ÿÿÿþr·   c              	   C   s*   t ttttfd�� || ƒ W 5 Q R X d S rX   )r   r[   r   r\   r   r]   rF   rF   rG   Útest_search_cvA  s    üÿr¸   rV   )Zidsc                 C   sH   t | ƒ}| ¡ D ]2\}}tt| ƒ}|dkr4|tf}t||ƒst‚qdS )z$Check that estimator tags are valid.Z_xfail_checksN)r-   rª   Útyper,   rz   Ú
isinstancerB   )rV   ÚtagsrC   ÚtagZcorrect_tagsrF   rF   rG   Útest_valid_tag_typesQ  s    r½   c                 C   s   t | ƒ t| jj| ƒ d S rJ   )r1   r6   Ú	__class__rf   )rV   rF   rF   rG   Ú&test_check_n_features_in_after_fitting`  s    r¿   c                  c   s’   t ƒ D ]†} t|  ¡ ƒ}d|kr0| jddd�V  qd|krv| jddd�}|jjdkrntj|tjj	dd	�d
�V  qŒ|V  qd|kr| jdd�V  qd S )NÚ	oob_scoreT)rÀ   Z	bootstrapÚearly_stoppingrI   )rÁ   Ún_iter_no_change>   ÚMLPRegressorÚMLPClassifierzMLP still validates in fitr®   )ZmarksrÂ   )rÂ   )
rW   Úsetrƒ   r¶   r¾   rf   rg   ÚparamÚmarkÚxfail)rV   Z
est_paramsÚestrF   rF   rG   Ú_estimators_that_predict_in_fith  s    
 ÿ
rÊ   c              
   C   sd   t | ƒ ttd��H tjdd��}t| jj| ƒ W 5 Q R X |D ]}dt|j	ƒks>t
‚q>W 5 Q R X d S )NrY   Tr   z was fitted without feature names)r1   r   r[   rt   ru   r5   r¾   rf   ÚstrÚmessagerB   )rV   r€   ÚwarningrF   rF   rG   Ú#test_pandas_column_name_consistency‡  s     ÿrÎ   ZensembleZkernel_approximationc                 C   s&   t | dƒrdS | j d¡d }|tkS )NÚget_feature_names_outTr¡   rI   )rš   Ú
__module__ÚsplitÚ"GET_FEATURES_OUT_MODULES_TO_IGNORE)ÚtransformerÚmodulerF   rF   rG   Ú'_include_in_get_feature_names_out_check�  s    
rÕ   c                 C   s   g | ]}t |ƒr|‘qS rF   )rÕ   ©r‘   rÉ   rF   rF   rG   r“   ¤  s   þr“   rÓ   c              	   C   s>   t | ƒ ttd��" t| jj| ƒ t| jj| ƒ W 5 Q R X d S rX   )r1   r   r[   r8   r¾   rf   r9   )rÓ   rF   rF   rG   Ú'test_transformers_get_feature_names_out«  s     ÿ ÿr×   c                 C   s   g | ]}t |d ƒr|‘qS )rÏ   )rš   rÖ   rF   rF   rG   r“   º  s    
 ZAdditiveChi2SamplerZ	BinarizerZDictVectorizerZGaussianRandomProjectionZGenericUnivariateSelectZIterativeImputerZIsotonicRegressionZKBinsDiscretizerZ
KNNImputerZMaxAbsScalerr!   ZMissingIndicatorZ
NormalizerZOrdinalEncoderZPowerTransformerZQuantileTransformerZRFEZRFECVZRobustScalerZ	SelectFdrZ	SelectFprZSelectFromModelZ	SelectFweZSelectKBestZSelectPercentileZSequentialFeatureSelectorZSimpleImputerZSparseRandomProjectionZSplineTransformerZStackingClassifierZStackingRegressorr    ZTfidfTransformerZVarianceThresholdZVotingClassifierZVotingRegressorc                 C   s8   | j j}|tkr"tj|› d�d�S t| ƒ t|| ƒ d S )Nz0 is not failing with a consistent NotFittedError)Úreason)r¾   rf   ÚWHITELISTED_FAILING_ESTIMATORSrg   rÈ   r1   r=   )rV   Zestimator_namerF   rF   rG   Ú+test_estimators_get_feature_names_out_erroræ  s    ÿrÚ   rD   c                 C   s   g | ]\}}|‘qS rF   rF   )r‘   rC   rÉ   rF   rF   rG   r“   õ  s     c                    s^   t | ƒj}dddt ddg¡dgi g g}|D ],‰ ‡ fdd„|D ƒ}| f |Ž}|jf |Ž q,d	S )
z3Check that init or set_param does not raise errors.éÿÿÿÿg      @Z
helloworldr±   g      @rI   c                    s   i | ]
}|ˆ “qS rF   rF   )r‘   Úkey©ÚvaluerF   rG   r¤   ý  s      zMtest_estimators_do_not_raise_errors_in_init_or_set_params.<locals>.<dictcomp>N)r   rµ   ÚnpÚarrayr¶   )rD   ÚparamsZsmoke_test_valuesÚ
new_paramsrÉ   rF   rÝ   rG   Ú9test_estimators_do_not_raise_errors_in_init_or_set_paramsó  s    

rã   c                 C   s   | j j}t| ƒ t|| ƒ d S rJ   )r¾   rf   r1   r7   ©rV   rC   rF   rF   rG   Útest_check_param_validation  s    rå   c                 C   sp   t dddd�\}}t |¡}t |d d …df ¡}| ƒ }| ||¡ t|dƒrX| |¡ t|dƒrl| |¡ d S )NéP   é   r   )Z	n_samplesZ
n_featuresrO   Ú	transformÚpredict)r   rß   ZasfortranarrayÚroundÚfitrš   rè   ré   )rD   ÚXrŒ   rL   rÉ   rF   rF   rG   Ú!test_f_contiguous_array_estimator  s    



rí   F)Zsparse_outputz
one-to-one)Zfeature_names_outc              	   C   sT   | j j}t| dƒs$t d|› d�¡ t| ƒ ttd�� t| j j| ƒ W 5 Q R X d S )NÚ
set_outputz(Skipping check_set_output_transform for z!: Does not support set_output APIrY   )	r¾   rf   rš   rg   rp   r1   r   r[   r:   rä   rF   rF   rG   Útest_set_output_transformB  s    

ÿrï   c              	   C   sT   | j j}t| dƒs$t d|› d�¡ t| ƒ ttd�� t| j j| ƒ W 5 Q R X d S )Nrî   z/Skipping check_set_output_transform_pandas for ú%: Does not support set_output API yetrY   )	r¾   rf   rš   rg   rp   r1   r   r[   r;   rä   rF   rF   rG   Ú test_set_output_transform_pandasQ  s    

ÿrñ   c              	   C   sT   | j j}t| dƒs$t d|› d�¡ t| ƒ ttd�� t| j j| ƒ W 5 Q R X d S )Nrî   z2Skipping check_global_ouptut_transform_pandas for rð   rY   )	r¾   rf   rš   rg   rp   r1   r   r[   r<   rä   rF   rF   rG   Ú#test_global_output_transform_pandas`  s    

ÿrò   )rI   )N)Ú__doc__rh   rt   rq   r¨   r—   Úinspectr   r   Ú	itertoolsr   r   Ú	functoolsr   rg   Únumpyrß   Zsklearn.clusterr   r   r	   r
   r   Zsklearn.datasetsr   Zsklearn.manifoldr   r   r   Zsklearn.neighborsr   r   r   r   r   Zsklearn.preprocessingr   Zsklearn.semi_supervisedr   r   Zsklearn.utilsr   Zsklearn.utils._testingr   Zsklearn.exceptionsr   r   Zsklearn.utils.estimator_checksr   rm   Zsklearn.experimentalr   r   Zsklearn.decompositionr   r    r!   r"   Zsklearn.linear_model._baser#   Zsklearn.linear_modelr$   r%   Zsklearn.model_selectionr&   r'   r(   r)   Zsklearn.pipeliner*   r+   Zsklearn.utils._tagsr,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   rH   rM   rÇ   ZparametrizerS   rW   Úlistr`   ra   r}   r‡   r‰   r�   r¢   r«   r¯   r·   r¸   r½   r¿   rÊ   Zcolumn_name_estimatorsrÎ   rÒ   rÕ   ZGET_FEATURES_OUT_ESTIMATORSr×   Z%ESTIMATORS_WITH_GET_FEATURE_NAMES_OUTrÙ   rÚ   rã   rå   rí   ZSET_OUTPUT_ESTIMATORSrï   rñ   rò   rF   rF   rF   rG   Ú<module>   s²  @	
üùûþ






%,
  ÿ
  ÿ
üÿ
  ÿ
þþ  ÿ
ÿÜ(  ÿ

þ
  ÿ
ñþ
ýþÿ  ÿ
  ÿ
  ÿ