3
Ud                 @   s"  d dl mZm Z mZ d dlZd dlZd dlZd dlmZm	Z
 d dlmZmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ d dlZd d	l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'dd Z(dd Z)dd Z*dS )    )datedatetime	timedeltaN)iNaTperiod)DAYSMONTHS)DateParseError)INVALID_FREQ_ERR_MSGIncompatibleFrequency)dateutil_gettzmaybe_get_tz)np_datetime64_compat)NaTPeriod	Timedelta	Timestampoffsetsc               @   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ejjdedd Zejjdedd Zejjdeejjdedddd Zdd Zejjd d!d"d#d$gd%d& Zd'd( Zd)d* Zd+d, Zejjd-ed.d/d0 Zd1S )2TestPeriodConstructionc              C   sh  t ddd}t d}||ks tt ddd}t d}t ddd}||ksLt||ksXtt ddd}t ddd}d	}tjt|d
 ||k W d Q R X ||kstt jd}t tj dd}t jd}||kst||kstt ddd}t ddd}||kstt ddddd}t ddd}||ks.tt ddddd}||ksLtt d}t tddddddddd}||ks~tt tddd}||kstt d}t tdddddddd d}||kstt td!d d}||kstd"}tjt|d
 t d#d$ W d Q R X d%}tjt|d
 t d&d'd W d Q R X tjt	d(d
 t dd*d W d Q R X d S )+Nz1/1/2005M)freqzJan 20052005Aamz4Input has different freq=M from Period\(freq=A-DEC\))matchQq1982minZMINi        D)yearmonthdayr   z3/1/2005dz2007-01-01 09:00:00.001i  	   r   i  Lz2007-01-01 09:00:00.001Zz2007-01-01 09:00:00.00101i  Uz2007-01-01 09:00:00.00101Zz"Must supply freq for ordinal valuei )ordinalzInvalid frequency: Xz2007-1-1Xzpass as a string insteadMin)r,   r!   )
r   AssertionErrorpytestraisesr   nowr   r   
ValueError	TypeError)selfi1i2i3i4i5msgexpected r;   Z/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/scalar/period/test_period.pytest_construction   sZ    

