a
    Pfl                     @   sz  d dl m Z  d dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
Zd dl
mZmZmZmZmZmZmZmZmZ d dlmZ edddZedd	 Zeed
Zejeededeed   eeg deg dejg dddej !eg	ddd Z"G dd dZ#G dd dZ$G dd dZ%G dd dZ&G dd dZ'G dd  d Z(G d!d" d"Z)G d#d$ d$Z*dS )%    )datetimeN)period)InvalidIndexError)	DatetimeIndexNaTPeriodPeriodIndexSeries	Timedelta
date_rangenotnaperiod_range
2016-01-01   periods   UTCW      r   )g       @g      @g      @)r         u8dtype)paramsc                 C   s   | j S )N)param)request r!   b/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/indexes/period/test_indexing.pynon_comparable_idx   s    r#   c                   @   sn   e Zd Zdd Z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deegdd ZdS )TestGetItemc                 C   s,   t ddddd}|j|dd  jks(J d S )NZ20010101
   DZbobr   freqnamer   )r   r)   selfidxr!   r!   r"   test_getitem_slice_keeps_name0   s    z)TestGetItem.test_getitem_slice_keeps_namec                 C   s  t ddddd}|fD ]f}|d }|tdddks8J |d }|tdddksTJ |dd	 }t dd
ddd}t|| |j|jksJ |jdksJ |ddd }tg dddd}t|| |j|jksJ |jdksJ |ddd }tg dddd}t|| |j|jks"J |jdks2J |dd d }tg dddd}t|| |j|jkspJ |jdksJ qd S )N
2011-01-01
2011-01-31r&   r,   r(   r)   r   r(   r   r   
2011-01-05r%   r   )r.   
2011-01-03r2   z
2011-01-07z
2011-01-09ir   )z
2011-01-12z
2011-01-15z
2011-01-18z
2011-01-21z
2011-01-24r   )r2   
2011-01-04r3   
2011-01-02r.   )r   r   tmassert_index_equalr(   r   r+   idx1r,   resultexpectedr!   r!   r"   test_getitem4   sL    zTestGetItem.test_getitemc                 C   sh   t ddddd}|g d }tg dddd}t|| |g d	 }tg d
ddd}t|| d S )N2007-01r%   Mxr'   )r   r   r   )2007-02z2007-042007-06r0   )
TTFFFTTFFF)r>   rA   rB   z2007-07)r   r   r7   r8   )r+   r,   r;   expr!   r!   r"   test_getitem_indexb   s    
zTestGetItem.test_getitem_indexc                 C   s  t dddd}ttjdt||}tjt	dd |d  W d    n1 sV0    Y  |d	 }|j
jd
k s|J |d	d }t|dksJ |dd }t|dksJ |dd }t|dksJ |d d }t|dksJ |dd  }t|dks
J |}|dd  }t|| t|dd  |dd  g}d}tjt	|d |td	d  W d    n1 s|0    Y  d S )Nr>   2   r?   r   r(   r   z^'2006'$matchZ2006Z2008i  Z2009   z2008-1z2009-12Z2008Q1Z2009Q4$      r%   z-left slice bound for non-unique label: '2008')r   r	   nprandomdefault_rngZstandard_normallenpytestraisesKeyErrorindexyearallr7   assert_series_equalpdconcatslice)r+   rngtsr;   rC   msgr!   r!   r"   test_getitem_partialo   s.    &z TestGetItem.test_getitem_partialc                 C   sV   t dddd}ttt||d}tddd}tdd	d
}||| }t|| d S )N
2012-01-01r%   zW-MONstartr   r(   rS   i  r   i  r      )r   r	   rangerO   r   r7   rV   )r+   rZ   r[   Zdt1Zdt4rsr!   r!   r"   test_getitem_datetime   s    z!TestGetItem.test_getitem_datetimec                 C   s   t g ddd}|d tdddks(J |d tu s8J tg d|d}|t dksXJ t||d}|tddd tdddksJ |t tu sJ d S )	N2011-01r   z2011-02r?   r1   r   rg   r   r   r   r   ra   )r   r   r   r	   )r+   r,   sr!   r!   r"   test_getitem_nat   s     zTestGetItem.test_getitem_natc                 C   sL   t dddd}ttt||d}|jdg }t|tdddg | d S )	Nr^   r%   r&   r_   ra   r   z
2012-01-02r1   )r   r	   rc   rO   Zilocr7   rV   r   )r+   rZ   r[   rC   r!   r!   r"   test_getitem_list_periods   s    z%TestGetItem.test_getitem_list_periodsc              
   C   s   t dddd}tdddd}||fD ]}g d}|D ]:}tjtdd ||  W d    q41 sd0    Y  q4ttjdt	||d	}t
