3
UdYq                 @   s   d dl m Z 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j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 )    )datetime	timedeltaN)period)InvalidIndexError)	DatetimeIndexNaTPeriodPeriodIndexSeries	Timedelta
date_rangenotnaperiod_rangec               @   s\   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	dd Z
dd Zdd ZdS )TestGetItemc             C   s6   t ddddd}|d }|j|s&t||k	s2td S )Nz
2011-01-01z
2011-01-31Didx)freqname.)r   equalsAssertionError)selfr   result r   ]/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/indexes/period/test_indexing.pytest_ellipsis   s    zTestGetItem.test_ellipsisc             C   s,   t ddddd}|j|dd  jks(td S )NZ20010101
   r   Zbob)periodsr   r      )r   r   r   )r   r   r   r   r   test_getitem_slice_keeps_name"   s    z)TestGetItem.test_getitem_slice_keeps_namec             C   s  t ddddd}x|gD ]x}|d }|tdddks<t|d }|tdddksXt|dd	 }t dd
ddd}tj|| |j|jkst|jdkst|ddd }tddd
ddgddd}tj|| |j|jkst|jdkst|ddd }tdddddgddd}tj|| |j|jks2t|jdksBt|dd d }td
ddddgddd}tj|| |j|jkst|jdkstqW d S )Nz
2011-01-01z
2011-01-31r   r   )r   r   r   )r   r      z
2011-01-05r      z
2011-01-03z
2011-01-07z
2011-01-09      z
2011-01-12z
2011-01-15z
2011-01-18z
2011-01-21z
2011-01-24   z
2011-01-04z
2011-01-02ir$   )r   r   r   tmassert_index_equalr   r	   )r   idx1r   r   expectedr   r   r   test_getitem&   sF    zTestGetItem.test_getitemc             C   s   t ddddd}|dddg }td	d
dgddd}tj|| |ddddddddddg
 }tdd	ddgddd}tj|| d S )Nz2007-01r   Mx)r   r   r   r   r"   r   z2007-02z2007-04z2007-06)r   r   TFz2007-07)r   r	   r&   r'   )r   r   r   expr   r   r   test_getitem_indexT   s    zTestGetItem.test_getitem_indexc             C   sT  t dddd}ttjjt||}tjtdd |d  W d Q R X |d }|j	j
d	kj sbt|dd
 }t|dks~t|dd }t|dkst|dd }t|dkst|d d
 }t|dkst|d
d  }t|dkst|}|dd  }tj|| |dd  j|dd  }d}tjt|d |tdd
  W d Q R X d S )Nz2007-012   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randomZrandnlenpytestraisesKeyErrorindexyearallr   r&   assert_series_equalappendslice)r   rngtsr   r-   msgr   r   r   test_getitem_partiala   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j|| d S )Nz
2012-01-01r   zW-MON)startr   r   )r:   i  r    i  r#   r!   )r   r
   ranger6   r   r&   r=   )r   r@   rA   Zdt1Zdt4rsr   r   r   test_getitem_datetime   s    z!TestGetItem.test_getitem_datetimec             C   s   t dddgdd}|d tdddks*t|d tks:ttjdddg|d	}|t dks^ttj||d	}|tddd tdddkst|t tkstd S )
Nz2011-01r   z2011-02r+   )r   r   r   r    )r:   )r	   r   r   r   pdr
   )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j|tdddg | d S )	Nz
2012-01-01r   r   )rD   r   r   )r:   r   z
2012-01-02)r   )r   r
   rE   r6   ilocr&   r=   r   )r   r@   rA   r-   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}x||gD ]}ddddd	g}x|D ]}q>q>W ttjjt||d
}tj|d |dd  tj|d |d d  xdD ]}tj|| | qW q&W d S )Nz2013/01/01 09:00:00Si  )rD   r   r   2014z2013/02z
2013/01/02z2013/02/01 9Hz2013/02/01 09:00)r:   z2013/01/01 10:00i  iL  z2013/01/01 9H
2013/01/012013/012013)rO   rP   rQ   )	r   r   r
   r4   r5   randr6   r&   r=   )r   didxpidxr   valuesvrI   dr   r   r   test_getitem_seconds   s    

