a
    ;ZaD                     @   s  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Zd dlm	Z	 d dl
Z
edZg dZeeZdd Zd	d
 Zdd Zd'ddZd(ee edddZejde dd Zejde dd Zedkrd dlZd dlZejddZejddd e Z e!e j"Z#e j"$dZ%e&e%dkrTe 'd e%d! rTe%d" Z(ndZ(e)ee#d# e(e#d#< e#d# ree#e j"d$Z*e+e* e,d% ne+d&-e j" dS ))    N)	signature)Optional)all_estimatorsznumpydoc.validate)z'sklearn.cluster._kmeans.kmeans_plusplusz)sklearn.cluster._optics.cluster_optics_xiz,sklearn.cluster._optics.compute_optics_graphz-sklearn.cluster._spectral.spectral_clusteringz;sklearn.compose._column_transformer.make_column_transformerz/sklearn.covariance._graph_lasso.graphical_lassoz.sklearn.covariance._robust_covariance.fast_mcdz1sklearn.covariance._shrunk_covariance.ledoit_wolfz;sklearn.covariance._shrunk_covariance.ledoit_wolf_shrinkagez7sklearn.covariance._shrunk_covariance.shrunk_covariancez$sklearn.datasets._base.get_data_homez"sklearn.datasets._base.load_bostonz)sklearn.datasets._base.load_breast_cancerz"sklearn.datasets._base.load_digitsz$sklearn.datasets._base.load_linnerudz(sklearn.datasets._base.load_sample_imagez sklearn.datasets._base.load_winez=sklearn.datasets._california_housing.fetch_california_housingz'sklearn.datasets._covtype.fetch_covtypez)sklearn.datasets._kddcup99.fetch_kddcup99z%sklearn.datasets._lfw.fetch_lfw_pairsz&sklearn.datasets._lfw.fetch_lfw_peoplez5sklearn.datasets._olivetti_faces.fetch_olivetti_facesz%sklearn.datasets._openml.fetch_openmlz!sklearn.datasets._rcv1.fetch_rcv1z3sklearn.datasets._samples_generator.make_biclustersz.sklearn.datasets._samples_generator.make_blobsz5sklearn.datasets._samples_generator.make_checkerboardz7sklearn.datasets._samples_generator.make_classificationz;sklearn.datasets._samples_generator.make_gaussian_quantilesz4sklearn.datasets._samples_generator.make_hastie_10_2zBsklearn.datasets._samples_generator.make_multilabel_classificationz3sklearn.datasets._samples_generator.make_regressionz<sklearn.datasets._samples_generator.make_sparse_coded_signalz:sklearn.datasets._samples_generator.make_sparse_spd_matrixz3sklearn.datasets._samples_generator.make_spd_matrixzCsklearn.datasets._species_distributions.fetch_species_distributionsz7sklearn.datasets._svmlight_format_io.dump_svmlight_filez7sklearn.datasets._svmlight_format_io.load_svmlight_filez8sklearn.datasets._svmlight_format_io.load_svmlight_filesz6sklearn.datasets._twenty_newsgroups.fetch_20newsgroupsz2sklearn.decomposition._dict_learning.dict_learningz9sklearn.decomposition._dict_learning.dict_learning_onlinez2sklearn.decomposition._dict_learning.sparse_encodez&sklearn.decomposition._fastica.fasticaz5sklearn.decomposition._nmf.non_negative_factorizationz*sklearn.externals._packaging.version.parsez3sklearn.feature_extraction.image.extract_patches_2dz.sklearn.feature_extraction.image.grid_to_graphz-sklearn.feature_extraction.image.img_to_graphz3sklearn.feature_extraction.text.strip_accents_asciiz5sklearn.feature_extraction.text.strip_accents_unicodez*sklearn.feature_extraction.text.strip_tagsz4sklearn.feature_selection._univariate_selection.chi2z8sklearn.feature_selection._univariate_selection.f_onewayz<sklearn.feature_selection._univariate_selection.r_regressionz9sklearn.inspection._partial_dependence.partial_dependencezCsklearn.inspection._plot.partial_dependence.plot_partial_dependencez$sklearn.isotonic.isotonic_regressionz+sklearn.linear_model._least_angle.lars_pathz0sklearn.linear_model._least_angle.lars_path_gramz'sklearn.linear_model._omp.orthogonal_mpz,sklearn.linear_model._omp.orthogonal_mp_gramz,sklearn.linear_model._ridge.ridge_regressionz9sklearn.manifold._locally_linear.locally_linear_embeddingz'sklearn.manifold._t_sne.trustworthinessz0sklearn.metrics._classification.brier_score_lossz5sklearn.metrics._classification.classification_reportz1sklearn.metrics._classification.cohen_kappa_scorez(sklearn.metrics._classification.f1_scorez+sklearn.metrics._classification.fbeta_scorez*sklearn.metrics._classification.hinge_lossz-sklearn.metrics._classification.jaccard_scorez(sklearn.metrics._classification.log_lossz?sklearn.metrics._classification.precision_recall_fscore_supportz<sklearn.metrics._plot.confusion_matrix.plot_confusion_matrixz.sklearn.metrics._plot.det_curve.plot_det_curvezHsklearn.metrics._plot.precision_recall_curve.plot_precision_recall_curvezsklearn.metrics._ranking.aucz0sklearn.metrics._ranking.average_precision_scorez'sklearn.metrics._ranking.coverage_errorz"sklearn.metrics._ranking.dcg_scorez>sklearn.metrics._ranking.label_ranking_average_precision_scorez+sklearn.metrics._ranking.label_ranking_lossz#sklearn.metrics._ranking.ndcg_scorez/sklearn.metrics._ranking.precision_recall_curvez&sklearn.metrics._ranking.roc_auc_scorez"sklearn.metrics._ranking.roc_curvez-sklearn.metrics._ranking.top_k_accuracy_scorez/sklearn.metrics._regression.mean_absolute_errorz-sklearn.metrics._regression.mean_pinball_lossz#sklearn.metrics._scorer.make_scorerz2sklearn.metrics.cluster._bicluster.consensus_scorez>sklearn.metrics.cluster._supervised.adjusted_mutual_info_scorez7sklearn.metrics.cluster._supervised.adjusted_rand_scorez6sklearn.metrics.cluster._supervised.completeness_scorez+sklearn.metrics.cluster._supervised.entropyz9sklearn.metrics.cluster._supervised.fowlkes_mallows_scorezFsklearn.metrics.cluster._supervised.homogeneity_completeness_v_measurez5sklearn.metrics.cluster._supervised.homogeneity_scorez5sklearn.metrics.cluster._supervised.mutual_info_scorez@sklearn.metrics.cluster._supervised.normalized_mutual_info_scorez9sklearn.metrics.cluster._supervised.pair_confusion_matrixz.sklearn.metrics.cluster._supervised.rand_scorez3sklearn.metrics.cluster._supervised.v_measure_scorez-sklearn.metrics.pairwise.additive_chi2_kernelz,sklearn.metrics.pairwise.check_paired_arraysz.sklearn.metrics.pairwise.check_pairwise_arraysz$sklearn.metrics.pairwise.chi2_kernelz)sklearn.metrics.pairwise.cosine_distancesz*sklearn.metrics.pairwise.cosine_similarityz)sklearn.metrics.pairwise.distance_metricsz,sklearn.metrics.pairwise.haversine_distancesz'sklearn.metrics.pairwise.kernel_metricsz)sklearn.metrics.pairwise.laplacian_kernelz,sklearn.metrics.pairwise.manhattan_distancesz0sklearn.metrics.pairwise.nan_euclidean_distancesz0sklearn.metrics.pairwise.paired_cosine_distancesz)sklearn.metrics.pairwise.paired_distancesz3sklearn.metrics.pairwise.paired_euclidean_distancesz3sklearn.metrics.pairwise.paired_manhattan_distancesz2sklearn.metrics.pairwise.pairwise_distances_argminz6sklearn.metrics.pairwise.pairwise_distances_argmin_minz3sklearn.metrics.pairwise.pairwise_distances_chunkedz)sklearn.metrics.pairwise.pairwise_kernelsz*sklearn.metrics.pairwise.polynomial_kernelz#sklearn.metrics.pairwise.rbf_kernelz'sklearn.metrics.pairwise.sigmoid_kernelz'sklearn.model_selection._split.check_cvz2sklearn.model_selection._validation.cross_validatez2sklearn.model_selection._validation.learning_curvez:sklearn.model_selection._validation.permutation_test_scorez4sklearn.model_selection._validation.validation_curvez)sklearn.neighbors._graph.kneighbors_graphz/sklearn.neighbors._graph.radius_neighbors_graphzsklearn.pipeline.make_unionz$sklearn.preprocessing._data.binarizez(sklearn.preprocessing._data.maxabs_scalez%sklearn.preprocessing._data.normalizez+sklearn.preprocessing._data.power_transformz.sklearn.preprocessing._data.quantile_transformz(sklearn.preprocessing._data.robust_scalez!sklearn.preprocessing._data.scalez+sklearn.preprocessing._label.label_binarizez7sklearn.random_projection.johnson_lindenstrauss_min_dimzsklearn.svm._bounds.l1_min_czsklearn.tree._export.plot_treezsklearn.utils.axis0_safe_slicezsklearn.utils.extmath.densityz!sklearn.utils.extmath.fast_logdetz$sklearn.utils.extmath.randomized_svdz%sklearn.utils.extmath.safe_sparse_dotz"sklearn.utils.extmath.squared_normz#sklearn.utils.extmath.stable_cumsumzsklearn.utils.extmath.svd_flipz#sklearn.utils.extmath.weighted_modezsklearn.utils.fixes.delayedzsklearn.utils.fixes.linspacez#sklearn.utils.fixes.threadpool_infoz%sklearn.utils.fixes.threadpool_limitszsklearn.utils.gen_batcheszsklearn.utils.gen_even_sliceszsklearn.utils.get_chunk_n_rowsz'sklearn.utils.graph.graph_shortest_pathz6sklearn.utils.graph.single_source_shortest_path_lengthzsklearn.utils.is_scalar_nanz)sklearn.utils.metaestimators.available_ifz3sklearn.utils.metaestimators.if_delegate_has_methodz5sklearn.utils.multiclass.check_classification_targetsz+sklearn.utils.multiclass.class_distributionz'sklearn.utils.multiclass.type_of_targetz&sklearn.utils.multiclass.unique_labelszsklearn.utils.resamplezsklearn.utils.safe_maskzsklearn.utils.safe_sqrzsklearn.utils.shufflez'sklearn.utils.sparsefuncs.count_nonzeroz+sklearn.utils.sparsefuncs.csc_median_axis_0z1sklearn.utils.sparsefuncs.incr_mean_variance_axisz-sklearn.utils.sparsefuncs.inplace_swap_columnz*sklearn.utils.sparsefuncs.inplace_swap_rowz.sklearn.utils.sparsefuncs.inplace_swap_row_cscz.sklearn.utils.sparsefuncs.inplace_swap_row_csrz,sklearn.utils.sparsefuncs.mean_variance_axisz&sklearn.utils.sparsefuncs.min_max_axiszsklearn.utils.tosequencez*sklearn.utils.validation.assert_all_finitez(sklearn.utils.validation.check_is_fittedz%sklearn.utils.validation.check_memoryz+sklearn.utils.validation.check_random_statec                  c   s   t  } | D ]\}}|drq
