o
    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   s4   zt | W S  ty   td|  d Y d S w )Nzskipping as z not available)	importlibimport_moduleModuleNotFoundErrorpytestskip)name r   P/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/test_downstream.pyr      s
   r   c                   C   s   t dg diS )NA)         )r   r   r   r   r   df    s   r   c              
   C   st   t d}z-td}td}dd lm} |j| dd}|jd us"J | d us*J W t d| d S t d| w )Ncompute.use_numexprtoolzdaskr   r   Znpartitions)	pd
get_optionr   dask.dataframe	dataframefrom_pandasr   compute
set_option)r   olduser   r   ddZddfr   r   r   	test_dask%   s   
r   c               
   C   s   t d} z8td}dd lm} dd lm} tg d}|j|dd}|	|
 }t	|}t|| W t d|  d S t d|  w )Nr   r   r   )g      ?gffffff@g@g      @r   r   )r   r   r   
dask.arrayarrayr   r   r   r   Zfixr   nptmassert_series_equalr   )r   r   dar   sZdsresultexpectedr   r   r   test_dask_ufunc7   s   

r)   r   c                  C   s  dd l m}  tg d}| |}t|}t|}t|| d}tj	t
|d t|dd W d    n1 s:w   Y  d}tj|d< tj	t|d t|dd W d    n1 s^w   Y  tj	t|d t|dd W d    d S 1 s|w   Y  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$   

"r3   c                 C   s   t d}|  d usJ d S )Nxarray)r   Z	to_xarray)r   r4   r   r   r   test_xarrayf   s   r5   cftimer4   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s&J d S )	Nr   Z0001r   )Zperiodsi  r   Znearest)method)r6   r4   Zcftime_rangeZDatetimeGregorianZget_indexer)r6   r4   timeskeyr'   r(   r   r   r   test_xarray_cftimeindex_nearestl   s   r:   c                   C      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   r;   )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   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|v rtd | dddg}d	|  d
}tjtj	|d}tj|tj
d W d    n1 sCw   Y  |jj }dD ]}||v sXJ qPd 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stdout)Zpyexecalloutputr2   excr
   r   r   r    test_missing_required_dependency   s   


ry   c               
   C   s   t d} zQt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 t 	d|  d S t 	d|  w )Nr   r   r   r   r   abcd   FT)rz   r{   r|   )index)
r   r   r   r    r!   r   locr#   rc   r   )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_nor3   r5   r:   rD   rE   marknetworkrL   rT   rZ   r\   Zxfailr.   r`   re   rj   ry   r   r   r   r   r   <module>   sV    



	$