z TestGetItem.test_getitem_secondsc             C   s   t dddd}tdddd}x||gD ]}ddddd	g}x|D ]}q>q>W ttjjt||d
}tj|d |dd  tj|d |dd  tj|d |dd   dd	g}x.|D ]&}t	j
t|d ||  W d Q R X qW q&W d S )Nz
2013/01/01r   i  )rD   r   r   rN   z2013/02z
2013/01/02z2013/02/01 9Hz2013/02/01 09:00)r:   z2013/01r      ;   im  )r0   )r   r   r
   r4   r5   rR   r6   r&   r=   r7   r8   r9   )r   rS   rT   r   rU   rV   rI   invalidr   r   r   test_getitem_day   s$    

zTestGetItem.test_getitem_dayN)__name__
__module____qualname__r   r   r*   r.   rC   rG   rJ   rL   rX   r\   r   r   r   r   r      s   ."
r   c               @   s4   e Z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 |j| W d Q R X y|j| W n4 tk
r~ } z|jd |ksntW Y d d }~X nX d S )	Nz2000-1-1Ar   )r   r   Z2012z^Period\('2012', 'A-DEC'\)$)r0   r   )r   r   r7   r8   r9   get_locargsr   )r   r   Z
bad_periodinstr   r   r   test_get_loc_msg   s    
zTestGetLoc.test_get_loc_msgc             C   s   t dddg}tdddgdd}x^||gD ]R}|jtdks@t|jd dksRt|jtddksht|jtjdks*tq*W d S )Nz
2011-01-01r   z
2011-01-03r+   )r   r   nan)r   r	   rb   r   r   floatr4   rf   )r   rS   rT   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}|j||ks@t|jt||ksVt|j||ksht|jt||ks~td}tjt|d |jd W d Q R X tjtd	d |jd
 W d Q R X tjtt	j
t|d |j| W d Q R X t|||g}tdd}d}|j||ks(t|jt||ks@t|j||ksTt|jt||ksltd}tjt|d |jd W d Q R X tjtd	d |jd
 W d Q R X tjtt	j
t|d |j| W d Q R X t|||g}	d}
tjdddg}|	j||
kst|	jt||
ks4ttj|	j|| tj|	jt|| d S )Nz
2017-09-01z
2017-09-02z
2017-09-03r   r    z Cannot interpret 'foo' as period)r0   fooz^1\.1$g?r   TF)r   r	   rb   r   strr7   r8   r9   r   reescaper?   r4   arrayr&   assert_numpy_array_equal)r   p0p1p2idx0Zexpected_idx1_p1Zexpected_idx1_p2rB   r(   idx2Zexpected_idx2_p1Zexpected_idx2_p2r   r   r   test_get_loc   sL    
zTestGetLoc.test_get_locc             C   sl   t ddd}|jd}tjtdd |jd W d Q R X |jd}tjtd	d |jd
 W d Q R X d S )Nz
2016-01-01r"   )r   r   Z16801)r0   iA  YZ46.   )r   	to_periodr7   r8   r9   rb   )r   dtipipi2r   r   r   test_get_loc_integer0  s    

zTestGetLoc.test_get_loc_integerc          "   C   s  t ddd}xdD ]}|j|d |dks.t|j|d jdd	d
|dksPt|j|d j |dkslt|j|d j j |dkst|jt|d |dkstqW t dddd d d }|jdddddkst|jddtdddkst|jddtj	ddddkst|jddt
dddks6td}tjt|d |jdddd W d Q R X d}tjt|d |jdddd W d Q R X tjtdd |jdddd W d Q R X tjtdd* |jddtdj tdj gd W d Q R X d S )Nz
2000-01-01r"   )r   padbackfillnearestr   HrD   )howr   r    z2000-01-02T12z1 day)method	toleranceZ1Dr   zunit abbreviation w/o a number)r0   z
2000-01-10ri   z8Input has different freq=None from PeriodArray\(freq=D\)z1 hourz^Period\('2000-01-10', 'D'\)$z5list-like tolerance size must match target index size)Nr|   r}   r~   )r   rb   r   asfreqto_timestampZto_pydatetimerj   r   r4   timedelta64r   r7   r8   
ValueErrorr9   to_timedelta64)r   r   r   rB   r   r   r   test_get_loc2;  s<    
"  