g }t|D ]8}|dr:q*t||}t|dsXt|tr*|| q*|d  t|dd dD ]}||fV  q~q
d S )N___call__c                 S   s   t | S N)str)x r
   <lib/python3.9/site-packages/sklearn/tests/test_docstrings.py<lambda>       z!get_all_methods.<locals>.<lambda>)key)	r   
startswithdirgetattrhasattr
isinstancepropertyappendsorted)Z
estimatorsname	Estimatormethods
method_objmethodr
   r
   r   get_all_methods   s    



r   c                 C   s@   t | sdS | jdrdS | j}|dr8|dr<dS dS )NFr   sklearn.estimator_checksT)inspectZ
isfunction__name__r   
__module__endswith)itemmodr
   r
   r   _is_checked_function   s    
r%   c            
         s   h d t  } tjtjddD ]t\}}}|d}t fdd|D sd|v rRqt|}t	
|t}|D ]$\}}|j d|j }	| |	 qlqt| S )z5Get all public functions define in the sklearn module>   ZtestsZconftestZ	externalsZexperimentalr   Zsetupr   )pathprefix.c                 3   s   | ]}| v V  qd S r   r
   ).0partZmodules_to_ignorer
   r   	<genexpr>  r   z*get_all_functions_names.<locals>.<genexpr>z._)setpkgutilwalk_packagessklearn__path__splitany	importlibimport_moduler   Z
