U
    ¾mœdp  ã                   @   sb  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
  mZ ddlZddlmZmZ ddlmZ dd„ Zejdd„ ƒZd	d
„ Zdd„ Ze d¡dd„ ƒZdd„ Ze d¡e dd¡dd„ ƒƒZdd„ Zdd„ Zejj ej dd„ ƒƒZ!dd„ Z"ejj ej dd „ ƒƒZ#d!d"„ Z$ejj ej ejj%e&d#d$�d%d&„ ƒƒƒZ'd'd(„ Z(d)d*„ Z)d+d,„ Z*d-d.„ Z+dS )/z1
Testing that we work in the downstream packages
é    N)ÚIntCastingNaNError)Ú	DataFrameÚSeriesc                 C   s8   zt  | ¡W S  tk
r2   t d| › d�¡ Y nX d S )Nzskipping as z not available)Ú	importlibÚimport_moduleÚModuleNotFoundErrorÚpytestÚskip)Úname© r   úU/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/test_downstream.pyr      s    r   c                   C   s   t ddddgiƒS )NÚAé   é   é   )r   r   r   r   r   Údf    s    r   c              
   C   sj   t  d¡}zLtdƒ}tdƒ}dd lm} |j| dd�}|jd k	sDt‚| 	¡ d k	sTt‚W 5 t  d|¡ X d S )Núcompute.use_numexprÚtoolzÚdaskr   r   ©Znpartitions)
ÚpdÚ
get_optionÚ
set_optionr   Údask.dataframeÚ	dataframeÚfrom_pandasr   ÚAssertionErrorÚcompute)r   Úolduser   r   ÚddZddfr   r   r   Ú	test_dask%   s    
r    c               
   C   s„   t  d¡} zftdƒ}dd lm} dd lm} tddddgƒ}|j	|dd	�}| 
|¡ ¡ }t 
|¡}t ||¡ W 5 t  d| ¡ X d S )
Nr   r   r   g      ø?gffffff@gš™™™™™@g      @r   r   )r   r   r   r   Ú
dask.arrayÚarrayr   r   r   r   Zfixr   ÚnpÚtmÚassert_series_equal)r   r   Údar   ÚsZdsÚresultÚexpectedr   r   r   Útest_dask_ufunc7   s    

r*   r   c               	   C   sÊ   dd l m}  t dddg¡}|  |¡}t|ƒ}t|ƒ}t ||¡ d}tj	t
|d�� t|dd� W 5 Q R X d	}tj|d
< tj	t|d�� t|dd� W 5 Q R X tj	t|d�� t|dd� W 5 Q R X d S )Nr   r   g      @r   z)Trying to coerce float values to integers©ÚmatchÚi8)Zdtypez9Cannot convert non-finite values \(NA or inf\) to integerr   )r   r   r#   r"   Z
from_arrayr   r$   r%   r   ÚraisesÚ
ValueErrorÚnanr   )r   ZarrÚdarrÚresr)   Úmsgr   r   r   Ú7test_construct_dask_float_array_int_dtype_match_ndarrayK   s    

r4   c                 C   s   t dƒ}|  ¡ d k	st‚d S )NÚxarray)r   Z	to_xarrayr   )r   r5   r   r   r   Útest_xarrayf   s    r6   Úcftimer5   z0.21.0c                  C   sP   dd l } dd l}|jddd�}|  ddd¡}|j|gdd�}d}||ksLt‚d S )	Nr   Z0001r   )ZperiodsiÐ  r   Znearest)Úmethod)r7   r5   Zcftime_rangeZDatetimeGregorianZget_indexerr   )r7   r5   ÚtimesÚkeyr(   r)   r   r   r   Útest_xarray_cftimeindex_nearestl   s    r;   c                   C   s   t  tjdddg¡ d S )Nú-OOú-cúimport pandas©Ú
subprocessÚ
check_callÚsysÚ
executabler   r   r   r   Útest_oo_optimizablez   s    rD   c                   C   s   t  tjdddg¡ d S )Nr<   r=   z_import pandas as pd, pickle; pickle.loads(pickle.dumps(pd.date_range('2021-01-01', periods=1)))r?   r   r   r   r   Ú)test_oo_optimized_datetime_index_unpickle   s    ûÿrE   c                  C   sL   t dƒ} dd lm} dd lm  m} |j dd¡j}|jd|d� 	¡  d S )NÚstatsmodelsr   ZGuerryZHistDataz$Lottery ~ Literacy + np.log(Pop1831))Údata)
r   Zstatsmodels.apiÚapiZstatsmodels.formula.apiZformulaÚdatasetsZget_rdatasetrG   ZolsÚfit)rF   ÚsmZsmfr   r   r   r   Útest_statsmodelsŽ   s
    rL   c                  C   sf   t dƒ} ddlm}m} | ¡ }|jddd�}| |jd d… |jd d… ¡ | 	|jdd … ¡ d S )NÚsklearnr   )rI   Úsvmgü©ñÒMbP?g      Y@)ÚgammaÚCéÿÿÿÿ)
