o
    Û­jh*  ã                	   @   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   úY/var/www/html/CropPilot/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Úsvmgü©ñÒMbP?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^    


	


$üÿ


