U
    9%eK                     @   s  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 ddlm	Z	m
Z
 ddlmZmZ ddl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 dd	lmZ dd
lmZm Z  ddl!m"Z"m#Z# ddl$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/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZAmBZB ddlCmDZDmEZE ddlFmGZGmHZH ddlImJZJmKZKmLZL ddlMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\ dd Z]dpd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&d'd(fgd)d* Zadqd+d,Zbd-d. Zce\edeeb ec d/d0 Zed1d2 Zfd3d4 Zgd5d6 Zhej_`d7eh d8d9 ZieKd:d; Zjd<d= Zkd>d? Zld@dA ZmdBdC ZndDdE Zoe\edeo dFdG Zpej_j`dHeb eOdIdJdK Zqej_j`dHeb eOdIdLdM ZrdNdO Zsedeeb e:e%dd"gedeo es Ztej_j`dHeteOdIdPdQ ZudRdSgZvdTdU ZwdVdW ebdXD Zxej_j`dXexeOdIdYdZ Zyd[dW eb D Zzej_j`dHezeOdId\d] Z{ej_`d^d_dW eE D d`da Z|ej_j`dHeeb ec en eo eOdIdbdc Z}ej_`d^eeee3e4e6e7eAeBeee5e,e+e*gddde Z~edeebdXe:e? e= e>dfdge<dhdigZej_j`dHeeOdIdjdk Zej_j`dHeeOdIdldm Zej_j`dHeeOdIdndo ZdS )rz.
General tests for all estimators in sklearn.
    N)partial)isgenerator	signature)chainproduct)OPTICSAffinityPropagationBirch	MeanShiftSpectralClustering)ColumnTransformer)
make_blobs)PCA)ConvergenceWarningFitFailedWarning)enable_halving_search_cvenable_iterative_imputer)LogisticRegressionRidge)LinearClassifierMixin)TSNEIsomapLocallyLinearEmbedding)GridSearchCVHalvingGridSearchCVHalvingRandomSearchCVRandomizedSearchCV)KNeighborsClassifierKNeighborsRegressorLocalOutlierFactorRadiusNeighborsClassifierRadiusNeighborsRegressor)Pipelinemake_pipeline)FunctionTransformerMinMaxScalerOneHotEncoderStandardScaler)LabelPropagationLabelSpreading)IS_PYPYall_estimators)_DEFAULT_TAGS
_safe_tags)SkipTestignore_warningsset_random_state)_construct_instance_get_check_estimator_ids_set_checking_parameters-check_class_weight_balanced_linear_classifier(check_dataframe_column_names_consistencycheck_estimator!check_get_feature_names_out_error$check_global_output_transform_pandas!check_n_features_in_after_fittingcheck_param_validationcheck_set_output_transform!check_set_output_transform_pandas'check_transformer_get_feature_names_out.check_transformer_get_feature_names_out_pandasparametrize_with_checksc                  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 rH   X/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sklearn/tests/test_common.py test_all_estimator_no_base_classY   s    rJ      c                 C   s   d S NrH   )xyrH   rH   rI   _sample_funcb   s    rO   zval, expected)rN   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 rL   )r2   rD   )valexpectedrH   rH   rI   test_get_check_estimator_idsf   s    rU   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+   r1   r.   )rW   rE   rF   	estimatorrH   rH   rI   _tested_estimators   s    
rY   c                  c   s0   t  t fD ]} tdt fd| fgdV  qd S )NZscalerfinal_estimator)Zsteps)r   r   r"   r'   )rZ   rH   rH   rI   _generate_pipeline   s    r[   c              	   C   s0   t tttfd t|  ||  W 5 Q R X d S Ncategory)r/   FutureWarningr   UserWarningr3   rX   checkrequestrH   rH   rI   test_estimators   s    rd   c                  C   s   t t dd} t| std S )NT)Zgenerate_only)r6   r   r   rD   )Zall_instance_gen_checksrH   rH   rI   "test_check_estimator_generate_only   s    re   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frH   rH   rI   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
classifierrV   TrecordZ_required_parametersrR   )	r+   rx   ry   getattrlen
get_paramskeys
issubclassr   )classifiersrE   ZclazzZrequired_parametersrH   rH   rI   _tested_linear_classifiers   s    
 r   zname, Classifierc                 C   s   t | | d S rL   )r4   )rE   
ClassifierrH   rH   rI   -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 ]f}d|kr<q.d	|krFq.tr\d
|ks.d|kr\q.t|dd}t|ddD ]}t||sttd	||qtq.d S )Nsklearn.c                 S   s   d S rL   rH   _rH   rH   rI   <lambda>       z-test_import_all_consistency.<locals>.<lambda>)rn   prefixonerrorc                 S   s   g | ]\}}}|qS rH   rH   ).0r   modnamerH   rH   rI   
<listcomp>   s     z/test_import_all_consistency.<locals>.<listcomp>rq   z.tests.zsklearn._build_utilsZ_svmlight_format_ioz feature_extraction._hashing_fastdummy)fromlist__all__rH   z#Module '{0}' has no attribute '{1}')
pkgutilwalk_packagesrq   rr   r*   
__import__r   hasattrrD   rA   )pkgsZsubmodsr   packagerE   rH   rH   rI   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 rL   rH   r   rH   rH   rI   r      r   z3test_root_import_all_completeness.<locals>.<lambda>)rn   r   .r   )r   r   rq   rr   rC   r   rD   )Z
EXCEPTIONSr   r   rH   rH   rI   !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 rH   rH   )r   r   rE   ispkgrH   rH   rI   
<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   rE   r   ZHAS_TESTS_EXCEPTIONSlookupZresource_modulesrH   rI   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   rq   rr   itemsrD   rA   )Zmissing_testsrH   r   rI   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)rk   Zraises	TypeErrorr6   r   r?   rG   rH   rH   rI   test_class_support_removed  s
    r   c                   c   s   t dt ddgfgdV  d S )NZtrans1r   rK   )Ztransformers)r   r'   rH   rH   rH   rI   &_generate_column_transformer_instances$  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rddini }| t
