3
UdS                 @   s   d dl Zd dlZd dlmZ d dljj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mZ d dljZddlmZ G dd deZdd	 Zd
d Zejjdddgdd ZdS )    N)IncompatibleFrequency)
	DataFrameDatetimeIndexIndexNaTPeriodPeriodIndexSeries
date_rangeoffsetsperiod_range   )DatetimeLikec                   s  e Zd ZeZejejde	ddddddd} gddgd	d
d Z
edddZdd Zejjddddgdd Zdd Zejjdddgejjde	dddde	dddded d!d"gdd#gd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zejjd<ed=d>ed?d>ged=d>ed?d>d@gdAdAgdAdAejgfed=d>ed?d>ged=d>ed?d>gdAdAgdAdAgfgdBdC Z dDdE Z!dFdG Z"dHdI Z#dJdK Z$dLdM Z%e&j' fdNdOZ(dPdQ Z)dRdS Z*dTdU Z+dVdW Z,dXdY Z-dZd[ Z.d\d] Z/d^d_ Z0d`da Z1dbdc Z2ddde Z3dfdg Z4ejjdhdiedjdkdlffdmedjdndlffdoedjdkdpffdqedredsdlffdtedrdkdnffduedvdkedwffdxedvdpdlffgdydz Z5d{d| Z6  Z7S )~TestPeriodIndex
   20130101D)periodsfreqN   Z	index_incZ	index_dec)paramsidsc             C   s   |j S )N)param)selfrequest r   [/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/indexes/period/test_period.pyindex   s    zTestPeriodIndex.index)returnc             C   s   t ddddS )Nr      r   )r   r   )r   )r   r   r   r   create_index&   s    zTestPeriodIndex.create_indexc             C   s   d S )Nr   )r   r   r   r   test_pickle_compat_construction)   s    z/TestPeriodIndex.test_pickle_compat_constructionr   MAc             C   s0   t ddttjg|d}tj|}tj|| d S )Nz