z(TestPeriodConstruction.test_constructionc             C   s   t ddd}t ddd}||jdks*tt ddd}||jdksHtt ddd}||jdksftt ddd}||ks~tt dd	d
dd}t ddd}||kstd S )Nz3/10/12B)r   r"   z3/11/12z3/12/12bi  r    
   )r#   r$   r%   r   )r   asfreqr-   )r3   r4   r5   r6   r;   r;   r<   test_construction_bdayU   s    z-TestPeriodConstruction.test_construction_bdayc             C   s,  t dddd}t ddd}||ks&tt dddd}t ddd}||ksLtt d	}t dddd}t d
}||ksvt||kstt d}||kstt d}||kstt d}||kstt d}||kstt d}||kstt d}||kstt d}|jdkstt d}||ks(td S )Ni  r!   r   )r#   quarterr   z1/1/2005)r   r    z9/1/2005Z2005Q1Z2005q1Z05Q1Z05q1Z1Q2005Z1q2005Z1Q05Z1q05Z4Q1984i  Z4q1984)r   r-   r#   )r3   r4   r5   r6   lowerr;   r;   r<   test_construction_quarterg   s6    z0TestPeriodConstruction.test_construction_quarterc             C   s0  t ddd}t ddd}||ks$tt ddd}||ks<tt ddd}||ksTtt ddd}|jdksntt tdd	d	dd}t ddd}||kstt tdd	d	dd}t tdd	d	dd}t tjd
dd}t tddd}t tddd}||kst||kst||kst||ks,td S )Nz2007-01r   )r   200701i )r*   r   iI  i  r!   z
2007-01-01z2007-01-01 00:00:00Zz2007-01-01 00:00:00.000Z)r   r-   r#   r   r   np
datetime64r   )r3   r:   r4   r5   r6   r7   r8   r;   r;   r<   test_construction_month   s*    z.TestPeriodConstruction.test_construction_monthc          	   C   s  t dtj dt dddks tt dtj dt dddks@tt dtj dt dddks`tt dtj dt dddkstt dtj dt dddkstt d	d
tjdddt d	d
ddkstt d	dtjdddt d	dddkstt d	dd
tj dt d	dd
ddkstt dddtj dt dddddksDtt ddd}t d	dd
tjdd|ksptt d	dd
dd|kstt dddtjddt dddddkstt dtj dt dddkstt dtj d}t ddd}||kst|j	dkst|j	dks"tt t
dd
d
dd}t ddd}||ksPtt tdd
d
dd}t t
dd
d
dd}t tjddd}t tddd}t tddd}||kst||kst||kst||kstt d}t t
dd
d
d d!d!d"d#d}||kstt td$d#d}||ks2tt d%}t t
dd
d
d d!d!d&d'd}||ksdtt td(d'd}||kstd S ))Nz1/1/2005)r   r   r   r   z3/10/12r>   r"   i  r!      )startingMonth)r#   rC   r   r      r    )r#   r$   r%   r   i  r@   z
2005-03-013DZ3Bi )r*   r   iI  i  rF   z
2007-01-01z2007-01-01 00:00:00Zz2007-01-01 00:00:00.000Zz2007-01-01 09:00:00.001r'   r   i  r(   z2007-01-01 09:00:00.001Zz2007-01-01 09:00:00.00101i  r)   z2007-01-01 09:00:00.00101Z)r   r   MonthEndr-   YearEndZBusinessDayDay
QuarterEndZBDayr#   r   r   rG   rH   r   )r3   r:   r4   r5   r6   r7   r8   r;   r;   r<   test_period_constructor_offsets   sd        "z6TestPeriodConstruction.test_period_constructor_offsetsc          B   C   sx  d}t jt|d ttj  W d Q R X t jt|d ttj j  W d Q R X d}t jt|d tddd W d Q R X d}t jt|d tddd W d Q R X d	}t jt|d td
ddd W d Q R X d}t jt|d tdd W d Q R X d}t jt|d tdd W d Q R X d}t jt|d tdd W d Q R X d}t jt|d tdd W d Q R X d S )Nz#Must supply freq for datetime value)r   z2Value must be Period, string, integer, or datetimeg?r"   )r   zOrdinal must be an integer)r*   r   z?Only value or ordinal but not both should be given but not bothrL   r!   )r*   valuer   z%If value is None, freq cannot be None)r$   z'Given date string not likely a datetimez-2000r   zday is out of range for month0z/Unknown datetime string format, unable to parsez	1/1/-2000)r.   r/   r1   r   r   r0   r   r	   )r3   r9   r;   r;   r<   test_invalid_arguments   s4    z-TestPeriodConstruction.test_invalid_argumentsc             C   sf   t ddd}t dddd|ks"tt d tks2tt ddd}t |d	d}t d
d	d}||ksbtd S )Nz2007-012M)r   i  r!   )r#   r$   r   z
2007-01-01r"   r   2007)r   r-   r   )r3   r:   presultexpr;   r;   r<   test_constructor_corner  s    z.TestPeriodConstruction.test_constructor_cornerc             C   s   t d}|jdkstt d}|jdks,tt d}|jdksBtt d}|jdksXtt d	}|jd
ksntt d}|jd
kstt d}|jdkstd S )Nz
2007-01-01r"   z2007-01-01 07Hz2007-01-01 07:10Tz2007-01-01 07:10:15Sz2007-01-01 07:10:15.123r(   z2007-01-01 07:10:15.123000z2007-01-01 07:10:15.123400r)   )r   r   r-   )r3   rX   r;   r;   r<   test_constructor_infer_freq  s    z2TestPeriodConstruction.test_constructor_infer_freqc             C   s   t ddd}t ddd}|j|jks(t|jdks6t|jdksDt|jtjdksXt|jtj ksjt|d j|jd kstd| j|jd kst|d j|jd kstd	| j|jd kstd S )
N19892A)r   r   z2A-DECzA-DECrL   r!   )r   r*   r-   freqstrr   r   rO   )r3   Zresult1Zresult2r;   r;   r<   test_multiples.  s    z%TestPeriodConstruction.test_multiplesr$   c             C   sv   d| }t d|d}dt|ks&t|jddd}t ||d}||ksLt|jddd}t ||d}||ksrtd S )NzQ-Z1989Q3)r   r"   end)howrM   )r   strr-   to_timestamp)r3   r$   r   rZ   stamprX   r;   r;   r<   test_period_cons_quarterly<  s    
z1TestPeriodConstruction.test_period_cons_quarterlyc             C   s\   d| }t d|d}|jdddtdd }t ||d}||d	 ksJtt|t sXtd S )
NzA-r`   )r   r"   re   )rf      )daysr!   )r   rh   r   r-   
isinstance)r3   r$   r   rZ   ri   rX   r;   r;   r<   test_period_cons_annualJ  s    
z.TestPeriodConstruction.test_period_cons_annualr%   numr@      c             C   sP   d| }d| }t ||d}t |ddj|}||ks>tt|t sLtd S )Nz2011-02-zW-)r   r"   )r   rA   r-   rm   )r3   ro   r%   Zdaystrr   rY   r:   r;   r;   r<   test_period_cons_weeklyU  s    

z.TestPeriodConstruction.test_period_cons_weeklyc             C   s:   t ddd}t j|jdd}||ks(tt|t s6td S )Nz2011-01r   )r   )r   Z_from_ordinalr*   r-   rm   )r3   rX   resr;   r;   r<   test_period_from_ordinal`  s    z/TestPeriodConstruction.test_period_from_ordinalr   r   r   r"   r\   c             C   sT   t d|d}|tkstt dd| d}|tks4tt dd| d}|tksPtd S )Nr   )r   23)r   r   r-   )r3   r   perr;   r;   r<   'test_construct_from_nat_string_and_freqf  s    z>TestPeriodConstruction.test_construct_from_nat_string_and_freqc             C   s   t ddd}|tkstt tdd}|tks0tt tdd}|tksHtt tdd}|tks`tt d}|tksttt t}|tkstd S )NnatzW-SUN)r   r"   rM   1D1Hr   )r   r   r-   r   )r3   rX   r;   r;   r<   test_period_cons_natq  s    z+TestPeriodConstruction.test_period_cons_natc             C   s6  t ddd}t ddd}|j|jks(t|jtjdks<t|jdksJt|jtj ks\t|jdksjt|d }|j|d jkst|j|jkst|jdkst|d }|j|d jkst|j|jkst|jdkstd}tjt	|d t dd	d W d Q R X d
}tjt	|d t ddd W d Q R X d S )Nz2011-013M)r   r   r    r!   z;Frequency must be positive, because it represents span: -3M)r   z-3Mz:Frequency must be positive, because it represents span: 0MZ0M)
r   r*   r-   r   r   rN   rc   r.   r/   r1   )r3   p1p2rY   r9   r;   r;   r<   test_period_cons_mult  s*    z,TestPeriodConstruction.test_period_cons_multc          <   C   s   t dddt dddt dddft dddt dddt dddfg}x|D ]\}}}|j|jksht|j|jksxt|jtjdkst|jd	kst|jtjdkst|jd	kst|jtj kst|jdkst|d }|j|d jkst|j|jks
t|jd	kst|d }|j|d jks8t|j|jksJt|jd	ksZt|d }|j|d jksxt|j|jkst|jd	kst|d }|j|d jkst|j|jkst|jd	ksLtqLW d
}tjt	|d t ddd W d Q R X tjt	|d t ddd W d Q R X tjt	|d t ddd W d Q R X tjt	|d t ddd W d Q R X d}tjt	|d t ddd W d Q R X tjt	|d t ddd W d Q R X d}tjt	|d t ddd W d Q R X d}tjt	|d t ddd W d Q R X d S )Nz2011-01ry   )r   1H1Dr\   r!   )r*   r      Z25Hz<Frequency must be positive, because it represents span: -25H)r   z-1D1Hz-1H1Dz:Frequency must be positive, because it represents span: 0DZ0D0HzInvalid frequency: 1W1DZ1W1DzInvalid frequency: 1D1WZ1D1W)
r   r*   r-   r   r   Hourrc   r.   r/   r1   )r3   rX   r|   r}   Zp3rY   r9   r;   r;   r<   test_period_cons_combined  sf    