zTestGetLoc.test_get_loc2N)r]   r^   r_   re   rh   rt   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	S )
TestGetIndexerc             C   s*  t d}t d}t d}t d}t d}t d}t d}t|||g}tj|j|tjdd	d
gtjd t||||g}	tj|j|	dtjddd	d
gtjd tj|j|	dtjdd	d
dgtjd tj|j|	dtjddd	d
gtjd |j|	dtdd}
tj|
tjddd	dgtjd d S )Nz
2017-09-01z
2017-09-04z
2017-09-07z
2017-08-31z
2017-09-02z
2017-09-05z
2017-09-09r   r   r    )dtyper|   r}   r~   z1 day)r   r$   r$   r$   )	r   r	   r&   rn   get_indexerr4   rm   intpr   )r   rp   rq   p3Ztp0Ztp1Ztp2Ztp3r   targetresr   r   r   test_get_indexerl  s&     $$$zTestGetIndexer.test_get_indexerc             C   s   t ddd}|jd}|jd}tjd	d
dgtjd}|j|}tj|| |j|}tj|| |j|}tj|| |j|d }tj|| |j|d }tj|| |j|d }tj|| d S )Nz
2016-01-01r"   )r   r   Wr   )r   r   r$   r$   r$   )	r   rw   r4   rm   r   r   r&   rn   get_indexer_non_unique)r   rx   ry   rz   r)   r   r   r   r   !test_get_indexer_mismatched_dtype  s     




z0TestGetIndexer.test_get_indexer_mismatched_dtypec       
      C   s   t d}t d}t d}t d}t|||g}t||||g}|j|}tjdddd
dgtjd}tjdd	gtjd}	tj|d | tj|d |	 d S )Nz
2017-09-02z
2017-09-03z
2017-09-04z
2017-09-05r   r   r    )r   r"   r$   r$   )	r   r	   r   r4   rm   r   Zint64r&   rn   )
r   rp   rq   r   Zp4r(   rs   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j|j|tjddd	gtjd
 tdddgdd}tj|j|dtjdddgtjd
 tj|j|dtjddd	gtjd
 tj|j|dtjdddgtjd
 tj|j|dddtjdddgtjd
 d}t	j
t|d |j|ddd W d Q R X tj|j|dddtjdddgtjd
 tdtdtjddg}tj|j|ddd |D dtjdd dgtjd
 tdj tdj tjddg}t	j
tjdd |j|d|d W d Q R X d S )!Nz
2000-01-01r"   )r   r   rD   )r   r   r   r    )r   z1999-12-31T23z2000-01-01T12z2000-01-02T01)r   r|   r}   r~   z1 hour)r   z8Input has different freq=None from PeriodArray\(freq=H\))r0   z1 minutez1 dayr   c             S   s   g | ]}t j|qS r   )r4   r   ).0r,   r   r   r   
<listcomp>  s    z4TestGetIndexer.test_get_indexer2.<locals>.<listcomp>z2 hourr+   z"Input has different freq=None fromr$   r$   r$   )r   r   r&   rn   r   r4   rm   r   r	   r7   r8   r   r   r   r   	libperiodIncompatibleFrequency)r   r   r   rB   Ztol_rawZtol_badr   r   r   test_get_indexer2  sB     """

z TestGetIndexer.test_get_indexer2N)r]   r^   r_   r   r   r   r   r   r   r   r   r   k  s   r   c               @   sD   e Zd Zejjdeeej	e
gdd Zdd Zdd Zdd	 Zd
S )	TestWhereklassc             C   s   t dddd}dgt| }|}|j||}tj|| dgdgt|d   }ttg|dd  j  dd}|j||}tj|| d S )	N20130101r   r   )r   r   TFr   )r   )r   r6   wherer&   r'   r	   r   tolist)r   r   icondr)   r   r   r   r   
test_where  s    zTestWhere.test_wherec             C   s   t dddd}x6tjtgD ](}|jt|tjd}|}tj|| qW |j }t	ttg|dd  j
  dd}|jt||}tj|| |j }t	ttg|dd  j
  dd}|jt||j}tj|| d S )Nr   r   r   )r   r   )otherr    )r   )r   r4   rf   r   r   r   r&   r'   copyr	   r   rU   )r   r   Zarrr   r)   i2r   r   r   test_where_other  s      zTestWhere.test_where_otherc          !   C   s   t dddd}tttg|dd  j  dd}tjtdd |jt||j	 W d Q R X tjtdd |jt||j	j