2016-05-16r   )r   )r   r   npNaNtmround_trip_pickleassert_index_equal)r   r   idxresultr   r   r   test_pickle_round_trip,   s    
z&TestPeriodIndex.test_pickle_round_tripc             C   s   d S )Nr   )r   r   r   r   
test_where2   s    zTestPeriodIndex.test_where	use_numpyTFr   z
2000-01-01   z
2001-01-012Dz2001-01r   z2003-01)r   c             C   sL   t dd |D }|r"tj|dn|jd}tj|| |j|jksHtd S )Nc             S   s   g | ]}t d D ]}|qqS )r.   )range).0p_r   r   r   
<listcomp>A   s    z7TestPeriodIndex.test_repeat_freqstr.<locals>.<listcomp>r.   )r   r$   repeatr&   r(   freqstrAssertionError)r   r   r-   expectedr*   r   r   r   test_repeat_freqstr6   s    z#TestPeriodIndex.test_repeat_freqstrc             C   sP   d}t jt|d tj W d Q R X d}t jt|d tg j W d Q R X d S )Nz:type object 'DatetimeIndex' has no attribute 'millisecond')matchz5'DatetimeIndex' object has no attribute 'millisecond')pytestraisesAttributeErrorr   Zmillisecond)r   msgr   r   r   test_no_millisecond_fieldF   s    z)TestPeriodIndex.test_no_millisecond_fieldc             C   s,   t dddd}td|d}t|ts(td S )Nr#   z1/1/2001z	12/1/2009)r   startendr   )r   )r   r	   
isinstancer7   )r   r   Zseriesr   r   r   test_make_time_seriesO   s    z%TestPeriodIndex.test_make_time_seriesc             C   s(   t g dd}|j }|}tj|| d S )Nr"   )r   )r   _shallow_copyr&   r(   )r   r)   r*   r8   r   r   r   test_shallow_copy_emptyT   s    z'TestPeriodIndex.test_shallow_copy_emptyc          	   C   s8   t dddd}tjtdd |j|j W d Q R X d S )Nz
2018-01-01r.   r/   )r   r   Zndarray)r:   )r   r;   r<   r7   rD   asi8)r   pir   r   r   test_shallow_copy_disallow_i8\   s    z-TestPeriodIndex.test_shallow_copy_disallow_i8c          	   C   s6   t dddd}tjtdd |j| W d Q R X d S )Nz
2018-01-01r.   r/   )r   r   r   )r:   )r   r;   r<   r7   rD   )r   rG   r   r   r   0test_shallow_copy_requires_disallow_period_indexb   s    z@TestPeriodIndex.test_shallow_copy_requires_disallow_period_indexc             C   s   t g dd}tjg tjd}tj|jd| tj|j| t dtgdd}tjddgtjd}tj|jd| tj|j| tjddgtjd}t d	tgd
d}tj|jd| tj|j| d S )Nr"   )r   )dtypei8z2011-01i  l            i:  z
2011-01-01r   l         l         )	r   r$   arrayint64r&   assert_numpy_array_equalviewrF   r   )r   r)   expr   r   r   test_view_asi8g   s    zTestPeriodIndex.test_view_asi8c             C   s.  t g dd}tjg td}tj|j| tj|j | tjg tjd}tj|j	| t dt
gdd}tjtdddt
gtd}tj|j| tj|j | tjdd
gtjd}tj|j	| t dt
gdd}tjtdddt
gtd}tj|j| tj|j | tjd	dgtjd}tj|j	| d S )Nr"   )r   )rJ   z2011-01i  l            z
2011-01-01r   i:  l         l         )r   r$   rL   objectr&   rN   valuesZto_numpyrM   rF   r   r   )r   r)   rP   r   r   r   test_valuesy   s$    zTestPeriodIndex.test_valuesc             C   st  t dddd}t|dkstt dddd}t|dks<tt dddd}t|d ksZttd
d}t |dd}t|dkst|j|jkst|d |ksttdd}t |dd}t|dkst|j|jkst|d! |ksttdd}t |dd}t|t|kst||kj s$t|j|jks6td}tjt|d t ||d W d Q R X tdd}t ||d}d}tjt|d t |d W d Q R X t	|tddg}t|dkst|d |kstt	t
j|tddg}t|dkst|d |kst|tddg}d}tjt|d t	| W d Q R X t
j|}tjt|d t	| W d Q R X d S )"Nr#   z1/1/2001z	12/1/2009)r   r@   rA   	   Q   r"      z02-Apr-2005B   )r@   r   r   z
2006-12-31Wr   )rA   r   r   Z1wz!start and end must have same freq)r:   )r@   rA   z
2005-05-01zOOf the three parameters: start, end, and periods, exactly two must be specified)r@   z
2005-05-05r   wz9Input has different freq=W-SUN from PeriodIndex\(freq=B\)$   l   )r   lenr7   r   r   allr;   r<   
ValueErrorr   r$   rL   r   )r   rG   r@   i1end_intvi2r>   valsr   r   r   test_period_index_length   sT    




z(TestPeriodIndex.test_period_index_lengthc             C   s   t dddd}| j| t dddd}| j| t dddd}| j| t d	d
dd}| j| t dd
dd}| j| t dddd}| j| t dddd}| j| t dddd}| j| tdd}t |dd}| j| d S )Nr#   z1/1/2001z	12/1/2005)r   r@   rA   rV   z	12/1/2002r"   z1/1/2002r   z	12/1/2001z6/1/2001rY   Hz
12/31/2001z1/1/2002 23:00ZMinz1/1/2002 00:20Sz12/31/2001 00:00:00z12/31/2001 00:05:00z
2006-12-31r[   r   )rA   r   )r   _check_all_fieldsr   )r   rG   rd   rc   r   r   r   test_fields   s(    








zTestPeriodIndex.test_fieldsc       
      C   s   ddddddddd	d
dddg}t |}tj|}x|D ]}t||}t|t|ksXtx(t||D ]\}}t|||ksdtqdW t|dkrq6t|j|}	t|t|	kstx(t||	D ]\}}t|||kstqW q6W d S )NyearmonthdayhourminutesecondZ
weekofyearweekZ	dayofweekZ	dayofyearZquarterZqyearZdays_in_monthr   )listpdr	   getattrr`   r7   zipdt)
r   Zperiodindexfieldsr   sfieldZ	field_idxxvalZfield_sr   r   r   rj      s4    


z!TestPeriodIndex._check_all_fieldsc             C   s`   t tjjd}tdddd}tdddd}|j|}tj|j| |j|}tj|j| d S )N   z
2011/01/01r"   )r   r   Z2013r#   )r   r$   randomr   	set_indexr&   r(   r   )r   dfidx1idx2r   r   r   test_period_set_index_reindex  s    

