U
    >vfp                     @   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   @/tmp/pip-unpacked-wheel-vdrwu74i/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   svmgMbP?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   ZTabler   Z	to_pandasr$   assert_frame_equal)r   ra   tabler(   r   r   r   test_pyarrow   s    rd   c                 C   sN   t d}|| }|j||jd}t| | |j||jd}t| | d S )Nyaml)Loader)r   dumploadrf   r$   rb   ZUnsafeLoader)r   re   ZdumpedZloadedZloaded2r   r   r   test_yaml_dump   s    
ri   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stqd 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    


rx   c               
   C   s   t d} zt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cd   FT)ry   rz   r{   )index)
r   r   r   r   r!   r"   r   locr$   rb   )r   r   r&   Zddar   r(   r)   r   r   r   *test_frame_setitem_dask_array_into_new_col   s    
r   ),__doc__r   r@   rB   rm   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`   rd   ri   rx   r   r   r   r   r   <module>   sT   



	$