getmembersr%   r!   r    addr   )
Zall_functions_namesmodule_finderZmodule_nameispkgZmodule_partsmoduleZ	functionsr   funcZ	full_namer
   r+   r   get_all_functions_names   s"    	

r;   c                 c   sf   | D ]\\}}|dv rq|dkrD|durD|durDt ||}t|trDq|durV|dv rVq||fV  qdS )za
    Ignore some errors based on the method type.

    These rules are specific for scikit-learn.)ZRT02ZGL01ZGL02ZPR02N)ZEX01ZSA01ZES01)r   r   r   )errorsr   r   codemessager   r
   r
   r   filter_errors  s    

r?   )r   returnc                 C   s   |du r.t |drd}n|du r*tdnt|durxt||}ztt|}W n tyf   d}Y n0 |jd | }nd}|}ddt| d || | d	 d
ddd | d D g }|S )ay  Pretty print original docstring and the obtained errors

    Parameters
    ----------
    res : dict
        result of numpydoc.validate.validate
    estimator : {estimator, None}
        estimator object or None
    method : str
        if estimator is not None, either the method name or None.

    Returns
    -------
    str
       String representation of the error.
    N__init__z4At least one of estimator, method should be providedzM
Parsing of the method signature failed, possibly because this is a property.r(    z

fileZ	docstringz# Errors
c                 s   s   | ]\}}d  ||V  qdS )z	 - {}: {}N)format)r)   r=   r>   r
   r
   r   r,   i  s   zrepr_errors.<locals>.<genexpr>r<   )	r   