z-TestPeriodIndex.test_period_set_index_reindexz+p_values, o_values, values, expected_valuesZ2019Q1zQ-DECZ2019Q2ZAllg      ?c       
      C   sF   t |}t|}tj||d}|j|}tj||d}	tj||	 d S )N)r   )r   r   rt   r	   Zreindexr&   assert_series_equal)
r   Zp_valuesZo_valuesrS   Zexpected_valuesZperiod_indexZobject_indexry   r*   r8   r   r   r   test_period_reindex_with_object  s    
z/TestPeriodIndex.test_period_reindex_with_objectc             C   s   dd }| }|j |st|j |  s.t|j |j s@t|j |j j j j j sbt|j j |stt|j }d|_|j |st|j |d d   st|j |jd st|j |jd st|j |d  st|j |d  std S )Nc               S   s   t ddddS )Nr#   z1/1/2001z	12/1/2009)r   r@   rA   )r   r   r   r   r   <lambda><  s    z*TestPeriodIndex.test_is_.<locals>.<lambda>ZAppler"   r#   r   r   )is_r7   rO   nameZasfreq)r   r    r   Zind2r   r   r   test_is_;  s    "zTestPeriodIndex.test_is_c             C   s.   d}t jt|d tddd W d Q R X d S )NzOOf the three parameters: start, end, and periods, exactly two must be specified)r:   z2011-1-1z2012-1-1rY   )r;   r<   rb   r   )r   r>   r   r   r   test_periods_number_checkM  s    z)TestPeriodIndex.test_periods_number_checkc             C   s   t dddddgdd}ttjjt||d}|d }|dd	 }tj|| d|d d < |dd	 dkj srt	t dddddgdd}ttjjt||d}|d }||dk }tj|| d S )
Ni  i  i  zA-JUN)r   )r   Z2007r   r.   )
r   r	   r$   r~   randnr`   r&   r   ra   r7   )r   r)   tsr*   r8   r   r   r   test_index_duplicate_periodsU  s    z,TestPeriodIndex.test_index_duplicate_periodsc             C   s   t dddddgdd}t dddgdd}tj|j | |j dksHtt dddddgddd}t dddgddd}tj|j | |j dkstd S )	Ni  i  i  zA-JUN)r   r.   z
US/Eastern)r   tz)r   r&   r(   uniqueZnuniquer7   )r   r)   r8   r   r   r   test_index_uniqueh  s    z!TestPeriodIndex.test_index_uniquec             C   s   d S )Nr   )r   r   r   r   
test_shifts  s    zTestPeriodIndex.test_shiftc                s   t  j  d S )N)supertest_ndarray_compat_properties)r   )	__class__r   r   r   w  s    z.TestPeriodIndex.test_ndarray_compat_propertiesc             C   sR   t ddd t ddd tdddgdd}ttjdddgdd}tj|| d S )	Ni  r#   )ordinalr   r   r   ir_   r_   )r   r   r$   rL   r&   r(   )r   r   r   r   r   r   test_negative_ordinals{  s
    z&TestPeriodIndex.test_negative_ordinalsc             C   sl   t dddddgddd}td	d	dddgtjdd}tj|j| td
ddddgtjdd}tj|j| d S )Nz2011-01z2011-02r   z2012-03z2012-04r   r   )r   r   i  r   i  )rJ   r   r   r.   rW   r_   r_   )r   r   r$   rM   r&   r(   rl   rm   )r   r)   rP   r   r   r   test_pindex_fieldaccessor_nat  s    z-TestPeriodIndex.test_pindex_fieldaccessor_natc             C   sJ   t dddddgdd}ttjjt||dj }|d	 |d
 ksFtd S )NZ2Q05Z3Q05Z4Q05Z1Q06Z2Q06rV   )r   )r   Z05Q4r   )r   r	   r$   r~   Zrandr`   Zcumsumr7   )r   rG   ry   r   r   r   test_pindex_qaccess  s    z#TestPeriodIndex.test_pindex_qaccessc             C   s   t ddddddgdd}td	d