r   rM   rI   rN   Zload_digitsZSVCrJ   rG   ÚtargetZpredict)rM   rI   rN   ÚdigitsZclfr   r   r   Útest_scikit_learn™   s     rT   c                  C   s&   t dƒ} |  d¡}| jdd|d� d S )NÚseabornÚtipsÚdayZ
total_bill)ÚxÚyrG   )r   Zload_datasetZ	stripplot)rU   rV   r   r   r   Útest_seaborn¦   s    
rZ   c                  C   s   t jddd� tdƒ} d S )NÚ
pandas_gbqz0.10.0)Z
minversion)r   Zimportorskipr   )r[   r   r   r   Útest_pandas_gbq®   s    r\   z|The Quandl API key must be provided either through the api_key variable or through the environmental variable QUANDL_API_KEY)r.   Úreasonc                  C   s   t dƒ} |  dddd¡ d S )NÚpandas_datareaderÚFZquandlz
2017-01-01z
2017-02-01)r   Z
DataReader)r^   r   r   r   Útest_pandas_datareader´   s    r`   c                 C   s,   t dƒ}|j | ¡}| ¡ }t || ¡ d S )NÚpyarrow)r   ÚTabler   Z	to_pandasr$   Úassert_frame_equal)r   ra   Útabler(   r   r   r   Útest_pyarrowÀ   s    re   c                 C   sN   t dƒ}| | ¡}|j||jd�}t | |¡ |j||jd�}t | |¡ d S )NÚyaml)ÚLoader)r   ÚdumpÚloadrg   r$   rc   ZUnsafeLoader)r   rf   ZdumpedZloadedZloaded2r   r   r   Útest_yaml_dumpÇ   s    
rj   c               	   C   s¢   t j dd¡} | ddg}t |¡ ¡ }d|kr8t d¡ | dddg}d	| › d
�}tjtj	|d��}tj|tj
d� W 5 Q R X |jj ¡ }dD ]}||ksŒt‚qŒd S )Nú\ú/r=   z$import pandas;print(pandas.__file__)zsite-packagesz pandas installed as site packagez-sSEr>   zCommand '\['zD', '-sSE', '-c', 'import pandas'\]' returned non-zero exit status 1.r+   )Ústderr)ÚnumpyZpytzZdateutil)rB   rC   Úreplacer@   Úcheck_outputÚdecoder   r	   r.   ÚCalledProcessErrorÚSTDOUTÚvalueÚstdoutr   )ZpyexeÚcallÚoutputr3   Úexcr
   r   r   r   Ú test_missing_required_dependencyÔ   s    


ÿry   c               
   C   s²   t  d¡} z”tdƒ}dd lm} | ddg¡}tdddgiƒ}||d< ||d< d	|jd
dgdf< |jdgd d …f }tdgd	gdgdœdgd�}t 	||¡ W 5 t  d| ¡ X d S )Nr   r   r   r   r   ÚaÚbÚcéd   FT)rz   r{   r|   )Úindex)
r   r   r   r   r!   r"   r   Úlocr$   rc   )r   r   r&   Zddar   r(   r)   r   r   r   Ú*test_frame_setitem_dask_array_into_new_colø   s    
r€   ),Ú__doc__r   r@   rB   rn   r#   r   Zpandas.errorsr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   r   r   Zpandas._testingZ_testingr$   r   Zfixturer   r    r*   Z
skip_if_nor4   r6   r;   rD   rE   ÚmarkÚnetworkrL   rT   rZ   r\   Zxfailr/   r`   re   rj   ry   r€   r   r   r   r   Ú<module>   sT   



	þ$