|d
 |dd  t
|d |d d  dD ]}t
|| | qq$d S )Nz2013/01/01 09:00:00ri   i  r`   r(   r   20142013/02z
2013/01/022013/02/01 9h2013/02/01 09:00only integers, slicesrG   r   ra   z2013/01/01 10:00i  iL  z2013/01/01 9h)
2013/01/012013/01Z2013)r   r   rP   rQ   
IndexErrorr	   rL   rM   rN   rO   r7   rV   )r+   didxpidxr,   valuesvalserdr!   r!   r"   test_getitem_seconds   s    (z TestGetItem.test_getitem_seconds	idx_rangec              	   C   s  |dddd}g d}|D ]:}t jtdd ||  W d    q1 sJ0    Y  qttjdt||d	}t	|d
 |dd  t	|d |dd  t	|d |dd   ddg}|D ]:}t jt
|d ||  W d    q1 s0    Y  qd S )Nrs   r&   i  rl   rm   rr   rG   r   ra   rt   r      ro   ;   rn   im  rp   rq   )rP   rQ   ru   r	   rL   rM   rN   rO   r7   rV   rR   )r+   r}   r,   rx   ry   rz   invalidr!   r!   r"   test_getitem_day   s    (zTestGetItem.test_getitem_dayN)__name__
__module____qualname__r-   r=   rD   r]   re   rj   rk   rP   markZarm_slowr|   parametrizer   r   r   r!   r!   r!   r"   r$   /   s    ."

r$   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )
TestGetLocc              
   C   s   t dddd}tdd}tjtdd || W d    n1 sF0    Y  z|| W n6 ty } z|jd |ksJ W Y d }~n
d }~0 0 d S )	Nz2000-1-1Yr%   r(   r   Z2012z^Period\('2012', 'Y-DEC'\)$rG   r   )r   r   rP   rQ   rR   get_locargs)r+   r,   Z
bad_periodinstr!   r!   r"   test_get_loc_msg   s    
(zTestGetLoc.test_get_loc_msgc                 C   s|   t g d}tg ddd}||fD ]R}|tdks:J |d dksLJ |tddksbJ |tjdks$J q$d S )N)r.   r   r3   r?   r1   r   nan)r   r   r   r   floatrL   r   )r+   rv   rw   r,   r!   r!   r"   test_get_loc_nat   s    zTestGetLoc.test_get_loc_natc                 C   s  t d}t d}t d}t|||g}d}d}|||ks@J |t||ksVJ |||kshJ |t||ks~J d}tjt|d |d W d    n1 s0    Y  tjtd	d |d
 W d    n1 s0    Y  tjtt	t|d || W d    n1 s,0    Y  t|||g}t
dd}d}|||ksfJ |t||ks~J |||ksJ |t||ksJ d}tjt|d |d W d    n1 s0    Y  tjtd	d |d
 W d    n1 s0    Y  tjtt	t|d || W d    n1 s\0    Y  t|||g}	d}
tg d}|	||
ksJ |	t||
ksJ t|	|| t|	t|| d S )N
2017-09-01
2017-09-02
2017-09-03r   r   z Cannot interpret 'foo' as periodrG   Zfooz^1\.1$g?r   )TFT)r   r   r   strrP   rQ   rR   r   reescaperY   rL   arrayr7   assert_numpy_array_equal)r+   p0p1p2idx0Zexpected_idx1_p1Zexpected_idx1_p2r\   r:   idx2Zexpected_idx2_p1Zexpected_idx2_p2r!   r!   r"   test_get_loc  sL    ((*
***zTestGetLoc.test_get_locc                 C   s   t ddd}|d}tjtdd |d W d    n1 sD0    Y  |d}tjtd	d |d
 W d    n1 s0    Y  d S )Nr   r   r   r&   Z16801rG   iA  r   Z46.   )r   	to_periodrP   rQ   rR   r   )r+   dtipipi2r!   r!   r"   test_get_loc_integer@  s    
(
zTestGetLoc.test_get_loc_integerc                 C   s   t dddd}tjtdd |d W d    n1 s<0    Y  tg d|d}tjtdd |jd  W d    n1 s0    Y  tjtdd |d  W d    n1 s0    Y  d|vsJ d|vsJ d S )N2000r   A)r   r)   rG   r   ra   )r   rP   rQ   rR   r   r	   loc)r+   r   rz   r!   r!   r"   +test_get_loc_invalid_string_raises_keyerrorJ  s    ((&z6TestGetLoc.test_get_loc_invalid_string_raises_keyerrorc                 C   s   t ddd}|d}|d}||j}tjtdd ||d  W d    n1 s^0    Y  tjtdd ||d  W d    n1 s0    Y  d S )	Nr   r   r   r&   r   zW-SUNrG   r   )r   r   viewr   rP   rQ   rR   r   )r+   r   r   r   Zpi3r!   r!   r"   test_get_loc_mismatched_freqZ  s    

,z'TestGetLoc.test_get_loc_mismatched_freqN)	r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r      s   :
r   c                   @   sN   e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	dd Z
dd ZdS )TestGetIndexerc                 C   s  t d}t d}t d}t d}t d}t d}t d}t|||g}t||tjg dtjd	 t||||g}	t||	d
tjg dtjd	 t||	dtjg dtjd	 t||	dtjg dtjd	 |j|	dtdd}
t|
tjg dtjd	 d S )Nr   
2017-09-04z
2017-09-07z
2017-08-31r   
2017-09-05z
2017-09-09rh   r   pad)r   r   r   r   backfill)r   r   r   r   nearest)r   r   r   r   1 dayZ	tolerance)r   r   r   r   )	r   r   r7   r   get_indexerrL   r   intpr
   )r+   r   r   p3Ztp0Ztp1Ztp2Ztp3r,   targetresr!   r!   r"   test_get_indexerk  s.    zTestGetIndexer.test_get_indexerc                 C   s   t ddd}|d}|d}tjg dtjd}||}t|| ||}t|| ||}t|| ||d }t|| ||d }t|| ||d }t|| d S )	Nr   r   r   r&   r   )r   r   r   r   r   )	r   r   rL   r   r   r   r7   r   get_indexer_non_unique)r+   r   r   r   r<   r;   r!   r!   r"   !test_get_indexer_mismatched_dtype  s     




z0TestGetIndexer.test_get_indexer_mismatched_dtypec                 C   sP   t ddd}|d}|}|d d |}tj|jtjd }t|| d S )Nr   r   r   r&   r   r   )	r   r   r   rL   Zonesshaper   r7   r   )r+   r#   r   r   otherr   r<   r!   r!   r"   2test_get_indexer_mismatched_dtype_different_length  s    
zATestGetIndexer.test_get_indexer_mismatched_dtype_different_lengthmethod)r   r   r   c           	   	   C   s   t ddd}|d}|}td|j d|j }tjt|d |j||d W d    n1 sf0    Y  d	D ]}|	|}|d
krt
|trqtddd d|j d|j dfD }tjt|d |j||d W d    qt1 s0    Y  qtd S )Nr   r   r   r&   zCannot compare dtypes z and rG   )r   )objectcategoryr   |c                 S   s   g | ]}t |qS r!   )r   r   ).0r\   r!   r!   r"   
<listcomp>  s   zPTestGetIndexer.test_get_indexer_mismatched_dtype_with_method.<locals>.<listcomp>z$ not supported between instances of )r   r   r   r   r   rP   rQ   	TypeErrorr   Zastype
isinstancer   join)	r+   r#   r   r   r   r   r\   r   Zother2r!   r!   r"   -test_get_indexer_mismatched_dtype_with_method  s&    
,
	z<TestGetIndexer.test_get_indexer_mismatched_dtype_with_methodc           
      C   s   t d}t d}t d}t d}t|||g}t||||g}||}tjg dtjd}tjddgtjd}	t|d	 | t|d
 |	 d S )Nr   r   r   r   )r   r   r   r   r   r   r   r   r   r   )r   r   r   rL   r   r   r7   r   )
r+   r   r   r   Zp4r:   r   r;   Zexpected_indexerZexpected_missingr!   r!   r"   test_get_indexer_non_unique  s    
z*TestGetIndexer.test_get_indexer_non_uniquec                 C   s  t dddjddd}t||tjg dtjd tg d	dd
}t||dtjg dtjd t||dtjg dtjd t||dtjg dtjd t|j|dddtjg dtjd d}t	j
t|d  |j|ddd W d    n1 s0    Y  t|j|dddtjg dtjd tdtdtddg}t|j|ddd |D dtjg dtjd td td tddg}t	j
tjdd  |j|d|d W d    n1 s0    Y  d S )Nz
2000-01-01r   r   hr`   )howrh   r   )z1999-12-31T23z2000-01-01T12z2000-01-02T01r1   r   )r   r   r   r   r   )r   r   r   z1 hourr   )r   r   r   z8Input has different freq=None from PeriodArray\(freq=h\)rG   z1 minuter   r   r&   c                 S   s   g | ]}t |qS r!   )rL   timedelta64)r   r@   r!   r!   r"   r         z4TestGetIndexer.test_get_indexer2.<locals>.<listcomp>z2 hourr?   z"Input has different freq=None from)r   Zasfreqr7   r   r   rL   r   r   r   rP   rQ   
ValueErrorr
   r   Zto_timedelta64	libperiodIncompatibleFrequency)r+   r,   r   r\   Ztol_rawZtol_badr!   r!   r"   test_get_indexer2  sZ    0