z0TestPeriodConstruction.test_period_cons_combinedhour   c             C   s$   t jd| dd}|j|ks td S )Ni ' Z1H)r*   r   )pdr   r   r-   )r3   r   rX   r;   r;   r<   test_period_large_ordinal  s    z0TestPeriodConstruction.test_period_large_ordinalN)__name__
__module____qualname__r=   rB   rE   rI   rR   rU   r[   r_   rd   r.   markparametrizer   rj   rn   r   rangerq   rs   rw   rz   r~   r   r   r;   r;   r;   r<   r      s&   A$E
Gr   c               @   s   e Zd Zdd Zdd Zejjddddgd	d
 Zejjddddgdd Z	dd Z
dd Zdd Zdd Zejjdd;d<d=d>d?d@dAdBdCg	ejjd+d,d-d.gd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd,S )DTestPeriodMethodsc             C   s"   t d}tj|}||kstd S )NZ2000Q1)r   tmZround_trip_pickler-   )r3   rX   Znew_pr;   r;   r<   test_round_trip  s    
z!TestPeriodMethods.test_round_tripc             C   s   t tdddt tdddks$tt tdddt tdddksHtt tdddt tdddksltt tdddt tdddkstd S )	Nz2011-01r   )r   z
2011-01-01r"   r{   rV   z2011-02)hashr   r-   )r3   r;   r;   r<   	test_hash  s    $$$zTestPeriodMethods.test_hashtzstrzEurope/Brusselsz
Asia/Tokyoz
US/Pacificc              C   s  t jt tdddj|d}W d Q R X tdddj|}tj|j	|}||ksXt
|j|jksht
|j|jksxt
t jt tdddj|d}W d Q R X tdddj|}tj|j	|}||kst
|j|jkst
|j|jkst
t jt tdddjd|d}W d Q R X td	ddj|}tj|j	|}||ksLt
|j|jks^t
|j|jkspt
t jt tdddjd|d}W d Q R X tdddj|}tj|j	|}||kst
|j|jkst
|j|jkst
d S )
Nz1/1/2005r   )r   )tzUTC3Hr   )r   r   z
31/12/2005)r   assert_produces_warningFutureWarningr   rh   r   
tz_convertpytztimezone	normalizer-   r   tzinfo)r3   r   rX   rZ   Zexp_zoner;   r;   r<   test_to_timestamp_tz_arg  s8      z*TestPeriodMethods.test_to_timestamp_tz_argzdateutil/Europe/Brusselszdateutil/Asia/Tokyozdateutil/US/Pacificc             C   s   t |}tjt tdddj|d}W d Q R X tdddj|}||ksPt|j	t
|jddd ksnt|j	|j	ks~ttjt tdddjd|d	}W d Q R X tdddj|}||kst|j	t
|jddd kst|j	|j	kstd S )
Nz1/1/2005r   )r   )r   r   /r!   r   )r   r   )r   r   r   r   r   rh   r   r   r-   r   r   split)r3   r   r   rX   rZ   r;   r;   r<   !test_to_timestamp_tz_arg_dateutil*  s     z3TestPeriodMethods.test_to_timestamp_tz_arg_dateutilc             C   s@   t jt tdddjdd}W d Q R X |jtdks<td S )Nz1/1/2005r   )r   zdateutil/Europe/Brussels)r   zEurope/Brussels)r   r   r   r   rh   r   r   r-   )r3   rX   r;   r;   r<   -test_to_timestamp_tz_arg_dateutil_from_string>  s    z?TestPeriodMethods.test_to_timestamp_tz_arg_dateutil_from_stringc             C   s   t ddd}|jddtdks$ttdtdd	 }|jd
d|ksJtt ddd}|jddtdksnttdtdd	 }|jd
d|kstd S )Nz2011-01r   )r   r^   )rf   z
2011-01-01z
2011-02-01r!   nsEr{   z
2011-04-01)r   rh   r   r-   r   )r3   rX   r:   r;   r;   r<   test_to_timestamp_multC  s    z(TestPeriodMethods.test_to_timestamp_multc          	   C   s  t ddd}|jdd}dddg}x8|D ]0}||jd	|dksBt||jd
|dks(tq(W |jdd}dddg}x8|D ]0}||jd	|dkst||jd
|dksxtqxW dddddd	dddg	}dd }xft|D ]Z\}}	t d|	d}|j j|	}
|
|kst|j|jddkst|j||kstqW t ddd}|jddd}
tdddtdd }|
|kspt|jddd}
|
|kst|jddd}
tdddtdd }|
|kst|jddd}
|
|kst|jdd}
tdddtdd }|
|ks
tt	ddd}|jddd}
|
|ks2t|jddd}
|
|ksNt|jddd}
|
|ksjt|jddd}
|
|kst|jd dd}
|
|kstd S )!Nr   r   )r   r^   )rf   sZStarTZBEGInr"   rM   r   ere   ZFINIsHr   r   Wr>   r\   r,   c             S   s2   | j dkr| jtddd S t| | j  jjd S )Nr>   r!   )rl   nanosecondsrb   )r   
start_timer   r   rS   )rX   r;   r;   r<   _ex_  s    
z0TestPeriodMethods.test_to_timestamp.<locals>._exZ1985i  r!   r   r   r]   Z2Ti  startZ5S)
r   rh   r-   	enumerateZ	to_periodr   end_timer   r   r   )r3   rX   start_tsaliasesr   Zend_tsZfrom_lstr   iZfcoderY   r:   r;   r;   r<   test_to_timestampN  sX    