d	 W d Q R X tjtdd |jt||jd
 W d Q R X tjtdd |jt|tdd W d Q R X d S )Nr   r   r   )r   r   r    )r   zWhere requires matching dtype)r0   ztimedelta64[ns]rM   r#   )days)r   r	   r   r   r7   r8   	TypeErrorr   r   asi8viewr   r   )r   ry   r   r   r   r   test_where_invalid_dtypes  s     " z#TestWhere.test_where_invalid_dtypesc             C   sX   t dddd}tjdddddg}d}tjt|d |j|tjd	d
 W d Q R X d S )Nr   r   r   )r   r   TFzWhere requires matching dtype)r0   r   ns)r   r4   rm   r7   r8   r   r   r   )r   ry   r   rB   r   r   r   test_where_mismatched_nat   s
    z#TestWhere.test_where_mismatched_natN)r]   r^   r_   r7   markparametrizelisttupler4   rm   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}x|gD ]}|jdg}|tdddks@t|jdg}|td	ddks`t|jdd
dg}t ddddd}tj|| |jdkst|j|jkst|jdddg}tdddgddd}tj|| |j|jkst|jdkst|jddd
g}tdddgddd}tj|| |j|jks:t|jdksJt|jdddg}tddd	gddd}tj|| |j|jkst|jdkst|jdddg}tddd	gddd}tj|| |j|jkst|jdkstqW d S )Nz
2011-01-01z
2011-01-31r   r   )r   r   r   )r   r   z
2011-01-06r   r    z
2011-01-03r#   z
2011-01-05   z
2011-01-08z
2011-01-02r"   z
2011-01-04z
2011-01-29)r   taker   r   r&   r'   r   r	   )r   r(   r   r   r)   r   r   r   	test_take+  sF    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}|jddddg}|ddddg }xJ||gD ]>}tj|| t|tst|j|jkst|j	|j	ksrtqrW d S )Nz1/1/10z12/31/12r   r   )rD   endr   r   i  r      r   	      )r   r   r         )
r   r	   r   r   r&   r'   
isinstancer   r   r   )r   r:   r)   Ztaken1Ztaken2Ztakenr   r   r   test_take_misc\  s    


zTestTake.test_take_miscc             C   sb  t dddgddd}|jtjdddg}t dddgddd}tj|| |jtjdddgd	d
}t dddgddd}tj|| |jtjdddgdd	d}t dddgddd}tj|| d}tjt|d  |jtjdddgd	d
 W d Q R X tjt|d  |jtjdddgd	d
 W d Q R X d}tjt	|d |jtjddg W d Q R X d S )Nz
2011-01-01z
2011-02-01z
2011-03-01Zxxxr   )r   r   r   r   T)
fill_valuer   F)Z
allow_fillr   zJWhen allow_fill=True and fill_value is not None, all indices must be >= -1)r0   r    r   z3index -5 is out of bounds for( axis 0 with)? size 3r$   r$   r$   r%   r%   )
r	   r   r4   rm   r&   r'   r7   r8   r   
IndexError)r   r   r   r)   rB   r   r   r   test_take_fill_valuer  s,    $$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dd Zdd Zejjdddgdd	 Zd
d Z	dS )TestGetValuec             C   s>  t d}t d}t d}t|||g}tjtjdddg|d}d}tjt |j	||}W d Q R X ||ksrt
t|||g}tjtjdddg|d}	|	jddg }
tjt |j	|	|}W d Q R X tj||
 t|||g}tjtjdddg|d}|jddg }tjt |j	||}W d Q R X tj|| d S )	Nz
2017-09-01z
2017-09-02z
2017-09-03r   r    r"   )r:   r   )r   r	   rH   r
   r4   rm   r&   assert_produces_warningFutureWarning	get_valuer   rK   r=   )r   ro   rp   rq   rr   Zinput0Z	expected0Zresult0r(   Zinput1Z	expected1Zresult1rs   Zinput2Z	expected2Zresult2r   r   r   test_get_value  s*    zTestGetValue.test_get_valuec             C   s8   t jdddd}t jtd|d}|jd dks4td S )N2000r!   B)rD   r   r   )r:   z
