o
    &zhh*                  	   @   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 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)ej"*dd d! Z+d"d# Z,ej"j#d$d% Z-d&d' Z.d(d) Z/ejd*d+ej0d,e1d-d.ej0d/e1d/d.gd0d1d2 Z2ej"3d3d4d5gd6d7 Z4d=d9d:Z5d;d< Z6dS )>z1
Testing that we work in the downstream packages
    N)IntCastingNaNError)	DataFrameDatetimeIndexSeriesTimedeltaIndex)DatetimeArrayTimedeltaArray)Versionc                   C   s   t dg diS )NA         )r    r   r   W/var/www/html/kangema/venv/lib/python3.10/site-packages/pandas/tests/test_downstream.pydf   s   r   c              
   C   sl   t d}z)td td}|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dask.dataframer   npartitions)pd
get_optionpytestimportorskipfrom_pandasr
   compute
set_option)r   olduseddddfr   r   r   	test_dask"   s   


r!   c               
   C   s~   t d} z2td}td}tg d}|j|dd}|| }t|}t	
|| W t d|  d S t d|  w )Nr   
dask.arrayr   )g      ?gffffff@g@g      @r   r   )r   r   r   r   r   r   fixr   nptmassert_series_equalr   )r   dar   sdsresultexpectedr   r   r   test_dask_ufunc2   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 s9w   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dtypez9Cannot convert non-finite values \(NA or inf\) to integerr   )r   r   r$   array
from_arrayr   r%   r&   raises
ValueErrornanr   )r   arrdarrresr+   msgr   r   r   7test_construct_dask_float_array_int_dtype_match_ndarrayE   s$   


"r;   c                 C   s   t d |  d usJ d S )Nxarray)r   r   	to_xarray)r   r   r   r   test_xarray_   s   
r>   c                  C   sT   t d} t d}|jddd}| ddd}|j|gdd	}d}||ks(J d S )
Ncftimer<   0001r   )periodsi  r   nearest)method)r   r   cftime_rangeDatetimeGregorianget_indexer)r?   r<   timeskeyr*   r+   r   r   r   test_xarray_cftimeindex_neareste   s   

rI   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_optimizableq   s   rS   c                   C   rJ   )NrK   rL   z_import pandas as pd, pickle; pickle.loads(pickle.dumps(pd.date_range('2021-01-01', periods=1)))rN   r   r   r   r   )test_oo_optimized_datetime_index_unpicklew   s   rT   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   )LotteryLiteracyPop1831z$Lottery ~ Literacy + np.log(Pop1831))data)r   r   r   rangeolsfit)smfr   r   r   r   test_statsmodels   s
   
r`   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   ra   rb   rc   load_digitsSVCr^   r[   targetpredict)rb   rc   digitsclfr   r   r   test_scikit_learn   s   
 rm   c                  C   s<   t d} ttjddddtdd}| jdd|d	 d S )
Nseaborn2023DrU   )freqrA   )day
total_billrr   rs   )xyr[   )r   r   r   r   
date_ranger\   	stripplot)rn   tipsr   r   r   test_seaborn   s
   
ry   c                   C   s   t d d S )Npandas_datareader)r   r   r   r   r   r   test_pandas_datareader   s   r{   z0ignore:Passing a BlockManager:DeprecationWarningc                 C   s.   t d}|j| }| }t||  d S )Npyarrow)r   r   Tabler   	to_pandasr%   assert_frame_equal)r   r|   tabler*   r   r   r   test_pyarrow   s   
r   c                 C   sP   t d}|| }|j||jd}t| | |j||jd}t| | d S )Nyaml)Loader)r   r   dumploadr   r%   r   UnsafeLoader)r   r   dumpedloadedloaded2r   r   r   test_yaml_dump   s   

r   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\/rL   z$import pandas;print(pandas.__file__)zsite-packagesz pandas installed as site packagez-sSErM   zCommand '\['zD', '-sSE', '-c', 'import pandas'\]' returned non-zero exit status 1.r-   )stderr)numpypytzdateutil)rQ   rR   replacerO   check_outputdecoder   skipr4   CalledProcessErrorSTDOUTvaluestdout)pyexecalloutputr:   excnamer   r   r    test_missing_required_dependency   s   	


r   c              
   C   s   t d}zmtd}td}t|jtdkr,ttjtdkr,| tjj	d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| d S t d| w )Nr   daskr"   z2025.1.0z2.1z,loc.__setitem__ incorrectly mutated column c)reasonr   r   abcrV   FT)r   r   r   )index)r   r   r   r   r	   __version__r$   applymarkermarkxfailr2   r   locr%   r   r   )requestr   r   r'   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 sJ || |u s!J 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____pandas_priority__r   r   r   r   r   MyClass  s    r   r   )r   r\   __add__NotImplemented)r   leftrightr   r   r   test_pandas_priority   s
   r   
memoryviewr2   r   r"   )marksr<   )paramsc                 C   s   t jg dt jd}| j}|dkrt|}||fS |dkr'td|}||fS |dkr9ddl}|j|}||fS |d	krFd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   r0   r   r2   ir   r   Nr<   )r$   r2   int64paramr   
dask.arrayr<   	DataArray)r   r7   r   r[   r   xrr   r   r   array_likes  s    

r   r1   M8[ns]m8[ns]c           
      C   s   |\}}t td|  }|j d}tjt|d ||}W d    n1 s'w   Y  |j|| d}t|| t|t	sWt
jt
jd|  }||j}||j}t|| ttd|  }	|	|}|	|}t|| d S )N)r   r   z.__init__ is deprecatedr-   r0   )r   r   r   r%   assert_produces_warningFutureWarning_from_sequenceassert_extension_array_equal
isinstancer   r   to_datetimeto_timedeltar2   assert_equalr   r   assert_index_equal)
r1   r   r7   r[   clsdepr_msgr+   r*   funcidx_clsr   r   r   test_from_obscure_array1  s"   



r   returnc                  C   sn   t d tg dg dd} |  }| }ddg}||ks"J tg ddd}| }|jdks5J 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.
    dataframe_api_compatr   )   rU      )r   r   r   r   )r   N)r   r   r   !__dataframe_consortium_standard__get_column_namesr   __column_consortium_standard__r   )df_pdr   result_1
expected_1sercolr   r   r   test_dataframe_consortiumP  s   
r   c                  C   sH   t d} | g d}tj|dd}tg ddd d}t|| d S )Nr<   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])r1   rq   )r   r   r   r   r   r   r%   r   )r   r7   r*   r+   r   r   r   test_xarray_coerce_unitc  s   
	r   )r   N)7__doc__r2   rO   rQ   r   r$   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   pandas._testing_testingr%   pandas.core.arraysr   r   pandas.util.versionr	   fixturer   r!   r,   r;   r>   rI   r   
single_cpurS   rT   r`   rm   ry   r{   filterwarningsr   r   r   r   r   r   
skip_if_nor   parametrizer   r   r   r   r   r   r   <module>   s^    


	


$