z#TestPeriodMethods.test_to_timestampc             C   s@   t jdd}|jddd}t jdt jdd }||ks<td S )Nz
1990-01-05r>   r   )rf   z
1990-01-06r!   )r   )r   r   rh   r   r   r-   )r3   rv   rY   r:   r;   r;   r<   test_to_timestamp_business_end  s    z0TestPeriodMethods.test_to_timestamp_business_endzts, expected1970-01-01 00:00:00r   1970-01-01 00:00:00.000001r!   1970-01-01 00:00:00.00001r@   1970-01-01 00:00:00.4998 1999-12-31 23:59:59.999X> 1999-12-31 23:59:59.999999?B 2050-12-31 23:59:59.5  2050-12-31 23:59:59.500001! 2050-12-31 23:59:59.123456@ r   Nusr   c             C   s"   t |j|dj}||kstd S )N)r   )r   rh   microsecondr-   )r3   tsr:   r   rY   r;   r;   r<   test_to_timestamp_microsecond  s    z/TestPeriodMethods.test_to_timestamp_microsecondc             C   s4   t d}dt|kstt d}dt|ks0td S )NzJan-2000z2000-01z
2000-12-15)r   reprr-   )r3   rX   r;   r;   r<   	test_repr  s    zTestPeriodMethods.test_reprc             C   s$   t ddd}ttt|ks td S )Nrx   r   )r   )r   r   r   r-   )r3   rX   r;   r;   r<   test_repr_nat  s    zTestPeriodMethods.test_repr_natc             C   s   t d}t|dkstd S )Nz2000-01-01 12:15:02.123z&Period('2000-01-01 12:15:02.123', 'L'))r   r   r-   )r3   rX   r;   r;   r<   test_millisecond_repr  s    z'TestPeriodMethods.test_millisecond_reprc             C   s   t d}t|dkstd S )Nz2000-01-01 12:15:02.123567z)Period('2000-01-01 12:15:02.123567', 'U'))r   r   r-   )r3   rX   r;   r;   r<   test_microsecond_repr  s    z'TestPeriodMethods.test_microsecond_reprc             C   s4   t ddd}|jd}|dks"tt|ts0td S )Nz2000-1-1 12:34:12r^   )r   z%Y-%m-%d %H:%M:%Sz2000-01-01 12:34:12)r   strftimer-   rm   rg   )r3   rX   rr   r;   r;   r<   test_strftime  s    
zTestPeriodMethods.test_strftime)r   r   )r   r!   )r   r@   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   r   r   r   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r;   r;   r<   r     s6   '?	r   c               @   s   e Zd ZdZejjdddddg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d Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)S )*TestPeriodPropertiesz5Test properties such as year, month, weekday, etc....r   r   r   r"   r\   c             C   sp   t d|d}|jstt|jts&tt d|d}|j s>tt d|d}|jsTtt d|d}|j sltd S )Nz2000-01-01 00:00:00)r   z1999-01-01 00:00:00z2004-01-01 00:00:00z2100-01-01 00:00:00)r   Zis_leap_yearr-   rm   bool)r3   r   rX   r;   r;   r<   test_is_leap_year  s    

