U
    _»{jÉ.  ã                   @   s,  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 d dlm	Z	m
Z
 d dlZd dlZd dlmZmZmZmZmZmZmZmZmZmZ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$ G dd„ dƒZ%dd„ Z&ej'dd�dd„ ƒZ(ej'dd�dd„ ƒZ)ej'dd„ ƒZ*ej'dd„ ƒZ+ej, -ddee%g¡dd„ ƒZ.dd„ Z/dd„ Z0d d!„ Z1d"d#„ Z2ej, -d$d%gd%d&gf¡d'd(„ ƒZ3ej, -d)d*d+d,d-d.d/gfd0d1d2d3d4d5gfd6d7d8d9d:gfg¡d;d<„ ƒZ4d=d>„ Z5ej, -d?d@i dAdBgfdCi dAgfdDdEdFidGdHgfg¡dIdJ„ ƒZ6dKdL„ Z7dMdN„ Z8dOdP„ Z9dQdR„ Z:ej, -dSedTdUdVdWdXgfedYdZd[dWg fed\d]d[dWdXgfed^d^d[dWd_d`gfedadbddWg fedcdddBdWg feededf�dgdhdBdWg fg¡didj„ ƒZ;ej, -dkeej<e=feej<ej<feej<e=feej<e=feej<ej<feej<e=fg¡dldm„ ƒZ>dndo„ Z?dpdq„ Z@drds„ ZAdtdu„ ZBdS )vé    N)Úpartial)ÚPath)ÚdumpsÚloads)Úclear_data_homeÚget_data_homeÚload_breast_cancerÚload_diabetesÚload_digitsÚ
load_filesÚ	load_irisÚload_linnerudÚload_sample_imageÚload_sample_imagesÚ	load_wine)Úload_csv_dataÚload_gzip_compressed_csv_data©Úcheck_as_frame)Úscale)ÚBunch©Ú_is_resourcec                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú
_DummyPathz8Minimal class that implements the os.PathLike interface.c                 C   s
   || _ d S ©N©Úpath)Úselfr   © r   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/datasets/tests/test_base.pyÚ__init__&   s    z_DummyPath.__init__c                 C   s   | j S r   r   )r   r   r   r   Ú
__fspath__)   s    z_DummyPath.__fspath__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r!   r   r   r   r   r   #   s   r   c                 C   s   t j | ¡rt | ¡ d S r   )Úosr   ÚisdirÚshutilÚrmtreer   r   r   r   Ú_remove_dir-   s    r*   Úmodule)Úscopec                 c   s    t |  d¡ƒ}|V  t|ƒ d S )NZscikit_learn_data_home_test©ÚstrÚmktempr*   ©Ztmpdir_factoryZtmp_filer   r   r   Ú	data_home2   s    r1   c                 c   s    t |  d¡ƒ}|V  t|ƒ d S )NZscikit_learn_load_files_testr-   r0   r   r   r   Úload_files_root9   s    r2   c                 c   sB   t j| d�}t j|dd�}| d¡ | ¡  t|ƒV  t|ƒ d S )N©ÚdirF)r4   Údeleteó   Hello World!
)ÚtempfileÚmkdtempÚNamedTemporaryFileÚwriteÚcloser.   r*   )r2   Ztest_category_dir1Zsample_filer   r   r   Útest_category_dir_1@   s    

