o
    �¨Êh)  ã                	   @   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 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j.d+e /d,¡d-�ej.d.e /d.¡d-�gd/�d0d1„ ƒZ0ej  1d2d3d4g¡d5d6„ ƒZ2d<d8d9„Z3d:d;„ Z4dS )=z1
Testing that we work in the downstream packages
é    N)ÚIntCastingNaNError)Ú	DataFrameÚDatetimeIndexÚSeriesÚTimedeltaIndex)ÚDatetimeArrayÚTimedeltaArrayc                   C   s   t dg d¢iƒS )NÚA©é   é   é   )r   © r   r   úN/var/www/html/env/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_ufunc1   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_ndarrayD   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_nearestd   s   

rH   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_optimizablep   s   rR   c                   C   rI   )NrJ   rK   z_import pandas as pd, pickle; pickle.loads(pickle.dumps(pd.date_range('2021-01-01', periods=1)))rM   r   r   r   r   Ú)test_oo_optimized_datetime_index_unpicklev   s   ûÿrS   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Úsvmgü©ñÒMbP?g      Y@)ÚgammaÚCéÿÿÿÿ)r   r   r`   ra   rb   Úload_digitsÚSVCr]   rZ   ÚtargetÚpredict)ra   rb   ÚdigitsÚclfr   r   r   Útest_scikit_learn�   s   
 rl   c                  C   s<   t  d¡} ttjdddd�tdƒdœƒ}| jdd|d	� d S )
NÚseabornÚ2023ÚDrT   )Úfreqr@   )ÚdayÚ
total_billrq   rr   )ÚxÚyrZ   )r   r   r   r   Ú
date_ranger[   Ú	stripplot)rm   Útipsr   r   r   Útest_seabornœ   s
   
ÿrx   c                   C   s   t  d¡ d S )NÚpandas_datareader)r   r   r   r   r   r   Útest_pandas_datareader¤   s   rz   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ú\ú/rK   z$import pandas;print(pandas.__file__)zsite-packagesz pandas installed as site packagez-sSErL   zCommand '\['zD', '-sSE', '-c', 'import pandas'\]' returned non-zero exit status 1.r,   )Ústderr)ÚnumpyÚpytzÚdateutil)rP   rQ   ÚreplacerN   Úcheck_outputÚdecoder   Úskipr3   ÚCalledProcessErrorÚSTDOUTÚvalueÚstdout)ÚpyexeÚcallÚoutputr9   ÚexcÚnamer   r   r   Ú test_missing_required_dependency½   s   	


ÿÿÿr�   c               
   C   s²   t  d¡} zLt 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   r!   r   r   ÚaÚbÚcrU   FT)rž   rŸ   r    )Úindex)
r   r   r   r   r1   r   Úlocr$   r~   r   )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±   Ú
memoryviewr1   Údaskr!   )Ú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
   r/   r²   r1   Úir³   r   Nr;   )r#   r1   Úint64Úparamr²   Ú
dask.arrayr;   Ú	DataArray)Úrequestr6   rœ   rZ   r³   Úxrr   r   r   Úarray_likes  s    õ
÷û
r½   r0   ú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,   r/   )r   r   r¨   r$   Úassert_produces_warningÚFutureWarningÚ_from_sequenceÚassert_extension_array_equalÚ
isinstancer²   r   Úto_datetimeÚto_timedeltar1   Úassert_equalr   r   Úassert_index_equal)
r0   r½   r6   rZ   ÚclsÚdepr_msgr*   r)   ÚfuncÚidx_clsr   r   r   Útest_from_obscure_array)  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
   )é   rT   é   )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_consortiumH  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])r0   rp   )r   r   rº   r   rÅ   r   r$   rÈ   )r¼   r6   r)   r*   r   r   r   Útest_xarray_coerce_unit[  s   
ù	rÝ   )rÎ   N)5Ú__doc__r1   rN   rP   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   Úfixturer   r    r+   r:   r=   rH   ÚmarkÚ
single_cpurR   rS   r_   rl   rx   rz   Úfilterwarningsr€   r‰   r�   r¤   r±   r¸   Ú
skip_if_nor½   ÚparametrizerÍ   rÚ   rÝ   r   r   r   r   Ú<module>   s\    


	


$üÿ


