a
    d0*                  	   @   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lmZ ddl	m
  mZ ddlZddlmZmZmZmZ ddlmZ ddlmZmZ ddlmZ ddlmZ ejdd	 Zd
d Zdd Z dd Z!dd Z"dd Z#ej$j%dd Z&ej$j%dd Z'dd Z(dd Z)dd Z*dd Z+d d! Z,d"d# Z-d$d% Z.ej$j%d&d' Z/d(d) Z0d*d+ Z1ejd,d-ej2d.e3d/d0ej2d1e3d1d0gd2d3d4 Z4ej$5d5d6d7gd8d9 Z6dd:d;d<Z7d=d> Z8dS )?z1
Testing that we work in the downstream packages
    N)IntCastingNaNError)	DataFrameDatetimeIndexSeriesTimedeltaIndex)DatetimeArrayTimedeltaArray)_sequence_to_dt64ns)sequence_to_td64nsc                   C   s   t dg diS )NA         )r    r   r   e/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/test_downstream.pydf   s    r   c              
   C   sn   t d}zPtd td}|j| dd}|jd us<J | d usLJ W t d| nt d| 0 d S )Ncompute.use_numexprZtoolzdask.dataframer   Znpartitions)pd
get_optionpytestimportorskipfrom_pandasr   compute
set_option)r   olduseddZddfr   r   r   	test_dask#   s    


r   c               
   C   s   t d} zbtd}td}tg d}|j|dd}|| }t|}t	
|| W t d|  nt d|  0 d S )Nr   
dask.arrayr   )g      ?gffffff@g@g      @r   r   )r   r   r   r   r   r   Zfixr   nptmassert_series_equalr   )r   dar   sZdsresultexpectedr   r   r   test_dask_ufunc3   s    



r(   c                  C   s  t d} tg d}| |}t|}t|}t|| d}t jt	|d t|dd W d    n1 sr0    Y  d}tj
|d< t jt|d t|dd W d    n1 s0    Y  t jt|d t|dd W d    n1 s0    Y  d S )	Nr   )r   g      @r   z)Trying to coerce float values to integersmatchi8dtypez9Cannot convert non-finite values \(NA or inf\) to integerr   )r   r   r!   arrayZ
from_arrayr   r"   r#   raises
ValueErrornanr   )r   arrdarrresr'   msgr   r   r   7test_construct_dask_float_array_int_dtype_match_ndarrayF   s    