r<   c                 c   s"   t j| d�}t|ƒV  t|ƒ d S )Nr3   )r7   r8   r.   r*   )r2   Ztest_category_dir2r   r   r   Útest_category_dir_2J   s    
r=   Úpath_containerc                 C   s~   | d k	r| |ƒ}t |d�}||ks&t‚tj |¡s6t‚| d k	rF| |ƒ}t|d� tj |¡r`t‚t |d�}tj |¡szt‚d S )N)r1   )r   ÚAssertionErrorr&   r   Úexistsr   )r>   r1   r   r   r   Útest_data_homeQ   s    


rA   c                 C   s>   t | ƒ}t|jƒdkst‚t|jƒdks,t‚|jd ks:t‚d S )Nr   )r   ÚlenÚ	filenamesr?   Útarget_namesÚDESCR)r2   Úresr   r   r   Útest_default_empty_load_filese   s    rG   c                 C   sN   t |ƒ}t|jƒdkst‚t|jƒdks,t‚|jd ks:t‚|jdgksJt‚d S )Né   é   r6   )r   rB   rC   r?   rD   rE   Údata©r<   r=   r2   rF   r   r   r   Útest_default_load_filesl   s
    rL   c                 C   sp   t j | ¡ t j¡ ¡ }t|d|gdd�}t|jƒdks<t	‚t|j
ƒdksNt	‚|jdks\t	‚|jdgkslt	‚d S )NÚtestzutf-8)ÚdescriptionÚ
categoriesÚencodingrH   zHello World!
)r&   r   ÚabspathÚsplitÚsepÚpopr   rB   rC   r?   rD   rE   rJ   )r<   r=   r2   ÚcategoryrF   r   r   r   Ú.test_load_files_w_categories_desc_and_encodingt   s       ÿrV   c                 C   sT   t |dd�}t|jƒdkst‚t|jƒdks0t‚|jd ks>t‚| d¡d ksPt‚d S )NF)Zload_contentrH   rI   rJ   )r   rB   rC   r?   rD   rE   ÚgetrK   r   r   r   Útest_load_files_wo_load_content‚   s
    rX   Úallowed_extensionsz.txtz.jsonc                    sn   | d ‰ˆ  ¡  d}‡fdd„|D ƒ}|D ]}| d¡ q*t| ˆ d�}t‡ fdd„|D ƒƒt|jƒksjt‚dS )	z;Check the behaviour of `allowed_extension` in `load_files`.Úsub)z	file1.txtz
file2.jsonz
file3.jsonzfile4.mdc                    s   g | ]}ˆ | ‘qS r   r   ©Ú.0Úf)Údr   r   Ú
<listcomp>’   s     z6test_load_files_allowed_extensions.<locals>.<listcomp>s   hello©rY   c                    s   g | ]}|j ˆ krt|ƒ‘qS r   )Úsuffixr.   )r\   Úpr`   r   r   r_   –   s     
 N)ÚmkdirÚwrite_bytesr   ÚsetrC   r?   )Ztmp_pathrY   ÚfilesÚpathsrb   rF   r   )rY   r^   r   Ú"test_load_files_allowed_extensionsŒ   s    ÿrh   zHfilename, expected_n_samples, expected_n_features, expected_target_nameszwine_data.csvé²   é   Zclass_0Zclass_1Zclass_2úiris.csvé–   é   ZsetosaZ
versicolorZ	virginicazbreast_cancer.csvé9  é   Z	malignantZbenignc                 C   sV   t | ƒ\}}}|jd |ks t‚|jd |ks2t‚|jd |ksDt‚tj ||¡ d S )Nr   rH   )r   Úshaper?   ÚnpÚtestingÚassert_array_equal)ÚfilenameZexpected_n_samplesZexpected_n_featuresZexpected_target_namesÚactual_dataZactual_targetZactual_target_namesr   r   r   Útest_load_csv_data›   s
    rv   c                  C   s–   d} d}t | d�}t | |d�}t|ƒdks.t‚t|ƒdks>t‚tj |d |d ¡ tj |d |d ¡ tj |d	 |d	 ¡ |d
  d¡s’t‚d S )Nrk   ziris.rst©Údata_file_name©rx   Údescr_file_namerm   é   r   rH   rI   éÿÿÿÿz.. _iris_dataset:)r   rB   r?   rq   rr   rs   Ú
startswith)rx   rz   Zres_without_descrZres_with_descrr   r   r   Útest_load_csv_data_with_descr­   s    
 ÿr~   z filename, kwargs, expected_shapezdiabetes_data_raw.csv.gzéº  é
   údiabetes_target.csv.gzzdigits.csv.gzÚ	delimiterú,é  éA   c                 C   s"   t | f|Ž}|jt|ƒkst‚d S r   )r   rp   Útupler?   )rt   ÚkwargsZexpected_shaperu   r   r   r   Ú"test_load_gzip_compressed_csv_data¿   s    	rˆ   c                  C   sB   d} d}t | d�}t | |d�\}}tj ||¡ | d¡s>t‚d S )Nr�   zdiabetes.rstrw   ry   z.. _diabetes_dataset:)r   rq   rr   rs   r}   r?   )rx   rz   Zexpected_dataru   Údescrr   r   r   Ú-test_load_gzip_compressed_csv_data_with_descrÌ   s    