t | |fddi|jdd}t| |V  qd S )Nalphag?      ?rP   Zmin_resourcessmallestZcv   Zridge__alphaZlogisticregression__Craise)Zerror_score)r   r   r   r   r   r   r   
parametersr0   r   r#   r   
set_params)ZSearchCVrF   Z
param_gridZinit_paramsZextra_paramsZ	search_cvrH   rH   rI   _generate_search_cv_instances,  sR    

 r   c              	   C   s*   t ttttfd ||  W 5 Q R X d S r\   )r/   r_   r   r`   r   ra   rH   rH   rI   test_search_cvX  s    r   rX   )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,   r~   
isinstancerD   )rX   tagsrE   tagZcorrect_tagsrH   rH   rI   test_valid_tag_typesh  s    r   c                 C   s   t |  t| jj|  d S rL   )r3   r9   	__class__rj   )rX   rH   rH   rI   &test_check_n_features_in_after_fittingw  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_stoppingrK   )r   n_iter_no_change>   MLPClassifierMLPRegressorzMLP still validates in fitr   )Zmarksr   )r   )
rY   setr   r   r   rj   rk   parammarkZxfail)rX   Z
est_paramsestrH   rH   rI   _estimators_that_predict_in_fit  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 )Nr]   Tr   z was fitted without feature names)r3   r/   r_   rx   ry   r5   r   rj   strmessagerD   )rX   r   warningrH   rH   rI   #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   rK   )r   
__module__split"GET_FEATURES_OUT_MODULES_TO_IGNORE)transformermodulerH   rH   rI   '_include_in_get_feature_names_out_check  s    
r   c                 C   s   g | ]}t |r|qS rH   )r   r   r   rH   rH   rI   r     s   r   r   c              	   C   s>   t |  ttd" t| jj|  t| jj|  W 5 Q R X d S r\   )r3   r/   r_   r=   r   rj   r>   )r   rH   rH   rI   'test_transformers_get_feature_names_out  s      r   c                 C   s   g | ]}t |d r|qS )r   )r   r   rH   rH   rI   r     s    
 c                 C   s   | j j}t|  t||  d S rL   )r   rj   r3   r7   )rX   Zestimator_namerH   rH   rI   +test_estimators_get_feature_names_out_error  s    r   rF   c                 C   s   g | ]\}}|qS rH   rH   )r   rE   r   rH   rH   rI   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      @rK   c                    s   i | ]
}| qS rH   rH   )r   keyvaluerH   rI   r     s      zMtest_estimators_do_not_raise_errors_in_init_or_set_params.<locals>.<dictcomp>N)r   r   nparrayr   )rF   paramsZsmoke_test_values
new_paramsr   rH   r   rI   9test_estimators_do_not_raise_errors_in_init_or_set_params  s    

r   c                 C   s   | j j}t|  t||  d S rL   )r   rj   r3   r:   rX   rE   rH   rH   rI   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 )NP      r   )Z	n_samplesZ
n_featuresrQ   	transformpredict)r   r   Zasfortranarrayroundfitr   r   r   )rF   Xr   rN   r   rH   rH   rI   !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 APIr]   )	r   rj   r   rk   rt   r3   r/   r_   r;   r   rH   rH   rI   test_set_output_transform5  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 yetr]   )	r   rj   r   rk   rt   r3   r/   r_   r<   r   rH   rH   rI    test_set_output_transform_pandasD  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_output_transform_pandas for r   r]   )	r   rj   r   rk   rt   r3   r/   r_   r8   r   rH   rH   rI   #test_global_output_transform_pandasS  s    

r   )rK   )N)__doc__rl   r   r   ru   rx   	functoolsr   inspectr   r   	itertoolsr   r   numpyr   rk   rq   Zsklearn.clusterr   r   r	   r
   r   Zsklearn.composer   Zsklearn.datasetsr   Zsklearn.decompositionr   Zsklearn.exceptionsr   r   Zsklearn.experimentalr   r   Zsklearn.linear_modelr   r   Zsklearn.linear_model._baser   Zsklearn.manifoldr   r   r   Zsklearn.model_selectionr   r   r   r   Zsklearn.neighborsr   r   r   r    r!   Zsklearn.pipeliner"   r#   Zsklearn.preprocessingr$   r%   r&   r'   Zsklearn.semi_supervisedr(   r)   Zsklearn.utilsr*   r+   Zsklearn.utils._tagsr,   r-   Zsklearn.utils._testingr.   r/   r0   Zsklearn.utils.estimator_checksr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   rJ   rO   r   ZparametrizerU   rY   r[   listrd   re   r   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   ZSET_OUTPUT_ESTIMATORSr   r   r   rH   rH   rH   rI   <module>   sd  D	








#,
  
  

  
  
  




  
  
  