*
*r6   c                 C   s   t d |  d usJ d S )Nxarray)r   r   Z	to_xarray)r   r   r   r   test_xarray`   s    
r8   c                  C   sX   t d} t jddd}|jddd}| dd	d	}|j|gd
d}d	}||ksTJ d S )Ncftimer7   z0.21.0Z
minversionZ0001r   )periodsi  r   Znearest)method)r   r   Zcftime_rangeZDatetimeGregorianZget_indexer)r9   r7   timeskeyr&   r'   r   r   r   test_xarray_cftimeindex_nearestf   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_optimizabler   s    rH   c                   C   s   t tjdddg d S )Nr@   rA   z_import pandas as pd, pickle; pickle.loads(pickle.dumps(pd.date_range('2021-01-01', periods=1)))rC   r   r   r   r   )test_oo_optimized_datetime_index_unpicklex   s    rI   c                  C   s>   t d} ttdtdtddd}| jd|d  d S )Nzstatsmodels.formula.api   d   i   )ZLotteryZLiteracyZPop1831z$Lottery ~ Literacy + np.log(Pop1831))data)r   r   r   rangeZolsfit)Zsmfr   r   r   r   test_statsmodels   s
    
rP   c                  C   sh   t d ddlm} m} |  }|jddd}||jd d |j	d d  |
|jdd   d S )Nsklearnr   )datasetssvmgMbP?g      Y@)gammaC)r   r   rQ   rR   rS   Zload_digitsZSVCrO   rM   targetZpredict)rR   rS   digitsZclfr   r   r   test_scikit_learn   s    
 rY   c                  C   s<   t d} ttjddddtdd}| jdd|d	 d S )
NseabornZ2023DrJ   )freqr;   )day
total_billr]   r^   )xyrM   )r   r   r   r   Z
date_rangerN   Z	stripplot)rZ   Ztipsr   r   r   test_seaborn   s
    
ra   c                   C   s   t jddd d S )NZ
pandas_gbqz0.10.0r:   r   r   r   r   r   r   test_pandas_gbq   s    rc   c                   C   s   t d d S )NZpandas_datareaderrb   r   r   r   r   test_pandas_datareader   s    rd   c                 C   s.   t d}|j| }| }t||  d S )Npyarrow)r   r   ZTabler   Z	to_pandasr"   assert_frame_equal)r   re   tabler&   r   r   r   test_pyarrow   s    
rh   c                 C   sP   t d}|| }|j||jd}t| | |j||jd}t| | d S )Nyaml)Loader)r   r   dumploadrj   r"   rf   ZUnsafeLoader)r   ri   ZdumpedZloadedZloaded2r   r   r   test_yaml_dump   s    

rm   c                  C   s   t jdd} | ddg}t| }d|v r8td | dddg}d	|  d
}tjtj	|d }tj|tj
d W d    n1 s0    Y  |jj }dD ]}||v sJ qd S )N\/rA   z$import pandas;print(pandas.__file__)zsite-packagesz pandas installed as site packagez-sSErB   zCommand '\['zD', '-sSE', '-c', 'import pandas'\]' returned non-zero exit status 1.r)   )stderr)numpyZpytzZdateutil)rF   rG   replacerD   check_outputdecoder   skipr/   CalledProcessErrorSTDOUTvaluestdout)Zpyexecalloutputr5   excnamer   r   r    test_missing_required_dependency   s    	


.r~   c               
   C   s   t d} ztd}|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|  nt 	d|  0 d S )Nr   r    r   r   abcrK   FT)r   r   r   )index)
r   r   r   r   r.   r   locr"   rf   r   )r   r$   Zddar   r&   r'   r   r   r   *test_frame_setitem_dask_array_into_new_col   s    

r   c                  C   sF   G dd d} |  }t td}||tu s2J || |u sBJ d S )Nc                   @   s   e Zd ZdZdd ZdS )z%test_pandas_priority.<locals>.MyClassi  c                 S   s   | S )Nr   )selfotherr   r   r   __radd__  s    z.test_pandas_priority.<locals>.MyClass.__radd__N)__name__
__module____qualname__Z__pandas_priority__r   r   r   r   r   MyClass  s   r   r   )r   rN   __add__NotImplemented)r   leftrightr   r   r   test_pandas_priority   s
    r   
memoryviewr.   daskr    )Zmarksr7   )paramsc                 C   s   t jg dt jd}| j}|dkr,t|}nN|dkrBtd|}n8|dkr`ddl}|j|}n|d	krzddl}||}||fS )
z
    Fixture giving a numpy array and a parametrized 'data' object, which can
    be a memoryview, array, dask or xarray object created from the numpy array.
    r   r,   r   r.   ir   r   Nr7   )r!   r.   int64paramr   Z
dask.arrayr7   	DataArray)requestr2   r}   rM   r   xrr   r   r   array_likes  s    

r   r-   M8[ns]m8[ns]c           	      C   s   |\}}t td|  }||}||}t|| ttd|  }||d }||d }t|| t|t	st
jt
jd|  }||j}||j}t|| ttd|  }||}||}t|| d S )N)r   r   r   )r   r   Z_from_sequencer"   Zassert_extension_array_equalr	   r
   Zassert_equal
isinstancer   r   to_datetimeZto_timedeltar.   r   r   assert_index_equal)	r-   r   r2   rM   clsr'   r&   funcZidx_clsr   r   r   test_from_obscure_array/  s$    



r   )returnc                  C   sv   t d tg dg dd} |  }| }ddg}||ksDJ tg d}| }|d}d}||ksrJ d	S )
z
    Test some basic methods of the dataframe consortium standard.

    Full testing is done at https://github.com/data-apis/dataframe-api-compat,
    this is just to check that the entry point works as expected.
    Zdataframe_api_compatr   )   rJ      )r   r   r   r   r   r   N)r   r   r   Z!__dataframe_consortium_standard__Zget_column_namesr   Z__column_consortium_standard__	get_value)Zdf_pdr   Zresult_1Z
expected_1ZsercolZresult_2Z
expected_2r   r   r   test_dataframe_consortiumQ  s    

r   c                  C   sH   t d} | g d}tj|dd}tg ddd d}t|| d S )Nr7   r   ns)unit)z1970-01-01 00:00:00.000000001z1970-01-01 00:00:00.000000002z1970-01-01 00:00:00.000000003zdatetime64[ns])r-   r\   )r   r   r   r   r   r   r"   r   )r   r2   r&   r'   r   r   r   test_xarray_coerce_unitf  s    
	r   )9__doc__r.   rD   rF   rq   r!   r   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   r   r   r   Zpandas._testingZ_testingr"   Zpandas.core.arraysr   r   Zpandas.core.arrays.datetimesr	   Zpandas.core.arrays.timedeltasr
   Zfixturer   r   r(   r6   r8   r?   markZ
single_cpurH   rI   rP   rY   ra   rc   rd   rh   rm   r~   r   r   r   Z
skip_if_nor   Zparametrizer   r   r   r   r   r   r   <module>   s^   


	
$

!