a
    d6                     @   s  d dl Zd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZ ejeg deg dfeg deg dfedd	d
edd	d
fe
dd	d
e
dd	d
fe
dd	dde
dd	ddfgdd ddd ZG dd dZG dd dZG dd dZdd ZG dd dZdd  Zd!d" Zd#d$ Zejjd%g d&e
d'd(d)d*gd+d,gd-d.d/ Zejjd%g d&e
d'd(d)d*gd+d,gd-d0d1 Zd2d3 Zejd4g d5d6d7 Z dS )8    N)IndexIntervalIntervalIndex	Timedelta	Timestamp
date_rangetimedelta_range)IntervalArray)r         )         )              ?       @)r   r         @0 daysr   periods1 dayZ20170101Z20170102
US/Easternr   tzc                 C   s   t | d jS )Nr   )strdtype)x r   s/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/arrays/interval/test_interval.py<lambda>       r   )paramsidsc                 C   s   | j S )zC
    Fixture for building an IntervalArray from various dtypes
    )param)requestr   r   r   left_right_dtypes   s    r%   c                   @   sh   e Zd Zejddededfededfedddedddfgejd	ee	gd
d Z
dS )TestAttributeszleft, rightr   r   r   r   z
2018-01-01z
2018-01-02r   )r   constructorc                 C   sH   ||f||ft jg}t |dkddg}|j||dj}t|| d S )NbothFclosed)npnanarrayfrom_tuplesZis_emptytmZassert_numpy_array_equal)selfr(   leftrightr+   Ztuplesexpectedresultr   r   r   test_is_empty'   s    zTestAttributes.test_is_emptyN)__name__
__module____qualname__pytestmarkparametrizer   r   r	   r   r6   r   r   r   r   r&   &   s   

r&   c                   @   sh   e Zd Zejdg ddd Zejdedddd	ej	g d
dd	gdd Z
dd Zdd ZdS )TestMethods
new_closed)r2   r3   r)   neitherc                 C   s>   t jtd|d}||}t jtd|d}t|| d S )N
   r*   )r	   from_breaksrange
set_closedr0   assert_extension_array_equal)r1   r+   r>   r.   r5   r4   r   r   r   test_set_closed=   s    
zTestMethods.test_set_closedotherr   r   r3   r*   r   r
   r   r   c                 C   s   t tjg ddd}tg d}d}tjt|d |j	|| W d    n1 s\0    Y  |j
||d}|t
||}t|| d S )NrG   r2   r*   )TFTz+'value.closed' is 'right', expected 'left'.match)rF   )pdZSeriesr	   rA   r,   r.   r:   raises
ValueErrorZ_wherewhereastypeobjectr0   Zassert_series_equal)r1   rF   ZsermaskrI   resr4   r   r   r   test_where_raisesE   s    	,zTestMethods.test_where_raisesc                 C   s~   t g d}| }t tjtjfdg}t|| d}tj	t
|d  |jdtjd W d    n1 sp0    Y  d S )N)r   r
   r   )r   r   =can only insert Interval objects and NA into an IntervalArrayrH   r   Z
fill_value)r	   rA   shiftr/   r,   r-   r0   assert_interval_array_equalr:   rK   	TypeErrorrJ   NaTr1   ar5   r4   msgr   r   r   
test_shiftX   s    zTestMethods.test_shiftc                 C   s   t tddd}|d}|jg ddd}t|| |d}|jg d	dd}t|| d
}tjt	|d& |jdt
ddd W d    n1 s0    Y  d S )N2000r   r   r
   )r^   r   T)Z
allow_fillr^   )r   r
   r^   rS   rH   r   rX   nsrT   )r	   rA   r   rU   taker0   rV   r:   rK   rW   r,   Ztimedelta64rY   r   r   r   test_shift_datetimed   s    

zTestMethods.test_shift_datetimeN)r7   r8   r9   r:   r;   r<   rE   r   r	   rA   rR   r\   ra   r   r   r   r   r=   <   s   