ValueErrorNotImplementedErrorr   r   r   	TypeErrorr    join)resZ	estimatorr   objZobj_signatureZobj_namemsgr
   r
   r   repr_errors:  s6    




rM   function_namec                 C   sf   | t v r|tjjddd t| }tt|d dd|d< |d rbt	|d|  d}t
|dS )	z)Check function docstrings using numpydoc.FzTODO pass numpydoc validation)runreasonr<   Zfunctionr   zTested function: N)FUNCTION_DOCSTRING_IGNORE_LISTZapplymarkerpytestmarkZxfailnumpydoc_validationvalidatelistr?   rM   rF   )rN   requestrJ   rL   r
   r
   r   test_function_docstringq  s    
rY   zEstimator, methodc                 C   sp   | j }|| jg}|d ur"|| d|}t|}tt|d || d|d< |d rlt|| |}t	|d S )Nr(   r<   )r   )
r!   r    r   rI   rU   rV   rW   r?   rM   rF   )r   r   rX   Zbase_import_pathimport_pathrJ   rL   r
   r
   r   test_docstring  s    



r[   __main__z!Validate docstring with numpydoc.)ZdescriptionrZ   zImport path to validate)helpr(      z(?:[A-Z][a-z]*)+r<   rQ      z#All docstring checks passed for {}!)N)NN).rer   r   r.   r4   typingr   rS   Zsklearn.utilsr   r0   ZimportorskiprU   rR   r-   r   r%   r;   r?   r   rM   rT   ZparametrizerY   r[   r    sysargparseArgumentParserparseradd_argument
parse_argsargsrV   rZ   rJ   r2   Zimport_path_sectionslenmatchr   rW   rL   printexitrE   r
   r
   r
   r   <module>   sP   
 C
'7