z&TestPeriodProperties.test_is_leap_yearc             C   s   t d
dd}|jdkst|jdks(tt|t s6tt ddd}|jdksPt|jdks^tt|t sltt ddd}|jdkst|jd	kstt|t std S )Nr!   zQ-DEC)r*   r   i     rL   r    r      rb   r   )r   r#   r-   rC   rm   r$   )r3   rX   r;   r;   r<    test_quarterly_negative_ordinals  s    z5TestPeriodProperties.test_quarterly_negative_ordinalsc             C   s0   t ddd}|jtj kst|jdks,td S )Nr   r,   )r   r]   )r   r   r   Minuter-   rc   )r3   r4   r;   r;   r<   test_freq_str  s    z"TestPeriodProperties.test_freq_strc             C   s  ddddddgddd	d
dgddddddgdddddddgddddgdddd d!gd"d#d$gd%d&d'gd(d)d*gd+	}t }x|j D ]\}}xX|D ]P}tjt|d, td-|d. W d Q R X tjt|d, td/|d0 W d Q R X qW td-|d.}td/|d0}t|tstt|tsztqzW d S )1NZMTHZMONTHZMONTHLYZMthr$   ZmonthlyZBUSZBUSINESSZ
BUSINESSLYZWEEKDAYZbusZDAYZDLYZDAILYrP   ZDlyZDailyZHRZHOURZHRLYZHOURLYhrr   ZHRlyminuteZMINUTEZMINUTELYZminutelysecZSECZSECONDZSECONDLYsecondZMILLISECONDZMILLISECONDLYZmillisecondZMICROSECONDZMICROSECONDLYr   Z
NANOSECONDZNANOSECONDLYZ
nanosecond)	r   r>   r"   r\   r]   r^   r(   r)   N)r   z2016-03-01 09:00)r   r!   )r*   r   )r
   itemsr.   r/   r1   r   rm   r-   )r3   Zcasesr9   rZ   freqsr   r|   r}   r;   r;   r<   test_period_deprecated_freq  s(    

z0TestPeriodProperties.test_period_deprecated_freqc             C   s   dddddddg}t dd	d	}x&|D ]}td
|d}|j|ks$tq$W td
ddjt dd	dksdttd
ddjt dddkstd S )Nr   r   r   r"   r\   r]   r^   i  r!   2012)r   r>   rL   r   i  rJ      )r   r   r   r-   )r3   Zfreq_lstxpfrX   r;   r;   r<   test_start_time  s    
z$TestPeriodProperties.test_start_timec             C   s  t ddd}dd }|ddd}||jks.tt ddd}|d	d
d}||jksTtt ddd}|d	dd}||jksztt ddd}|d	dd}||jkstt ddd}|d	ddd}||jkstt ddd}|d	dd}||jkstt ddd}|d	dd}||jkstt ddd}|d	dd}||jks>tt ddd}|d	ddd}||jkshtt ddd}|d	ddd}||jkstd S )Nr   r   )r   c              W   s   t t t|  jd S )Nr!   )r   r   rS   )argsr;   r;   r<   r     s    z/TestPeriodProperties.test_end_time.<locals>._exi  r!   r   i  r   r   rL   r"   r\   r>   r    r   Z15D   ry   r   )r   r   r-   )r3   rX   r   r   r;   r;   r<   test_end_time  s>    z"TestPeriodProperties.test_end_timec             C   s6   t dd}|j}tjdtjdd }||ks2td S )Nz
1990-01-05r>   z
1990-01-06r!   )r   )r   r   r   r   r   r-   )r3   rv   rY   r:   r;   r;   r<   test_end_time_business_fridayB  s    
z2TestPeriodProperties.test_end_time_business_fridayc             C   s0   dd }t dd}|ddd}|j|ks,td S )Nc              W   s   t t t|  jd S )Nr!   )r   r   rS   )r   r;   r;   r<   r   K  s    z;TestPeriodProperties.test_anchor_week_end_time.<locals>._exz2013-1-1zW-SATi  r!      )r   r   r-   )r3   r   rX   r   r;   r;   r<   test_anchor_week_end_timeJ  s    
z.TestPeriodProperties.test_anchor_week_end_timec             C   s   t ddd}|jdkstd S )Nr   i  )r   r#   )r   r#   r-   )r3   Za_dater;   r;   r<   test_properties_annuallyR  s    z-TestPeriodProperties.test_properties_annuallyc             C   s|   t dddd}t dddd}t dddd}xLtdD ]@}x:|||fD ],}|| jdksZt|| j|d ksDtqDW q4W d S )NzQ-DECi  r!   )r   r#   rC   zQ-JANzQ-JUNr    )r   r   Zqyearr-   rC   )r3   Z
qedec_dateZ
qejan_dateZ
qejun_datexZqdr;   r;   r<   test_properties_quarterlyW  s    z.TestPeriodProperties.test_properties_quarterlyc             C   s   t dddd}xtdD ]}|| }|jdks2td|d   koHdkn  r^|jdkstnd|d   kotdkn  r|jd	kstnVd
|d   kodkn  r|jdkstn*d|d   kodkn  r|jdkst|j|d kstqW d S )Nr   i  r!   )r   r#   r$   r   r    r   r   rL      r'   r@   rJ   )r   r   r#   r-   rC   r$   )r3   Zm_dater   Zm_ival_xr;   r;   r<   test_properties_monthlyb  s    z,TestPeriodProperties.test_properties_monthlyc             C   s   t ddddd}|jdkst|jdks,t|jdks:t|jdksHt|d jdksZt|jdkshtt ddd	ddjd
kstd S )Nr   i  r!   r   )r   r#   r$   r%   4      i  rL      )r   r#   r-   rC   r$   weekdays_in_month)r3   w_dater;   r;   r<   test_properties_weeklyr  s    z+TestPeriodProperties.test_properties_weeklyc             C   s   t ddddd}|jdkst|jdks,t|jdks:t|jdksHt|d jdksZt|jdkshtt ddd	dd}|jd
kstt}tj	t
|d t ddddd W d Q R X d S )Nr   i  r!   r   )r   r#   r$   r%   r   r   i  rL   r   )r   ZWK)r   r#   r-   rC   r$   r   r   r
   r.   r/   r1   )r3   r   rZ   r9   r;   r;   r<   test_properties_weekly_legacy~  s    z2TestPeriodProperties.test_properties_weekly_legacyc             C   s  t ddddd}|jdkst|jdks,t|jdks:t|jdksHt|jdksVt|jdksdt|jdksrtt dddddjd	kstt d