r=   c                   @   s   e Zd Zdd Zdd ZdS )TestSetitemc           	      C   s"  |\}}|j dd}|j dd}t||}|jjjdvrvd}tjt|d t	j
|d< W d    n1 sl0    Y  |jjjdv rd}tjt|d tj|d< W d    n1 s0    Y  d S tj|d< t|jgt|d	d   }t|jgt|d	d   }t||}t|| d S )
NTdeep)mMz='value' should be an interval type, got <.*NaTType'> instead.rH   r   )iuz4Cannot set float NaN to integer-backed IntervalArrayr   )copyr	   from_arraysr   subtypekindr:   rK   rW   rJ   rX   r,   r-   r   Z	_na_valuelistr0   rD   )	r1   r%   r2   r3   r5   r[   Zexpected_leftZexpected_rightr4   r   r   r   test_set_nau   s$    ((
zTestSetitem.test_set_nac                 C   s&  t td}| }|d}d}tjt|d |d |d< W d    n1 sT0    Y  tjt|d$ |d d |d d< W d    n1 s0    Y  tjt|d$ |d d |d d< W d    n1 s0    Y  tjt|d& |d d d |d d < W d    n1 s0    Y  tjt|d* t|d d d |d d < W d    n1 sh0    Y  tjt|d, |d d d 	t
|d d < W d    n1 s0    Y  tjt|d, |d d d 	d|d d < W d    n1 s 0    Y  g |d d< t|| d S )	Nr   r)   z*'value.closed' is 'both', expected 'right'rH   r   r   r^   category)r	   rA   rB   ri   rC   r:   rK   rL   rm   rN   rO   r0   rV   )r1   arrorigrF   r[   r   r   r   test_setitem_mismatched_closed   s(    
*226:<<z*TestSetitem.test_setitem_mismatched_closedN)r7   r8   r9   rn   rr   r   r   r   r   rb   t   s   rb   c                  C   s*   t ddg} t| }d}||ks&J d S )Nr'   )r   r
   zI<IntervalArray>
[(0, 1], (1, 2]]
Length: 2, dtype: interval[int64, right])r	   r/   repr)rp   r5   r4   r   r   r   	test_repr   s
    rt   c                   @   s   e Zd Zdd Zdd ZdS )TestReductionsc              	   C   s,  |\}}|j dd}|j dd}t||}d}dD ]x}tjt|d |j|d W d    n1 sh0    Y  tjt|d |j|d W d    q41 s0    Y  q4d}tjt|d |jdd W d    n1 s0    Y  tjt|d |jdd W d    n1 s0    Y  d S )	NTrc   z2`axis` must be fewer than the number of dimensions)r   rH   )axisz'>=' not supported betweenZfoo)	ri   r	   rj   r:   rK   rL   minmaxrW   )r1   r%   r2   r3   rp   r[   rw   r   r   r   test_min_max_invalid_axis   s    *,*z(TestReductions.test_min_max_invalid_axisc                 C   s  |\}}|j dd}|j dd}t||}|js6J t|jsDJ |d }|d }tt|}tj	d