z TestGetIndexer.test_get_indexer2N)r   r   r   r   r   r   rP   r   r   r   r   r   r!   r!   r!   r"   r   j  s   
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestWherec                 C   s   t dddd}dgt| }|}|||}t|| dgdgt|d   }ttg|dd    dd}|||}t|| d S )	N20130101r   r&   rF   TFr   r1   )r   rO   wherer7   r8   r   r   tolist)r+   Zlistlike_boxicondr<   r;   r!   r!   r"   
test_where  s    zTestWhere.test_wherec                 C   s   t dddd}tjtfD ]&}|jt||d}|}t|| q| }t	ttg|dd  
  dd}|t||}t|| | }t	ttg|dd  
  dd}|t||j}t|| d S )Nr   r   r&   rF   )r   r   r1   )r   rL   r   r   r   r   r7   r8   copyr   r   rx   )r+   r   Zarrr;   r<   i2r!   r!   r"   test_where_other#  s      zTestWhere.test_where_otherc           
      C   sv  t dddd}|dd   }tttg| dd}t|}|||j}tjtj	tj	g| t
d}t|d tstJ t|| |jd	}tj|d |d
 g| t
d}t|d tjsJ |||}t|| |d}tj|d |d
 g| t
d}|d tu sJ |||}t|| tdd}	tj|	|	g| t
d}|d |	ksZJ |||	}t|| d S )Nr   r   r&   rF   r   r1   r   r   ztimedelta64[ns]r   ri   r   )days)r   r   r   r   r   r   asi8rW   Index_valuer   r   intr7   r8   r   rL   r   Zto_timestampr
   )
