B
    	\                 @   s  d Z ddlmZ ddlZddl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 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ddlmZ ddlmZ ddlmZ ddlmZmZmZmZm Z  dd Z!dd Z"e	j#$dedddd Z%dd Z&dd Z'dd Z(e	j#j$de'ee& e(dd d! Z)e	j#$de& d"d# Z*ee+d$d%d& Z,d'd( Z-e	j#$d)e- d*d+ Z.ed,d- Z/d.d/ Z0d0d1 Z1dS )2z.
General tests for all estimators in sklearn.
    )print_functionN)assert_falseclean_warning_registry)all_estimators)assert_equal)assert_greater)	assert_in)ignore_warnings)ConvergenceWarning)BiclusterMixin)LinearClassifierMixin)IS_PYPY)_yield_all_checksset_checking_parameters&check_parameters_default_constructiblecheck_no_attributes_set_in_init-check_class_weight_balanced_linear_classifierc              C   s8   x2t  D ](\} }d| }t|  d|d qW d S )NzDBase estimators such as {0} should not be included in all_estimatorsbase)msg)r   formatr   lower
startswith)name	Estimatorr    r   8lib/python3.7/site-packages/sklearn/tests/test_common.py test_all_estimator_no_base_class(   s    r   c              C   s   t dd} tt| d d S )NT)include_meta_estimatorsr   )r   r   len)
estimatorsr   r   r   test_all_estimators0   s    
r    zname, EstimatorT)r   c             C   s   t | | d S )N)r   )r   r   r   r   r   %test_parameters_default_constructible8   s    r!   c              c   s:   x4t  D ]*\} }t|trq| dr(q| |fV  qW d S )N_)r   
issubclassr   r   )r   r   r   r   r   _tested_non_meta_estimatorsA   s    

r$   c          	   c   sV   t ttfd> x6|D ].\}}| }x| ||D ]}|||fV  q0W qW W d Q R X d S )N)category)r	   DeprecationWarningFutureWarning)Zcheck_generatorr   r   r   	estimatorcheckr   r   r   _generate_checks_per_estimatorJ   s
    r*   c             C   s:   t | tjr6ddd | j D }d| jj|S d S )N c             S   s   g | ]\}}d  ||qS )z{}={})r   ).0kvr   r   r   
<listcomp>T   s   z#_rename_partial.<locals>.<listcomp>z{}({}))	
isinstance	functoolspartialjoinkeywordsitemsr   func__name__)valZkwstringr   r   r   _rename_partialR   s    
r9   zname, Estimator, check)Zidsc          	   C   s:   t ttttfd | }t| || | W d Q R X d S )N)r%   )r	   r&   r
   UserWarningr'   r   )r   r   r)   r(   r   r   r   test_non_meta_estimatorsY   s
    r;   c          	   C   s2   t ttttfd | }t| | W d Q R X d S )N)r%   )r	   r&   r
   r:   r'   r   )r   r   r(   r   r   r   test_no_attributes_set_in_inith   s    r<   )r%   c           
   C   s   t  } t jt jtjd d}t j|d}t j|sBd S zlt | t	j
}ddgt	_
t  t : tdt td}t| tdd W d Q R X W d Q R X W d |t	_
t |  X d S )Nr   z..zsetup.pyZconfigignore__main__)r7   )osgetcwdpathabspathr3   sklearn__path__existschdirsysargvr   warningscatch_warningssimplefilterr:   openexecreaddict)cwdZ
setup_pathZsetup_filenameZold_argvfr   r   r   test_configures   s     



,rR   c           	   c   sd   t dd} t  tjdd> x6| D ].\}}d|   kr$t|tr$||fV  q$W W d Q R X d S )NZ
classifier)Ztype_filterT)recordZclass_weight)r   r   rI   rJ   Z
get_paramskeysr#   r   )Zclassifiersr   Zclazzr   r   r   _tested_linear_classifiers   s    

rU   zname, Classifierc             C   s   t | | d S )N)r   )r   Z
Classifierr   r   r   -test_class_weight_balanced_linear_classifiers   s    rV   c              C   s   t jtjddd d} dd | D }xt|dg D ]f}d|kr>q0trTd	|ks0d
|krTq0t|dd}x4t|ddD ]$}t||d d krntd||qnW q0W d S )Nzsklearn.c             S   s   d S )Nr   )r"   r   r   r   <lambda>   s    z-test_import_all_consistency.<locals>.<lambda>)rA   prefixonerrorc             S   s   g | ]\}}}|qS r   r   )r,   r"   modnamer   r   r   r/      s    z/test_import_all_consistency.<locals>.<listcomp>rC   z.tests.Z_svmlight_formatzfeature_extraction._hashingZdummy)fromlist__all__r   z#Module '{0}' has no attribute '{1}')	pkgutilwalk_packagesrC   rD   r   
__import__getattrAttributeErrorr   )ZpkgsZsubmodsrZ   packager   r   r   r   test_import_all_consistency   s    
rc   c              C   sT   d} xJt jtjdd dD ]2\}}}d|ks|ds|| kr@qt|tj qW d S )N)ZutilsZtestsr   Zsetupc             S   s   d S )Nr   )r"   r   r   r   rW      s    z3test_root_import_all_completeness.<locals>.<lambda>)rA   rY   .r"   )r]   r^   rC   rD   r   r   r\   )Z
EXCEPTIONSr"   rZ   r   r   r   !test_root_import_all_completeness   s    
re   c                 sV   t d tdd tjtjddD  fdd D } t| g d	|  d S )	Nz(?x)
                                      \.externals(\.|$)|
                                      \.tests(\.|$)|
                                      \._
                                      c             s   s   | ]\}}}||fV  qd S )Nr   )r,   r"   r   ispkgr   r   r   	<genexpr>   s   z0test_all_tests_are_importable.<locals>.<genexpr>zsklearn.)rX   c                s.   g | ]&\}}|r  |s|d  kr|qS )z.tests)search)r,   r   rf   )HAS_TESTS_EXCEPTIONSlookupr   r   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compilerO   r]   r^   rC   rD   r5   r   r   )Zmissing_testsr   )ri   rj   r   test_all_tests_are_importable   s    rm   )2__doc__Z
__future__r   r?   rI   rG   rk   r]   r1   ZpytestZsklearn.utils.testingr   r   r   r   r   r   r	   Zsklearn.exceptionsr
   rC   Zsklearn.cluster.biclusterr   Zsklearn.linear_model.baser   Zsklearn.utilsr   Zsklearn.utils.estimator_checksr   r   r   r   r   r   r    ZmarkZparametrizer!   r$   r*   r9   r;   r<   r&   rR   rU   rV   rc   re   rm   r   r   r   r   <module>   sT   	
	