U
    3d                     @   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 Zej	j
ddej	j
ddej	je  ddd	d
ej	j
ddidZdd Zdd Zd ddZdd Zd!ddZej	deddd Zej	deddd Zej	deddd ZdS )"z&Test loaders for common functionality.    Nc                  C   s*   zdd l } W dS  tk
r$   Y dS X d S )Nr   TF)PILImportError)r    r   F/tmp/pip-unpacked-wheel-zrfo1fqw/sklearn/datasets/tests/test_common.pyis_pillow_installed   s
    r   z.X is a list and does not have a shape argument)reasonz)fetch_opeml requires a dataset name or idzpillow is not installed)Zfetch_20newsgroupsfetch_openmlZfetch_lfw_peopler   )
return_X_yas_framec                 C   sd   zdd l }td W nH tk
r^   | j}| d}tjt|d | dd W 5 Q R X Y nX d S )Nr   z-This test requires pandas to not be installedz# with as_frame=True requires pandas)matchTr
   )pandaspytestskipr   __name__Zraises)Z
fetch_funcr   nameZexpected_msgr   r   r   check_pandas_dependency_message(   s    
r   c                 C   sH   |dd}t |tst|d j| jjks.t|d j| jjksDtd S )NT)r	   r      )
isinstancetupleAssertionErrorshapedatatarget)bunchdataset_funcZ	X_y_tupler   r   r   check_return_X_y6   s    
r   c                 C   s<  t d}|dd}t|ds"tt|j|js4tt|j|jsFt|jj| jjksZt|j	j
dkrzt|j	|jstnt|j	|jst|j	jd | j	jd kst|d k	rt|jj|kst|d k	rt|j	j|kst|ddd\}}t||jst|j
dkr&t||js8tnt||js8td S )Nr   Tr   framer   r   )r
   r	   )r   Zimportorskiphasattrr   r   r   Z	DataFramer   r   r   ndimZSeriesnpallZdtypes)r   r   Zexpected_data_dtypeZexpected_target_dtypepdZframe_bunchZframe_XZframe_yr   r   r   check_as_frame=   s&    

r#   c                   C   s   t jdddkS )NZSKLEARN_SKIP_NETWORK_TESTS1)osenvirongetr   r   r   r   _skip_network_testsY   s    r(   loadfetchc                 #   s   t | i }ttjD ]\ }t|s,qt fdd|D }| t|j	k}|r|rt
jj dont ddg} |kr||   t
j ||dV  qd S )Nc                    s   g | ]}  |qS r   )
startswith).0tr   r   r   
<listcomp>c   s     z3_generate_func_supporting_param.<locals>.<listcomp>r+   z.Skip because fetcher requires internet network)	conditionr   )marks)FETCH_PYTEST_MARKERSr'   inspect
getmemberssklearnZdatasets
isfunctionany	signature
parametersr   markskipifr,   r(   appendparam)r>   Zdataset_typeZmarkers_fetchobjZis_dataset_typeZis_support_paramr2   r   r/   r   _generate_func_supporting_param]   s    
r@   zname, dataset_funcr	   c                 C   s   | }t || d S N)r   r   r   r   r   r   r   test_common_check_return_X_ys   s    rC   r
   c                 C   s   | }t || d S rA   )r#   rB   r   r   r   test_common_check_as_frame{   s    rD   c                 C   s   t | d S rA   )r   )r   r   r   r   r   #test_common_check_pandas_dependency   s    rE   )NN)r)   )__doc__r4   r%   r   Znumpyr    Zsklearn.datasetsr6   r   r;   Zxfailr<   r3   r   r   r#   r(   r@   ZparametrizerC   rD   rE   r   r   r   r   <module>   sZ        

 
 
 