dddd}|jdkst|jdkst|jdkst|jdkst|jdkst|jdkst|jdkstt d
ddddjd	kstd S )Nr>   i  r!   )r   r#   r$   r%   r   r   i  rL   r   r"   )	r   r#   r-   rC   r$   r%   weekday	dayofyearr   )r3   Zb_dateZd_dater;   r;   r<   test_properties_daily  s$    z*TestPeriodProperties.test_properties_dailyc             C   s   t dddddd}t dddddd}x||gD ]}|jdks@t|jdksNt|jdks\t|jdksjt|jdksxt|jdkst|jdkst|j	dkstt ddd	dddj	d
ks.tq.W d S )Nr\   i  r!   r   )r   r#   r$   r%   r   2Hr   i  rL   r   )
r   r#   r-   rC   r$   r%   r   r   r   r   )r3   Zh_date1Zh_date2Zh_dater;   r;   r<   test_properties_hourly  s    z+TestPeriodProperties.test_properties_hourlyc             C   s   t ddddddd}|jdks"t|jdks0t|jdks>t|jdksLt|jdksZt|jdksht|jdksvt|j	dkstt ddd	ddddj	d
kstd S )Nr,   i  r!   r   )r   r#   r$   r%   r   r   r   r"   i  rL   r   )
r   rC   r-   r$   r%   r   r   r   r   r   )r3   Zt_dater;   r;   r<   test_properties_minutely  s    z-TestPeriodProperties.test_properties_minutelyc          	   C   s   t dddddddd}|jdks$t|jdks2t|jdks@t|jdksNt|jdks\t|jdksjt|jdksxt|j	dkst|j
dkst|jdkstt ddddddddjd	kstd S )
Nr,   i  r!   r   )r   r#   r$   r%   r   r   r   r   i  rL   r   )r   r#   r-   rC   r$   r%   r   r   r   r   r   r   )r3   Zs_dater;   r;   r<   test_properties_secondly  s    z-TestPeriodProperties.test_properties_secondlyN)r   r   r   __doc__r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r;   r;   r<   r     s$   	.r   c               @   s   e Zd Zdd ZdS )TestPeriodFieldc             C   s6   d}t jt|d tjdtjdd W d Q R X d S )Nz@Buffer dtype mismatch, expected 'const int64_t' but got 'double')r   r!   r   rb   )r.   r/   r1   	libperiodZget_period_field_arrrG   empty)r3   r9   r;   r;   r<   2test_get_period_field_array_raises_on_out_of_range  s    zBTestPeriodField.test_get_period_field_array_raises_on_out_of_rangeN)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d Zd	d
 Zdd ZdS )TestPeriodComparisonsc             C   sX   t dd}t dd}||ks t||ks,t||ks8t||k  sFt||k sTtd S )Nz2000-01r   )r   r-   )r3   leftrightr;   r;   r<   ,test_comparison_same_period_different_object  s    

zBTestPeriodComparisons.test_comparison_same_period_different_objectc             C   sf   t dd}t dd}||k s"t||ks.t||k s:t||ksFt||k sTt||k sbtd S )Nz2000-01r   z2000-02)r   r-   )r3   janfebr;   r;   r<   test_comparison_same_freq  s    

z/TestPeriodComparisons.test_comparison_same_freqc          ,   C   s   t dd}t dd}d}tjt|d ||k W d Q R X tjt|d ||k W d Q R X tjt|d ||k  W d Q R X tjt|d ||k W d Q R X tjt|d ||k W d Q R X tjt|d ||k W d Q R X d S )Nz2000-01r   z
2012-01-01r"   z0Input has different freq=D from Period\(freq=M\))r   )r   r.   r/   r   )r3   r  r%   r9   r;   r;   r<   test_comparison_mismatched_freq   s    

z5TestPeriodComparisons.test_comparison_mismatched_freqc             C   s   t dd}|dk st|dks$td}d| d| }x|dfd|fgD ]\}}tjt|d ||k W d Q R X tjt|d ||k W d Q R X tjt|d ||k  W d Q R X tjt|d ||k W d Q R X qJW d S )Nz2000-01r   r!   z'(Period|int)'z#not supported between instances of z and )r   )r   r-   r.   r/   r2   )r3   r  Z
int_or_perr9   r  r  r;   r;   r<   test_comparison_invalid_type  s    
z2TestPeriodComparisons.test_comparison_invalid_typec             C   sF   t dd}t dd}t dd}|||g}|||g}t||ksBtd S )Nz2000-01r   z2000-02z2000-03)r   sortedr-   )r3   r  r  marZperiodsZcorrectPeriodsr;   r;   r<   test_sort_periods%  s    




z'TestPeriodComparisons.test_sort_periodsc             C   s   t ddd}td}xzt|f|tft|f|tfgD ]Z\}}||k  sHt||k sVt||k sdt||kspt||k s~t||k s2tq2W d S )Nz
2011-01-01r"   )r   )r   r   r   r-   )r3   rX   tr  r  r;   r;   r<   test_period_cmp_nat-  s    z)TestPeriodComparisons.test_period_cmp_natN)	r   r   r   r  r  r	  r
  r  r  r;   r;   r;   r<   r    s   r  c            	   @   s0  e Zd Zdd Zdd Zdd Zdd Zd	d
 dd
 dd
 gZdddgZe	j