dd}tj|| |jtjdksFt|jdksTttd	ddd}tj|| |jtjdkst|jdkstd S )Nz2011-01z2011-03z2011-05z2011-07z2011-09z2011-11Z2M)r   z1/1/11z12/31/11)r@   rA   r   r   r}   )r@   r   r   )	r   r   r&   r(   r   r   MonthEndr7   r6   )r   r8   rG   r   r   r   test_pindex_multiples  s    z%TestPeriodIndex.test_pindex_multiplesc             C   s@   t dddd}t|}t|d ts(t|d j|jks<td S )Nz1/1/10rW   rY   )r@   r   r   r   )r   rs   rB   r   r7   r   )r   r   r*   r   r   r   test_iteration  s    zTestPeriodIndex.test_iterationc          
   C   s   t dddgdd}|j stt dddgdd}|js:tt dddgdd}|j sXtt dddgdd}|jsttt dddgdd}tjtdd |j W d Q R X |d d	 jstd S )
Ni  i  i  r#   )r   i  zIndex is not monotonic)r:   r   )r   Zis_fullr7   r;   r<   rb   )r   r   r   r   r   test_is_full  s    

zTestPeriodIndex.test_is_fullc             C   sf   t dddd}|jdd|jg}tddd	d
g|}t|jjd tsHtt|jj	d d t
sbtd S )Nz1/1/2012rW   Z12H)r   r   r   )r   r   r   r   r.   )r
   	to_periodro   r	   rB   r   Zlevelsr   r7   rS   r   )r   r   Zindex_as_arraysry   r   r   r   test_with_multi_index  s
    z%TestPeriodIndex.test_with_multi_indexc             C   s0   t dddd}t|}t|}t|ts,td S )Nz1/1/2000rZ   r   )r   r   )r   rs   r   rB   r   r7   )r   rngr   r*   r   r   r   test_convert_array_of_periods  s    z-TestPeriodIndex.test_convert_array_of_periodsc             C   s   t dddd}t dddd}ttjjd|}ttjjd|}|j }|j }tj||g}t|j	t
snt|j	d |j	d kstd S )	Nz
12/31/1990z
12/31/1999zA-DEC)r   z
12/31/2000z
12/31/2009r   r   )r
   r	   r$   r~   r   r   rt   concatrB   r   r   r7   )r   Zd1Zd2s1s2r*   r   r   r   test_append_concat  s    z"TestPeriodIndex.test_append_concatc             C   s<   t dddd}tj|}|jtj ks*t|jdks8td S )Nz1/1/2011z1/1/2012r"   )r   )r   r&   r'   r   r   r   r7   r6   )r   ZprngZnew_prngr   r   r   test_pickle_freq  s    