r+   r   tailr   maskr;   r<   Ztdir   tdr!   r!   r"   test_where_invalid_dtypes4  s.    

z#TestWhere.test_where_invalid_dtypesc                 C   sx   t dddd}tg d}tdd}tj|d ||d	 |d
 |gtd}|d |u s\J |||}t	|| d S )Nr   r   r&   rF   )TFTTFr   nsr   r   r   r   r   )
r   rL   r   r   rW   r   r   r   r7   r8   )r+   r   r   Ztdnatr<   r;   r!   r!   r"   test_where_mismatched_natR  s    $z#TestWhere.test_where_mismatched_natN)r   r   r   r   r   r   r   r!   r!   r!   r"   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTakec                 C   s  t ddddd}|fD ]}|dg}|tdddks<J |dg}|td	ddks\J |g d
}t ddddd}t|| |jdksJ |j|jksJ |g d}tg dddd}t|| |j|jksJ |jdksJ |g d}tg dddd}t|| |j|jks,J |jdks<J |g d}tg dddd}t|| |j|jkszJ |jdksJ |g d}tg dddd}t|| |j|jksJ |jdksJ qd S )Nr.   r/   r&   r,   r0   r   r1   r   
2011-01-06rh   r3   )r   r   r   )r.   r3   r2   )   r   r   )z
2011-01-08r2   r6   )r   r   r   )r5   r3   r   )r   r   )z
2011-01-29r3   r   )r   taker   r7   r8   r(   r   r9   r!   r!   r"   	test_take^  sN    



zTestTake.test_takec                 C   s   t ddddd}ttdddtddd	tddd
tdddgddd}|g d}|g d }||fD ]>}t|| t|tsJ |j|jksJ |j|jkshJ qhd S )Nz1/1/10z12/31/12r&   r,   )r`   endr(   r)   i  r   r   r   	      r0   )r   r         )	r   r   r   r   r7   r8   r   r(   r)   )r+   rS   r<   Ztaken1Ztaken2Ztakenr!   r!   r"   test_take_misc  s"    



zTestTake.test_take_miscc                 C   s  t g dddd}|tg d}t g dddd}t|| |jtg ddd}t g d	ddd}t|| |jtg dd
dd}t g dddd}t|| d}tjt|d( |jtg ddd W d    n1 s0    Y  tjt|d( |jtg ddd W d    n1 s:0    Y  d}tjt	|d$ |tddg W d    n1 s0    Y  d S )N)r.   
2011-02-01
2011-03-01Zxxxr&   )r)   r(   )r   r   r   )r   r.   r   T)
fill_value)r   r.   r   F)Z
allow_fillr   zJWhen allow_fill=True and fill_value is not None, all indices must be >= -1rG   )r   r   )r   r   r4   z3index -5 is out of bounds for( axis 0 with)? size 3r   r4   )
r   r   rL   r   r7   r8   rP   rQ   r   ru   )r+   r,   r;   r<   r\   r!   r!   r"   test_take_fill_value  s6    



68zTestTake.test_take_fill_valueN)r   r   r   r   r   r   r!   r!   r!   r"   r   ]  s   1r   c                   @   s&   e Zd Zejdddgdd ZdS )TestGetValuer(   r   r&   c                 C   sf  t dddd}||}ttdd|d}|d }||dksDJ || dksTJ |j| dksfJ |tdd	 }|d
kr(tjt	dd || W d    n1 s0    Y  tjt	dd ||  W d    n1 s0    Y  tjt	dd |j|  W d    n1 s0    Y  n:||dks<J || dksNJ |j| dksbJ d S )Nr   r   ZMSrF   r   r%   ra   r   )hoursr   z2016-01-01 03:00rG   )
r   r   r	   rc   r   r   r
   rP   rQ   rR   )r+   r(   r   r   rz   r[   Zts2r!   r!   r"   test_get_value_datetime_hourly  s$    

(&,z+TestGetValue.test_get_value_datetime_hourlyN)r   r   r   rP   r   r   r   r!   r!   r!   r"   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestContainsc           	      C   s   t d}t d}t d}t d}|||g}t|}|D ] }||v sFJ t||v s6J q6d}||vshJ tjt|d || W d    n1 s0    Y  d|v sJ ||vsJ d S )Nr   r   r   r   z2017-09-01 00:00:01rG   z2017-09)r   r   r   rP   rQ   rR   r   )	r+   r   r   r   r   Zps0r   pkeyr!   r!   r"   test_contains  s    
(zTestContains.test_containsc                 C   sN   t dddd}tddd|v s"J tddd|vs6J tddd|vsJJ d S )Nr>   r?   r%   r   r1   r&   Z2M)r   r   )r+   rZ   r!   r!   r"   test_contains_freq_mismatch  s    z(TestContains.test_contains_freq_mismatchc                 C   s   t dddd}t|vsJ d |vs&J td|vs6J tj|vsDJ tg ddd}t|v s`J d |v slJ td|v s|J tj|v sJ d S )Nr>   r?   r%   r   r   rf   r1   )r   r   r   rL   r   r   r*   r!   r!   r"   test_contains_nat  s    zTestContains.test_contains_natN)r   r   r   r   r   r   r!   r!   r!   r"   r     s   r   c                   @   s   e Zd Zdd ZdS )TestAsOfLocsc                 C   sJ  t ddd}|d}|d}tjg dtd}d}tjt|d	* |t	j
|jtjd| W d    n1 st0    Y  tjt|d	* |t	j
|jtjd| W d    n1 s0    Y  tjt|d	  ||| | W d    n1 s0    Y  d
}tjtj|d	 ||| W d    n1 s<0    Y  d S )Nr   r   r   r&   r   )r   r   r   r   z$must be DatetimeIndex or PeriodIndexrG   zInput has different freq=h)r   r   rL   r   boolrP   rQ   r   Z	asof_locsrW   r   r   Zint64Zfloat64r   r   )r+   r   r   r   r   r\   r!   r!   r"   test_asof_locs_mismatched_type  s    

88.z+TestAsOfLocs.test_asof_locs_mismatched_typeN)r   r   r   r  r!   r!   r!   r"   r     s   r   )+r   r   numpyrL   rP   Zpandas._libs.tslibsr   r   Zpandas.errorsr   ZpandasrW   r   r   r   r   r	   r
   r   r   r   Zpandas._testingZ_testingr7   Zdti4r   r   rc   rZ   ZfixtureZtz_localizer   ZIntervalIndexZfrom_breaksr#   r$   r   r   r   r   r   r   r   r!   r!   r!   r"   <module>   sD   ,


 A{ -Go0