jdeede	j
jdeeddd Zdd Ze	j
jdddddgdd Ze	j
jddd ge	j
jdddddge	j
jd!ejd"fejd#fejd$fejd%fgd&d' Zd(d) Zd*d+ Ze	j
jd,d-d.d/gd0d1 Zd2d3 Zd$S )4TestArithmeticc             C   sf   t dddt ddd }}|| }|d|j ks4td}tjt|d |t dd	d  W d Q R X d S )
N2011r   )r   rW   r   z4Input has different freq=M from Period\(freq=A-DEC\))r   z2007-01r   )r   r   r-   r.   r/   r   )r3   r  r  rY   r9   r;   r;   r<   test_sub_deltaA  s    zTestArithmetic.test_sub_deltac             C   sD   t ddddd}t ddddd}|d |ks0td| |ks@td S )Nr"   i  r!   )r   r#   r$   r%   rL   )r   r-   )r3   per1per2r;   r;   r<   test_add_integerJ  s    zTestArithmetic.test_add_integerc             C   sP   t ddd}|t tkstt| tks,t|t tks<tt| tksLtd S )Nz2011-01r   )r   )r   r   r-   )r3   rX   r;   r;   r<   test_add_sub_natP  s
    zTestArithmetic.test_add_sub_natc             C   s   t ddddd}t ddddd}djddd	g}tjt|d
 |d  W d Q R X tjt|d
 d|  W d Q R X tjt|d
 ||  W d Q R X d S )Nr"   i  r!   )r   r#   r$   r%   rL   |zunsupported operand type\(s\)zcan only concatenate strzmust be str, not Period)r   rg   )r   joinr.   r/   r2   )r3   r  r  r9   r;   r;   r<   test_add_invalidX  s    zTestArithmetic.test_add_invalidc             C   s   | S )Nr;   )r   r;   r;   r<   <lambda>k  s    zTestArithmetic.<lambda>c             C   s   t j| gS )N)r   Series)r   r;   r;   r<   r  k  s    c             C   s   t j| gS )N)r   Index)r   r;   r;   r<   r  k  s    identityr  r  lbox)idsrboxc             C   s   t d}tddd}djddddd	g}tjt|d
 ||||  W d Q R X tjt|d
 ||||  W d Q R X tjt|d
 ||||  W d Q R X d S )NZ2017r   )r   r  z
cannot addzunsupported operandzcan only operate on azincompatible typezufunc add cannot use operands)r   )r   r   r  r.   r/   r2   )r3   r   r  r   rv   r9   r;   r;   r<   test_add_timestamp_raisesn  s    z(TestArithmetic.test_add_timestamp_raisesc             C   sx   t ddd}t ddd}|j}|| d
| ks2t|| d| ksFtd}tjt|d |t dd	d  W d Q R X d S )Nz
2011-01-01r"   )r   z
2011-01-15   z0Input has different freq=M from Period\(freq=D\))r   z2011-02r   i)r   r   r-   r.   r/   r   )r3   r  r  offr9   r;   r;   r<   test_sub  s    zTestArithmetic.test_subnr!   rL   r    r   c             C   s\   t d||d}t d||d}t t||jjdt t||jjd }|| |ksXtd S )N19910905)r   19920406)r   rg   r   baser-   )r3   Ztick_classesr%  r|   r}   r:   r;   r;   r<   test_sub_n_gt_1_ticks  s
    z$TestArithmetic.test_sub_n_gt_1_ticksr   TFzoffset, kwd_namer$   rK   Nr   c             C   s|   |d k	r|dini }d}d}t ||||f|d}t ||||f|d}	t ||	jjdt ||jjd }
|	| |
ksxtd S )Nr    r&  r'  )r   )r   r   r(  r-   )r3   offsetZkwd_namer%  r   kwdsZp1_dZp2_dr|   r}   r:   r;   r;   r<   test_sub_n_gt_1_offsets  s     z&TestArithmetic.test_sub_n_gt_1_offsetsc              C   sd  xd9D ]}t d|d}t d|d}|tjd |ks<ttjd| |ksRtxtjdtjdtj tjd	d
t	d	gD ]}d}t
jt|d ||  W d Q R X t|tjrd}t
jt|d ||  W d Q R X q~djddg}t
jt|d ||  W d Q R X q~W qW xVd:D ]L}t d|d}t d|d}|tjd |ksRttjd| |ksjtt d|d}|tjd |ksttjd| |kstxtjdtjdtj tjd	d
t	d	gD ]}d}t
jt|d ||  W d Q R X t|tjr2d}t
jt|d ||  W d Q R X n0djddg}t
jt|d ||  W d Q R X qW qW xpd;D ]f}t d|d}t d|d}|tjd |ksttjd| |kstt d|d}|tjd |ksttjd| |ks tt d|d}|tjdd
 |ks&td}t
jt|d tjdd
|  W d Q R X t d|d}|tjd<d! |ksztt
jt|d tjd=d!|  W d Q R X t d"|d}|t	d> |kstt	d?| |kstt d|d}|t	d#d$ |ks tt	d#d$| |kstxtjdtjdtj tjd%d&t	d'd$gD ]}d}t
jt|d ||  W d Q R X t|tjrd}t
jt|d ||  W d Q R X n0djddg}t
jt|d ||  W d Q R X qFW qvW xzd@D ]p}t d+|d}t d,|d}|tjd |ks ttjd| |ks8tt d-|d}|tjd. |ks\ttjd.| |ksttd}t d-|d}|tjd.d& |kstt
jt|d tjd.d&|  W d Q R X t d/|d}|tjd d! |kstt
jt|d tjd d!|  W d Q R X t d0|d}|t	d1d2 |ks<tt	d1d2| |ksTtt d3|d}|t	d%d4d5 |ksztt	d%d4d5| |kstxtjdtjdtj tjd6d!t	d'd7d8gD ]}d}t
jt|d ||  W d Q R X t|tjr$d}t
jt|d ||  W d Q R X n0djddg}t
jt|d ||  W d Q R X qW qW d S )ANr   ra   3Ar  )r   Z2013rL   r!   im  r"   z<Input has different freq|Input cannot be converted to Period)r   zcannot use operands with typesr  zInput has different freqz#Input cannot be converted to Periodr   rV   r{   z2011-03z2011-05z2012-03rJ   2DrM   z
2011-04-01z
2011-04-06   z
2011-04-02r   z
2011-04-03i  r   z
2011-03-300   )hoursr   h   r\   r   r   z2011-04-01 09:00z2011-04-03 09:00z2011-04-01 12:00r    z2011-04-01 10:00z2011-04-01 11:00x   )minutesz2011-04-05 12:00   )rl   r5  i  rk   )r1  r5  )r   ra   r-  )r   rV   r{   )r"   r.  rM   iQ iQ r   r   )r\   r   r   )r   r   rO   r-   	YearBegin
MonthBeginr   rG   timedelta64r   r.   r/   r   rm   r2   r  rN   rP   r   )r3   r   rX   rZ   or9   r;   r;   r<   test_add_offset  s   