| ||}|dtj}	||}||	}	dD ]\}
|j|
d}||ksJ t|t|ksJ |j|
d}||ksJ t|t|ksJ q|	jdd}t|sJ |	jdd}t|s6J |	jdd}||ksPJ t|t|ksfJ |	jdd}||ksJ t|t|ksJ d S )	NTrc   r   r^   r
   )TF)skipnaF)ri   r	   rj   Zis_monotonic_increasingr   r,   ZarangelenrandomZdefault_rngshuffler`   insertr-   rx   typery   isnan)r1   r%   Zindex_or_series_or_arrayr2   r3   rp   ZMINMAXZindexerZarr_nar{   rQ   r   r   r   test_min_max   s>    

zTestReductions.test_min_maxN)r7   r8   r9   rz   r   r   r   r   r   ru      s   ru   c                  C   s   t d} ddlm} ||  d}||  d}||  d}|jdksNJ ||ksZJ ||ksfJ t|t|kszJ t|t|ksJ d S )Npyarrowr   ArrowIntervalTyper2   r3   )r:   importorskip(pandas.core.arrays.arrow.extension_typesr   int64r+   hash)par   p1p2Zp3r   r   r   test_arrow_extension_type   s    
r   c                  C   s  t d} ddlm} tjddddj}| |}t|j|sBJ |jj	|j	ksTJ |jj
|  kshJ |jd| jg dd	d
sJ |jd| jg dd	d
sJ | dd tddD }|j|sJ | j||jd
}||sJ t jtdd | j|dd
 W d    n1 s,0    Y  t jtdd( | j|||  dd
 W d    n1 st0    Y  d S )Nr   r   r   r   r   )freqr2   rG   r   r   r3   )r
   r   r   r   c                 S   s   g | ]}||d  dqS )r   r2   r3   r   ).0rg   r   r   r   
<listcomp>  r    z$test_arrow_array.<locals>.<listcomp>z&Not supported to convert IntervalArrayrH   float64)r:   r   r   r   rJ   Zinterval_ranger.   
isinstancer   r+   rk   r   storagefieldequalsrB   rK   rW   r   )r   r   Z	intervalsr5   r4   r   r   r   test_arrow_array
  s"    

$$.r   c                  C   s  t d} ddlm} tg d}d |d< | |}t|j|sFJ |jj	|j	ksXJ |jj
|  kslJ | jg ddd}| jg d	dd}|jd
|sJ |jd|sJ dddd d ddddg}| jj|tg dd}|j|sJ d S )Nr   r   r   r   r   r   r   r   )r   Nr   r   r   )r   Nr   r2   r3   r   r   r   r   r   )FTF)rP   )r:   r   r   r   r	   rA   r.   r   r   r+   rk   r   r   r   r   ZStructArrayZfrom_pandasr,   )r   r   rp   r5   r2   r3   valsr4   r   r   r   test_arrow_array_missing'  s$    

r   breaksr   Z2017r   D)r   r   floatzdatetime64[ns])r"   c           	      C   s   t d}ddlm} t| }d |d< td|i}||}t	|
dj|sVJ | }t	|d jtjstJ t|| |||g}| }tj||gdd}t|| |j|jg |djdg|jd	}| }t||dd  d S )
Nr   r   r   r   rZ   T)Zignore_indexr   )schema)r:   r   r   r   r	   rA   rJ   	DataFrametabler   r   r   	to_pandasr   IntervalDtyper0   assert_frame_equalZconcat_tablesconcatchunked_arraycolumnr   )	r   r   r   rp   dfr   r5   Ztable2r4   r   r   r   test_arrow_table_roundtripD  s&    


r   c                 C   sz   t d}t| }d |d< td|i}||}| }|jj	d u sLJ |
 }t|d jtjsjJ t|| d S )Nr   r   rZ   )r:   r   r	   rA   rJ   r   r   Zreplace_schema_metadatar   metadatar   r   r   r   r0   r   )r   r   rp   r   r   r5   r   r   r   +test_arrow_table_roundtrip_without_metadatae  s    


r   c                  C   s   t d} | ddddddg}tjtddd}||}tj	tjg d	dd
dd}t
|| || |g}t
|| d S )Nr   r   r   r   r
   r   r?   r*   )r   r   r
   )r   )r:   r   r.   rJ   r   r,   r   Z__from_arrow__r	   rA   r0   rD   r   )r   rp   r   r5   r4   r   r   r   %test_from_arrow_from_raw_struct_array{  s    

r   timezone)UTCz
US/PacificGMTc                 C   sj   t dd| d}d|  d| d}tjddgdd	g||d
}tj|d d |dd  |d}t|| d S )NZ2022r   r   zinterval[datetime64[ns, z], ]z
2022-01-01z
2022-01-02z
2022-01-03)r+   r   r^   r   r*   )r   r   rj   r0   Zassert_index_equal)r   Zinclusive_endpoints_fixturedatesr   r5   r4   r   r   r   test_interval_index_subtype  s    r   )!numpyr,   r:   ZpandasrJ   r   r   r   r   r   r   r   Zpandas._testingZ_testingr0   Zpandas.core.arraysr	   Zfixturer%   r&   r=   rb   rt   ru   r   r   r   r;   r<   r   r   r   r   r   r   r   r   <module>   sP   $	

85E

