o
    d                     @   s^   d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	m
Z d dlmZ G dd dZdS )    N)
is_integer)IndexSeries)	Timestampc                   @   s`  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dedededgedddedddedddgedededgedededejgedddedddedddejgedededejggdd Zdd Zdd Zej	
dg ddfg ddfgdd  Zd!d" Zej	
d#eed$gd%d& Zd'd( Zd)d* Zd+S ),TestSeriesQuantilec              	   C   s6  | d}|t| dksJ | d}|t| dks"J t|td d}|t| dks7J |j }| d}|tdksIJ |	 }| d}|t
d	ks[J ttd
g }|t
dksnJ d}ddddgddgfD ]}tjt|d | | W d    n1 sw   Y  qzd S )N皙?
   ?Z   dtype皙?2000-01-10 19:12:00      ?z24:00:00NaTr   z2percentiles should all be in the interval \[0, 1\]         ?)match)quantilenp
percentiledropnar   objectindex	to_seriesr   diffpdZto_timedeltaZtimedelta64sum	TimedeltapytestZraises
ValueError)selfdatetime_seriesqdtsZtdsresultmsginvalid r)   ]/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/series/methods/test_quantile.pytest_quantile   s*   




z TestSeriesQuantile.test_quantilec                 C   s   ddg}| |}tt| dt| dg||jd}t|| |j	 }d|_| d}tt
dt
dgd	d	gdd}t|| | g }tg |jtg td
dd}t|| d S )Nr   r	   r   r
   r   nameZxxx)r   r   r   r   r   float64)r-   r   r   )r   r   r   r   r   r-   tmassert_series_equalr   r   r   r   float)r"   r#   qsr&   expectedr%   r)   r)   r*   test_quantile_multi.   s0   



z&TestSeriesQuantile.test_quantile_multic                 C   sX   |j ddd}|t| dksJ | d}|t| dks$J ||ks*J d S )Nr   Zlinearinterpolationr   )r   r   r   r   )r"   r#   r$   q1r)   r)   r*   test_quantile_interpolationK   s
   
z.TestSeriesQuantile.test_quantile_interpolationc                 C   s   t g djddd}|ttg ddksJ t|s J t g djddd}|ttg ddks:J t|s@J d S )N)         r   lowerr5   2   Zhigher)r   r   r   r   arrayr   )r"   r$   r)   r)   r*   !test_quantile_interpolation_dtypeW   s   z4TestSeriesQuantile.test_quantile_interpolation_dtypec                 C   s   t ddddtjg}|d}d}||ksJ t g td}|t tjtjgg}|D ]8}|d}t|s7J |dg}t|t tjgdgd |d	d
g}t|t tjtjgd	d
gd q)d S )Nr9   r   r:   r;   r   g      @r   r   r   g333333?)r   r   nanr   r   isnanr/   r0   )r"   sr&   r3   s1casesresr)   r)   r*   test_quantile_nanc   s   

"z$TestSeriesQuantile.test_quantile_nancasez
2011-01-01z
2011-01-02z
2011-01-03z
US/Eastern)tzz1 daysz2 daysz3 daysc                 C   sX   t |dd}|d}||d ksJ |dg}t |d gdgdd}t|| d S )NXXX)r-   r   r9   r,   )r   r   r/   r0   )r"   rH   rC   rF   expr)   r)   r*   test_quantile_boxx   s   $
z$TestSeriesQuantile.test_quantile_boxc                 C   s<   t tg dddsJ t tg dddsJ d S )NzM8[ns]r   r   zm8[ns])r   Zisnar   r   )r"   r)   r)   r*   !test_datetime_timedelta_quantiles   s    z4TestSeriesQuantile.test_datetime_timedelta_quantilesc                 C   sZ   t tjtjgd}|tju sJ t tjtjgdg}t|t tjgdgd d S )Nr   r@   )r   r   r   r   r/   r0   )r"   rF   r)   r)   r*   test_quantile_nat   s   z$TestSeriesQuantile.test_quantile_natzvalues, dtype)r   r   r   r9   r   r:   zSparse[int])g        Ng      ?g       @Sparse[float]c                 C   sD   t ||d}|dg}t t|dgd}t|| d S )Nr   r   rO   )r   r   r   Zasarrayastyper/   r0   )r"   valuesr   serr&   r3   r)   r)   r*   test_quantile_sparse   s   z'TestSeriesQuantile.test_quantile_sparsec                 C   s   t g dd}|d}t|sJ |dg}t tjgdgd}t|| t g dd}|d}t|s9J |dg}t tjgdgd}t|| t g dd}|d}|tju s`J |dg}t tjgdgd}t|| d S )Nr.   r   r   r@   Zint64zdatetime64[ns])	r   r   r   rB   rA   r/   r0   r   r   )r"   rC   rF   rK   r)   r)   r*   test_quantile_empty   s$   


z&TestSeriesQuantile.test_quantile_emptyr   Int64c                 C   sb   t g d|dtddd}t tdddtdddd}|d	kr)|d
}t|| d S )N)r9   r   r:   r   r   r9   r   r:   r   r@   rU   ZFloat64)r   r   r   ZarangerP   r/   r0   )r"   r   r&   r3   r)   r)   r*   test_quantile_dtypes   s
     
z'TestSeriesQuantile.test_quantile_dtypesc                 C   sv   t tjtjg|d}td  |ddg}W d    n1 s!w   Y  t tjtjg|ddgd}t|| d S )Nr   r   r   r   r   )r   r   NAr/   Zassert_produces_warningr   r0   r"   Zany_int_ea_dtyperR   r&   r3   r)   r)   r*   test_quantile_all_na   s   z'TestSeriesQuantile.test_quantile_all_nac                 C   sJ   t tjtjdg|d}|ddg}t ddg|ddgd}t|| d S )Nr9   r   r   r   rW   )r   r   rX   r   r/   r0   rY   r)   r)   r*   test_quantile_dtype_size   s   z+TestSeriesQuantile.test_quantile_dtype_sizeN)__name__
__module____qualname__r+   r4   r8   r?   rG   r    markZparametrizer   r   r   r   rL   rM   rN   rS   rT   intr1   rV   rZ   r[   r)   r)   r)   r*   r      s^    






#	

r   )numpyr   r    Zpandas.core.dtypes.commonr   Zpandasr   r   r   Zpandas._testingZ_testingr/   Zpandas.core.indexes.datetimesr   r   r)   r)   r)   r*   <module>   s    