þ
rŠ   c                  C   sÎ   zªt ƒ } t| jƒdkst‚t| jƒdks,t‚| j}t |d ddd d …f tjdddgtjd�k¡sht‚t |d ddd d …f tjddd	gtjd�k¡sžt‚| j	s¨t‚W n t
k
rÈ   t d
¡ Y nX d S )NrI   r   é®   éÉ   éç   )ÚdtyperH   é   rj   ú3Could not load sample images, PIL is not available.)r   rB   Úimagesr?   rC   rq   ÚallÚarrayÚuint8rE   ÚImportErrorÚwarningsÚwarn)rF   r‘   r   r   r   Útest_load_sample_imagesÚ   s    66r˜   c                  C   sL   z(t dƒ} | jdkst‚| jdks&t‚W n tk
rF   t d¡ Y nX d S )Nz	china.jpgr”   )i«  i€  r{   r�   )r   rŽ   r?   rp   r•   r–   r—   )Úchinar   r   r   Útest_load_sample_imageê   s    rš   c                  C   sn   t dd�} | jjdkst‚| jjs*tdƒ‚t| jƒdks<t‚| jsFt‚t ƒ }t	j
jt| jƒd |jdd� d	S )
zTest to check that we load a scaled version by default but that we can
    get an unscaled version when setting `scaled=False`.F)Zscaled©r   r€   r   r€   g»‘T5@g-Cëâ6?)ZatolN)r	   rJ   rp   r?   ÚtargetÚsizerB   Úfeature_namesrE   rq   rr   Zassert_allcloser   )Zdiabetes_rawZdiabetes_defaultr   r   r   Útest_load_diabetes_rawó   s    

  ÿrŸ   zEloader_func, data_shape, target_shape, n_target, has_descr, filenames)rn   ro   )rn   rI   Trt   )ri   rj   )ri   r{   )rl   rm   )rl   )é   r{   Zdata_filenameZtarget_filenamer›   )r   )r„   é@   )r„   é	   )Zn_class)éQ  r¡   )r£   c                    sª   | ƒ ‰ t ˆ tƒst‚ˆ jj|ks$t‚ˆ jj|ks4t‚tˆ dƒrTtˆ jƒ|d ksTt‚|d k	rntˆ j	ƒ|ksnt‚|r|ˆ j
s|t‚|r¦dˆ ksŒt‚t‡ fdd„|D ƒƒs¦t‚d S )Nrž   rH   Údata_modulec                    s&   g | ]}|ˆ ko t ˆ d  ˆ | ƒ‘qS )r¤   r   r[   ©Úbunchr   r   r_   %  s   ÿztest_loader.<locals>.<listcomp>)Ú
isinstancer   r?   rJ   rp   rœ   ÚhasattrrB   rž   rD   rE   r’   )Úloader_funcZ
data_shapeZtarget_shapeZn_targetZ	has_descrrC   r   r¥   r   Útest_loader  s"    


þÿrª   z%loader_func, data_dtype, target_dtypec                 C   s   | ƒ }t || ||d� d S )N)Zexpected_data_dtypeZexpected_target_dtyper   )r©   Z
data_dtypeZtarget_dtypeZdefault_resultr   r   r   Útest_toy_dataset_frame_dtype,  s    ür«   c                  C   s2   t dd�} tt| ƒƒ}d|_|d |jks.t‚d S )NÚx)r¬   Úy)r   r   r   r¬   r?   ©r¦   Zbunch_from_pklr   r   r   Útest_loads_dumps_bunchA  s    
r¯   c                  C   sf   t dd�} d| jd< tt| ƒƒ}|jdks.t‚|d dks>t‚d|_|jdksRt‚|d dksbt‚d S )NÚoriginal)Úkeyzset from __dict__r±   Úchanged)r   Ú__dict__r   r   r±   r?   r®   r   r   r   Ú8test_bunch_pickle_generated_with_0_16_and_read_with_0_17H  s    

r´   c                  C   s   t ƒ } dt| ƒkst‚d S )NrJ   )r   r4   r?   )rJ   r   r   r   Útest_bunch_dir]  s    rµ   c               	   C   sX   d} t jt| d�� ddlm} W 5 Q R X d} t jt| d�� ddlm} W 5 Q R X dS )zLCheck that we raise the ethical warning when trying to import `load_boston`.z8The Boston housing prices dataset has an ethical problem)Úmatchr   )Úload_bostonzBcannot import name 'non_existing_function' from 'sklearn.datasets')Únon_existing_functionN)ÚpytestZraisesr•   Úsklearn.datasetsr·   r¸   )Úmsgr·   r¸   r   r   r   Útest_load_boston_errorc  s    r¼   )Cr&   r(   r7   r–   Ú	functoolsr   Úpathlibr   Úpickler   r   Únumpyrq   r¹   rº   r   r   r   r	   r
   r   r   r   r   r   r   Zsklearn.datasets._baser   r   Z"sklearn.datasets.tests.test_commonr   Zsklearn.preprocessingr   Zsklearn.utilsr   Zsklearn.utils.fixesr   r   r*   Zfixturer1   r2   r<   r=   ÚmarkZparametrizerA   rG   rL   rV   rX   rh   rv   r~   rˆ   rŠ   r˜   rš   rŸ   rª   Zfloat64Úintr«   r¯   r´   rµ   r¼   r   r   r   r   Ú<module>   s¬   4





	



ýþ


ýþ
	úòþ




úþ