z TestPeriodIndex.test_pickle_freqc             C   sB   t dddgdd}|jdd }tdd	 |D }tj|| d S )
Ni  i  i  r#   )r   c             S   s   | j S )N)r   )r{   r   r   r   r     s    z*TestPeriodIndex.test_map.<locals>.<lambda>c             S   s   g | ]
}|j qS r   )r   )r1   r{   r   r   r   r4     s    z,TestPeriodIndex.test_map.<locals>.<listcomp>)r   mapr   r&   r(   )r   r   r*   rP   r   r   r   test_map  s    zTestPeriodIndex.test_mapc             C   sR   t dtdddgdd}x6tjtd fD ]&}tddddjd	|}tj|| q$W d S )
NZ2017Q1Z2017Q2Z2017Q3Z2017Q4rV   )r   rW   )r   r   r   )r   r   r$   nanr   insertr&   r(   )r   r8   nar*   r   r   r   test_insert  s    zTestPeriodIndex.test_insertzmsg, keyz'Period\('2019', 'A-DEC'\), 'foo', 'bar'i  Zfoobarz&Period\('2019', 'A-DEC'\), 'y1', 'bar'y1z&Period\('2019', 'A-DEC'\), 'foo', 'z1'z1z;Period\('2018', 'A-DEC'\), Period\('2016', 'A-DEC'\), 'bar'i  i  z&Period\('2018', 'A-DEC'\), 'foo', 'y1'z;Period\('2017', 'A-DEC'\), 'foo', Period\('2015', 'A-DEC'\)i  i  z&Period\('2017', 'A-DEC'\), 'z1', 'bar'c          	   C   sz   t tdddgtdtddgtddtd	gd
ddgdddgdjdddg}tjt|d |j|  W dQ R X dS )a  
        parse_time_string return parameter if type not matched.
        PeriodIndex.get_loc takes returned value from parse_time_string as a tuple.
        If first argument is Period and a tuple has 3 items,
        process go on not raise exception
        i  x1Zx2i  i  r   i  r   i  r   r   r.   r   rZ      )r#   rY   CZV1ZV2r#   rY   r   )r:   N)r   r   r   r;   r<   KeyErrorloc)r   r>   keyr   r   r   r   ;test_contains_raise_error_if_period_index_is_in_multi_index  s    zKTestPeriodIndex.test_contains_raise_error_if_period_index_is_in_multi_indexc             C   s8   | j g dd}|j g kst|jdddgks4td S )Nr#   )r   T)r    )_holderformatr7   )r   Z	empty_idxr   r   r   test_format_empty  s    z!TestPeriodIndex.test_format_emptyr_   )8__name__
__module____qualname__r   r   r;   Zfixturer&   ZmakePeriodIndexr   r   r    r!   markparametrizer+   r,   r9   r?   rC   rE   rH   rI   rQ   rT   rg   rk   rj   r   r   r$   r   r   r   r   r   r   r   tdZskip_if_32bitr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   r   )r   r   r      s    
	<""
r   c           	   C   sr   t ddgdd} tjd}| j|dks,t| jddks>ttj }d}tjt|d | j| W d Q R X d S )N2000Z2001r   )r   r   z5Input has different freq=B from PeriodIndex\(freq=D\))r:   )	r   r   ZDayZ_maybe_convert_timedeltar7   ZBusinessDayr;   r<   rb   )rG   offsetr>   r   r   r   test_maybe_convert_timedelta"  s    
r   c        
      C   s  t ddd} | jd}t| jd}xR||j| | j||jgD ]8}t|trT|jsTt|js^t|j	 sjt|j
s<tq<W | jdt}|jd}t|jd}xV||j||j||jgD ]<}t|tr|j st|j st|j	 st|j
stqW | jdt}|jd}t|jd}	xb||j||j|	|	jgD ]H}t|trN|j sNt|j s\t|j	 sjt|j
s0tq0W d S )Nz
2016-01-01r.   )r   r   ztimedelta64[ns]r   rh   )r
   r   r   rO   Z_enginerB   Zis_monotonicr7   Zis_monotonic_increasingZis_monotonic_decreasingZ	is_uniquer   r   )
ZdtirG   ZtdiobjZdti1Zpi1Ztdi1Zdti2Zpi2Ztdi2r   r   r   test_is_monotonic_with_nat.  s6    






r   rL   TFc             C   s  t ddgdd}| r|j}tj|d |d gtd}tj|}tj|| tj|}tj|| |j}xHdd	tj	gD ]8}tj||d}tj|| tj||d}tj|| qtW xfdD ]^}d}t
jt|d tj||d W d Q R X t
jt|d tj|tt|d W d Q R X qW d S )Nz
2000-01-01z
2001-01-01r   )r   r   r   )rJ   rK   rM   float64int32uint64zargument must be)r:   )r   r   r   )r   _datar$   rL   rR   r&   rN   ZasarrayrF   rM   r;   r<   	TypeErrorru   )rL   r   r8   r*   rJ   r>   r   r   r   test_dunder_arrayW  s(    


r   ) Znumpyr$   r;   Zpandas._libs.tslibs.periodr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasrt   r   r   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr&   Zdatetimeliker   r   r   r   r   r   r   r   r   r   r   <module>   s   0
    )