zTestArithmetic.test_add_offsetc             C   s  d}xd5D ]}t d|d}|tjd t d|dks8txTtjdtjd	tj tjd
dt	d
gD ]&}t
jt|d ||  W d Q R X qdW q
W xd6D ]}t d|d}|tjd t d|dkst|tjd t d|dkstxVtjdtjd	tj tjd
dt	d
gD ](}t
jt|d ||  W d Q R X qW qW x8d7D ].}t d|d}|tjd t d|dkszt|tjd t d|dkst|tjdd t d|dkst|tjd8d t d|dkst|t	d9 t d|dkst|t	dd  t d|dkstxXtjdtjd	tj tjd!d"t	d#d gD ](}t
jt|d ||  W d Q R X qJW qHW x>d:D ]4}t d'|d}|tjd t d(|dkst|tjd) t d*|dkst|tjd)d" t d*|dkst|tjdd t d+|dkst|t	d,d- t d.|dks:t|t	d!d/d0 t d1|dks\txZtjdtjd	tj tjd2dt	d#d3d4gD ](}t
jt|d ||  W d Q R X qW qW d S );Nz<Input has different freq|Input cannot be converted to Periodr   ra   r-  r  )r   rL   Z2009r!   im  r"   )r   r   rV   r{   z2011-03z2011-01rJ   z2010-03r.  rM   z
2011-04-01r/  z
2011-03-27r   z
2011-03-31z
2011-03-30i  r   z
2011-04-03r0  )r1  r   r2  r3  r\   r   r   z2011-04-01 09:00z2011-03-30 09:00r    z2011-04-01 06:00z2011-04-01 08:00r4  )r5  z2011-04-01 07:00r6  )rl   r5  z2011-03-28 06:00i  rk   )r1  r5  )r   ra   r-  )r   rV   r{   )r"   r.  rM   iQ r   )r\   r   r   )r   r   rO   r-   r7  r8  r   rG   r9  r   r.   r/   r   rN   rP   r   )r3   r9   r   rX   r:  r;   r;   r<   test_sub_offsetk  st    



  "" 
  " 
zTestArithmetic.test_sub_offsetr   r   rV   r{   c             C   sP   t d|d}t| tkst|t tks,tt| tks<t|t tksLtd S )Nz2011-01)r   )r   r   r-   )r3   r   rv   r;   r;   r<   test_period_addsub_nat  s
    z%TestArithmetic.test_period_addsub_natc             C   s   t ddd}|tj  }t ddd}||ks0t|tjd }t ddd}||ksVtd}tjt|d |tjd  W d Q R X tjt|d |tjd  W d Q R X d S )	Nz
2011-04-01r"   )r   z
2011-04-02rL   z
2011-03-30z-Input cannot be converted to Period\(freq=D\))r   )r   r   rP   r-   r.   r/   r   r   )r3   rX   rY   rZ   r9   r;   r;   r<   test_period_ops_offset  s    z%TestArithmetic.test_period_ops_offset)r   r   r   r  r  r  r  Zboxesr  r.   r   r   r!  r$  r)  r   rO   rQ   rN   ZWeekr,  r;  r<  r=  r>  r;   r;   r;   r<   r  @  s.   	
 4Kr  c              C   sZ   d} t d}tjt| d d|_W d Q R X |j}tjt| d d| |_W d Q R X d S )Nznot writableZ2014Q1)r   r"  rL   )r   r.   r/   AttributeErrorr*   r   )r9   rv   r   r;   r;   r<   test_period_immutable  s    r@  c              C   s*   t dd} | jdkst| jdks&td S )Nz
0001-01-07r"   r!   r   )r   r#   r-   r%   )r  r;   r;   r<   test_small_year_parsing  s    
rA  c              C   s   dddddddg} t ddd	}x| D ]}t|j| q$W x.| D ]&}t d|d	}t| |jd
ks@tq@W t ddd	}t| t ddd	}t| d S )Nr   r   r   r"   r\   r]   r^   r!   )r*   r   i  r>   r   rb   rb   rb   rb   )r   r   rA   r#   r-   )r   r   r   r;   r;   r<   test_negone_ordinals  s    

rB  )+r   r   r   ZnumpyrG   r.   r   Zpandas._libs.tslibsr   r   r   Zpandas._libs.tslibs.ccalendarr   r   Zpandas._libs.tslibs.parsingr	   Zpandas._libs.tslibs.periodr
   r   Zpandas._libs.tslibs.timezonesr   r   Zpandas.compat.numpyr   Zpandasr   r   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r  r  r@  rA  rB  r;   r;   r;   r<   <module>   s<   
   a X  W   