2000-01-14r   )rH   r   r
   rE   locr   )r   r:   Zseriesr   r   r   test_loc_str  s    zTestGetValue.test_loc_strr   r   r   c          ,   C   s  t dddd}|j|}tjtdd|d}|d }|j|dksFttjt	 |j
||dksftW d Q R X || dkst|j| dkst|tdd	 }|d
krRtjtdd |j| W d Q R X tjtdd( tjt	 |j
|| W d Q R X W d Q R X tjtdd ||  W d Q R X tjtdd |j|  W d Q R X nf|j|dksfttjt	 |j
||dkstW d Q R X || dkst|j| dkstd S )Nz
2016-01-01r"   ZMS)r   r   r   r   )r:   r   )hoursr   z2016-01-01 03:00)r0   )r   rw   rH   r
   rE   rb   r   r&   r   r   r   r   r   r7   r8   r9   )r   r   rx   ry   serrA   Zts2r   r   r   test_get_value_datetime_hourly  s2    

  z+TestGetValue.test_get_value_datetime_hourlyc             C   s   d}t ddd}|jd}tjtd|d}tjt|d( tj	t
 |j|d W d Q R X W d Q R X d	}|jd
}tjtd|d}tjt|d( tj	t
 |j|d W d Q R X W d Q R X d S )Nz3index 16801 is out of bounds for axis 0 with size 3z
2016-01-01r"   )r   r   )r:   )r0   iA  z0index 46 is out of bounds for axis 0 with size 3ru   rv   )r   rw   rH   r
   rE   r7   r8   r   r&   r   r   r   )r   rB   rx   ry   r   rz   Zser2r   r   r   test_get_value_integer  s    
 
z#TestGetValue.test_get_value_integerN)
r]   r^   r_   r   r   r7   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 )TestContainsc       
      C   s   t d}t d}t d}t d}|||g}t|}tjtdd|d}x(|D ] }||ks\tt||ksLtqLW d}	|	|ksttjt	|	d	 |j
|	 W d Q R X tjt	|	d	( tjt |j||	 W d Q R X W d Q R X d
|kst||kstd S )Nz
2017-09-01z
2017-09-02z
2017-09-03z
2017-09-04r   r   )r:   z2017-09-01 00:00:01)r0   z2017-09)r   r	   rH   r
   rE   r   rj   r7   r8   r9   rb   r&   r   r   r   )
r   ro   rp   rq   r   Zps0rr   r   pkeyr   r   r   test_contains  s&    

 zTestContains.test_containsc             C   sN   t dddd}tddd|ks"ttddd|ks6ttddd|ksJtd S )Nz2007-01r+   r   )r   r   )r   r   Z2M)r   r   r   )r   r@   r   r   r   test_contains_freq_mismatch  s    z(TestContains.test_contains_freq_mismatchc             C   s   t dddd}t|kstd |ks&ttd|ks6ttj|ksDttdddgdd	}t|ksbtd |ksnttd|ks~ttj|kstd S )
Nz2007-01r+   r   )r   r   rf   z2011-01r   z2011-02)r   )r   r   r   rg   r4   rf   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   s   t jddd}|jd}|jd}tjdddgtd}d	}tjt|d
 |j	t j
|j| W d Q R X tjt|d
 |j	t j|j| W d Q R X tjt|d
 |j	|| | W d Q R X d}tjtj|d
 |j	|| W d Q R X d S )Nz
2016-01-01r"   )r   r   r   r   r   )r   z$must be DatetimeIndex or PeriodIndex)r0   zInput has different freq=H)rH   r   rw   r4   rm   boolr7   r8   r   Z	asof_locsZ
Int64Indexr   ZFloat64Indexr   r   )r   rx   ry   rz   maskrB   r   r   r   test_asof_locs_mismatched_type%  s    

z+TestAsOfLocs.test_asof_locs_mismatched_typeN)r]   r^   r_   r   r   r   r   r   r   $  s   r   )!r   r   rk   Znumpyr4   r7   Zpandas._libs.tslibsr   r   Zpandas.errorsr   ZpandasrH   r   r   r   r	   r
   r   r   r   r   Zpandas._testingZ_testingr&   r   r`   r   r   r   r   r   r   r   r   r   r   <module>   s&   ,
 G  ;oW4