a
    Pf                     @   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 d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZ 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)DAYSMONTHS)OutOfBoundsDatetime)DateParseError)INVALID_FREQ_ERR_MSG)NaTPeriod	Timedelta	Timestampoffsetsz#Period with BDay freq is deprecatedc                	   @   sj   e Zd Zejde dfeddfej	dddfe
ddfgd	d
 Zdd Zdd Zdd ZdS )TestPeriodDisallowedFreqszfreq, freq_msg
BYearBegin   	YearBegin   ZstartingMonthQuarterBeginBusinessMonthEndc                 C   sN   t | d}tjt|d td|d W d    n1 s@0    Y  d S )N% is not supported as period frequencymatchi  )yearfreq)reescapepytestraises
ValueErrorr   )selfr   Zfreq_msgmsg r$   _/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/scalar/period/test_period.pytest_offsets_not_supported!   s    z4TestPeriodDisallowedFreqs.test_offsets_not_supportedc                 C   s   d}t jt|d tddd W d    n1 s40    Y  t j d}t jt|d  tdt d W d    n1 s0    Y  d S )Nz&C is not supported as period frequencyr   z
2023-04-10Cr   r   )r   r    r!   r   r   ZCustomBusinessDaybaser"   r#   r$   r$   r%   $test_custom_business_day_freq_raises0   s    *z>TestPeriodDisallowedFreqs.test_custom_business_day_freq_raisesc                 C   sB   d}t jt|d tddd W d    n1 s40    Y  d S )Nz-WOM-1MON is not supported as period frequencyr   
2012-01-02zWOM-1MONr(   r   r    r!   r   r*   r$   r$   r%   $test_invalid_frequency_error_message9   s    z>TestPeriodDisallowedFreqs.test_invalid_frequency_error_messagec                 C   sB   d}t jt|d tddd W d    n1 s40    Y  d S )Nz*for Period, please use 'M' instead of 'ME'r   r,   ZMEr(   r-   r*   r$   r$   r%   +test_invalid_frequency_period_error_message>   s    zETestPeriodDisallowedFreqs.test_invalid_frequency_period_error_messageN)__name__
__module____qualname__r   markparametrizer   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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ejdedd Zejdedd Zejdeejded d!d"d# Zd$d% Zd&d' Zejd(g d)d*d+ Zd,d- Zd.d/ Zd0d1 Zejdg d2ejd3g d4ejd5g d6d7d8 Zejd3ed9d:d; Zd<S )=TestPeriodConstructionc                 C   s   t d}d}tjt|d t| W d    n1 s:0    Y  tjt|d t|dd W d    n1 st0    Y  d S )Nzm8[ns]2Value must be Period, string, integer, or datetimer   Dr(   )r   Zto_numpyr   r    r!   r   )r"   tdr#   r$   r$   r%   test_from_td64nat_raisesE   s    
&z/TestPeriodConstruction.test_from_td64nat_raisesc              	   C   s~  t ddd}t d}||ks J t ddd}t d}||ks@J t ddd}||ksXJ t jdd}t t dd}||ksJ t jdd}t t dd}t t }||ksJ ||ksJ t d	d
d}d}tjt|d t d	dd}W d    n1 s0    Y  ||ksJ t ddddd}t ddd}||ksFJ t ddddd}||ksdJ t d}t tddddddddd}||ksJ t ddd}||ksJ t d}t tddddddddd}||ksJ t ddd}||ksJ d}tj	t
|d t dd W d    n1 s00    Y  d }tj	t
|d t d!d"d W d    n1 sp0    Y  d S )#N1/1/2005Mr(   zJan 20052005YQr7   1982minz<'MIN' is deprecated and will be removed in a future version.r   ZMIN        r   monthdayr   z3/1/2005d2007-01-01 09:00:00.001  	   r     ms2007-01-01 09:00:00.00101  usz"Must supply freq for ordinal value )ordinalzInvalid frequency: Xz2007-1-1X)r   nowr   r   Daytmassert_produces_warningFutureWarningr   r    r!   )r"   i1i2i4i3r#   expectedr$   r$   r%   test_constructionP   sT    ,*z(TestPeriodConstruction.test_constructionc                 C   sv   t jtdd tddd W d    n1 s00    Y  t jtdd tdd W d    n1 sh0    Y  d S )Nzpass as a string insteadr   r?   )MinrC   r(   z
2006-12-31)wrC   )r   r    	TypeErrorr   r"   r$   r$   r%   test_tuple_freq_disallowed   s    *z1TestPeriodConstruction.test_tuple_freq_disallowedc                 C   sT   t d}t|dd}| }||ks(J |j}t|dd}| }|j|ksPJ d S )Nz2022-04-20 09:23:24.123456789nsr(   )r   r   to_timestampZasm8)r"   tsperrtZdt64Zper2Zrt2r$   r$   r%   &test_construction_from_timestamp_nanos   s    z=TestPeriodConstruction.test_construction_from_timestamp_nanosc                 C   s   t jttd tddd}tddd}||dks:J tddd}||dksXJ tddd}||dksvJ tddd}||ksJ td	d
ddd}tddd}||ksJ W d    n1 s0    Y  d S )Nr   3/10/12Br(   r7   z3/11/12z3/12/12b  rB   
   rD   )rU   rV   rW   bday_msgr   asfreq)r"   rX   rY   r[   r$   r$   r%   test_construction_bday   s    z-TestPeriodConstruction.test_construction_bdayc                 C   s,  t dddd}t ddd}||ks&J t dddd}t ddd}||ksLJ t d	}t dddd}t d
}||ksvJ ||ksJ t d}||ksJ t d}||ksJ t d}||ksJ t d}||ksJ t d}||ksJ t d}||ksJ t d}|jdksJ t d}||ks(J d S )NrA   rC   r>   r   quarterr   r:   r(   rB   z9/1/2005Z2005Q1Z2005q1Z05Q1Z05q1Z1Q2005Z1q2005Z1Q05Z1q05Z4Q1984i  Z4q1984r   r   )r"   rX   rY   r[   lowerr$   r$   r%   test_construction_quarter   s6    z0TestPeriodConstruction.test_construction_quarterc                 C   s&  t ddd}t ddd}||ks$J t ddd}||ks<J t ddd}||ksTJ t ddd}|jdksnJ t tdd	d	dd}t ddd}||ksJ t tdd	d	dd}t tdd	d	dd}t td
dd}t ddd}t ddd}||ksJ ||ksJ ||ksJ ||ks"J d S )N2007-01r;   r(   200701rP   rQ   r   I  rI   rC   
2007-01-012007-01-01 00:00:002007-01-01 00:00:00.000)r   r   r   r   np
datetime64r"   r\   rX   rY   r[   rZ   Zi5r$   r$   r%   test_construction_month   s*    z.TestPeriodConstruction.test_construction_monthc              	   C   s  t dt dt dddks J t dt dt dddks@J t dt dt dddks`J tjttd0 t dt dt dddksJ W d    n1 s0    Y  t dt	 dt dd	dksJ t d
dtj
dddt d
dddksJ t d
dtj
dddt d
dddks J t d
ddt	 dt d
ddd	dksJJ tjttd: t dddt dt dddddksJ W d    n1 s0    Y  t ddd}t d
ddt	dd|ksJ t d
dddd|ksJ tjttd< t dddtddt dddddks&J W d    n1 s<0    Y  t dt dt dddkshJ t dt d}t ddd}||ksJ |jdksJ |jdksJ t tddddd}t ddd}||ksJ t tddddd}t tddddd}t tddd}t ddd}t ddd}||ks@J ||ksNJ ||ks\J ||ksjJ t d }t tdddd!d"d"d#d$d}||ksJ t d d$d}||ksJ t d%}t tdddd!d"d"d&d'd}||ksJ t d%d'd}||ksJ d S )(Nr:   r(   r;   r<   r=   r   ri   rj   r7   rA   rC   r   r   rq   r>   r   rB   rD   rl   rm   z
2005-03-013DZ3BrP   rx   ry   rI   rw   rz   r{   r|   rH   rJ   r   rK   rL   rM   rN   rO   )r   r   MonthEndYearEndrU   rV   rW   rn   ZBusinessDayrT   Z
QuarterEndZBDayr   r   r   r}   r~   r   r$   r$   r%   test_period_constructor_offsets   s|      * 
. ."z6TestPeriodConstruction.test_period_constructor_offsetsc                 C   s6  d}t jt|d tt  W d    n1 s40    Y  t jt|d  tt   W d    n1 sr0    Y  d}t jt|d tddd W d    n1 s0    Y  d}t jt|d tddd W d    n1 s0    Y  d	}t jt|d td
ddd W d    n1 s00    Y  d}t jt|d tdd W d    n1 sn0    Y  d}t jt|d tdd W d    n1 s0    Y  d}t jt|d tdd W d    n1 s0    Y  d}t jt|d tdd W d    n1 s(0    Y  d S )Nz#Must supply freq for datetime valuer   r6   g?r7   r(   zOrdinal must be an integerrx   z?Only value or ordinal but not both should be given but not bothr   rC   )rQ   valuer   z%If value is None, freq cannot be None)rE   z1^Given date string "-2000" not likely a datetime$z-2000r=   zday is out of range for month0z/Unknown datetime string format, unable to parsez	1/1/-2000)r   r    r!   r   r   rS   r   r	   r*   r$   r$   r%   test_invalid_argumentsA  s4    *.**.***z-TestPeriodConstruction.test_invalid_argumentsc                 C   sf   t ddd}t dddd|ks"J t d tu s2J t ddd}t |d	d}t d
d	d}||ksbJ d S )Nrv   2Mr(   rI   rC   )r   rE   r   rz   r7   r=   Z2007r   r   )r"   r\   presultexpr$   r$   r%   test_constructor_corner`  s    z.TestPeriodConstruction.test_constructor_cornerc                 C   s   t d}|jdksJ t d}|jdks,J t d}|jdksBJ t d}|jdksXJ t d	}|jd
ksnJ t d}|jdksJ t d}|jdksJ d S )Nrz   r7   z2007-01-01 07hz2007-01-01 07:10r@   z2007-01-01 07:10:15sz2007-01-01 07:10:15.123rL   z2007-01-01 07:10:15.123000rO   z2007-01-01 07:10:15.123400)r   r   r"   r   r$   r$   r%   test_constructor_infer_freql  s    z2TestPeriodConstruction.test_constructor_infer_freqc                 C   s   t ddd}t ddd}|j|jks(J |jdks6J |jdksDJ |jtdksXJ |jt ksjJ |d j|jd ksJ d| j|jd ksJ |d j|jd ksJ d	| j|jd ksJ d S )
N1989Z2Yr(   r=   z2Y-DECY-DECr   rC   )r   rQ   freqstrr   r   r   )r"   Zresult1Zresult2r$   r$   r%   test_multiples  s    z%TestPeriodConstruction.test_multiplesrE   c                 C   sv   d| }t d|d}dt|v s&J |jddd}t ||d}||ksLJ |jddd}t ||d}||ksrJ d S )NzQ-Z1989Q3r(   r7   endhowr   )r   strrd   r"   rE   r   r   Zstampr   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sJJ t|t sXJ d S )
NzY-r   r(   r7   r   r      )daysrC   )r   rd   r   
isinstancer   r$   r$   r%   test_period_cons_annual  s    
z.TestPeriodConstruction.test_period_cons_annualrF   numrm      c                 C   sP   d| }d| }t ||d}t |dd|}||ks>J t|t sLJ d S )Nz2011-02-zW-r(   r7   )r   ro   r   )r"   r   rF   Zdaystrr   r   r\   r$   r$   r%   test_period_cons_weekly  s    

z.TestPeriodConstruction.test_period_cons_weeklyc                 C   sn   t d}|jjdksJ t d}|jjdks0J d}tjt|d t d W d    n1 s`0    Y  d S )Nz2017-01-23/2017-01-29W-SUNz2017-01-24/2017-01-30zW-MONz%Could not parse as weekly-freq Periodr   z2016-01-23/2017-01-29)r   r   r   r   r    r!   )r"   rf   r#   r$   r$   r%   test_parse_week_str_roundstrip  s    z5TestPeriodConstruction.test_parse_week_str_roundstripc                 C   s<   t ddd}t j|j|jd}||ks*J t|t s8J d S )N2011-01r;   r(   )r   Z_from_ordinalrQ   r   r   r"   r   resr$   r$   r%   test_period_from_ordinal  s    z/TestPeriodConstruction.test_period_from_ordinalr   r=   r;   r7   r   c                 C   sT   t d|d}|tu sJ t dd| d}|tu s4J t dd| d}|tu sPJ d S )Nr   r(   23r   )r"   r   rf   r$   r$   r%   'test_construct_from_nat_string_and_freq  s    z>TestPeriodConstruction.test_construct_from_nat_string_and_freqc                 C   s   t ddd}|tu sJ t tdd}|tu s0J t tdd}|tu sHJ t tdd}|tu s`J t d}|tu stJ t t}|tu sJ d S )Nnatr   r(   r7   r   1D1hr   )r   r   r   r   r$   r$   r%   test_period_cons_nat  s    z+TestPeriodConstruction.test_period_cons_natc                 C   sb  t ddd}t ddd}|j|jks(J |jtdks<J |jdksJJ |jt ks\J |jdksjJ |d }|j|d jksJ |j|jksJ |jdksJ |d }|j|d jksJ |j|jksJ |jdksJ d}tjt|d t dd	d W d    n1 s0    Y  d
}tjt|d t ddd W d    n1 sT0    Y  d S )Nr   3Mr(   r;   rB   rC   z;Frequency must be positive, because it represents span: -3Mr   z-3Mz:Frequency must be positive, because it represents span: 0MZ0M)	r   rQ   r   r   r   r   r   r    r!   )r"   p1p2r   r#   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}|D ]\}}}|j|jksdJ |j|jkstJ |jtdksJ |jd	ksJ |jtdksJ |jd	ksJ |jt ksJ |jdksJ |d }|j|d jksJ |j|jksJ |jd	ksJ |d }|j|d jks4J |j|jksFJ |jd	ksVJ |d }|j|d jkstJ |j|jksJ |jd	ksJ |d }|j|d jksJ |j|jksJ |jd	ksHJ qHd
}tjt|d t ddd W d    n1 s0    Y  tjt|d t ddd W d    n1 sH0    Y  tjt|d t ddd W d    n1 s0    Y  tjt|d t ddd W d    n1 s0    Y  d}tjt|d t ddd W d    n1 s 0    Y  tjt|d t ddd W d    n1 s<0    Y  d}tjt|d t ddd W d    n1 s|0    Y  d}tjt|d t ddd W d    n1 s0    Y  d S )Nr   r   r(   1h1Dr   rC   rx      Z25hz<Frequency must be positive, because it represents span: -25hr   z-1D1hz-1h1Dz:Frequency must be positive, because it represents span: 0DZ0D0hzInvalid frequency: 1W1DZ1W1DzInvalid frequency: 1D1WZ1D1W)	r   rQ   r   r   Hourr   r   r    r!   )r"   r   r   r   Zp3r   r#   r$   r$   r%   test_period_cons_combined  sl    





,,,,,,,z0TestPeriodConstruction.test_period_cons_combined)z1970/01/01 z2020-12-31 z1981/09/13 hour)z00:00:00z00:00:01z23:59:59z12:00:59zsec_float, expected))z
.000000001rC   )z
.000000999  )z
.123456789i  )z
.999999999r   )z
.999999000r   )z.999999001123rC   )z.999999001123456rC   )z.999999001123456789rC   c                 C   s    t || | jj|ksJ d S )N)r   
start_time
nanosecond)r"   rF   r   Z	sec_floatr\   r$   r$   r%   "test_period_constructor_nanosecondL  s    z9TestPeriodConstruction.test_period_constructor_nanosecond   c                 C   s"   t d| dd}|j|ksJ d S )Ni ' Z1hrx   )r   r   )r"   r   r   r$   r$   r%   test_period_large_ordinala  s    z0TestPeriodConstruction.test_period_large_ordinalN) r0   r1   r2   r9   r]   rb   rh   rp   ru   r   r   r   r   r   r   r   r3   r4   r   r   r   r   ranger   r   r   r   r   r   r   r   r   r$   r$   r$   r%   r5   D   sF   A#H


	

Gr5   c                   @   s   e Zd Zdd Zdd Zdd Zejddd	 Z	d
d Z
ejdg dejdg ddd Zejddejddd Zdd Zdd ZdS )TestPeriodMethodsc                 C   s"   t d}t|}||ksJ d S )NZ2000Q1)r   rU   Zround_trip_pickle)r"   r   Znew_pr$   r$   r%   test_round_tripj  s    
z!TestPeriodMethods.test_round_tripc                 C   s   t tdddt tdddks$J t tdddt tdddksHJ t tdddt tdddkslJ t tdddt tdddksJ d S )	Nr   r;   r(   
2011-01-01r7   r   r   z2011-02)hashr   ra   r$   r$   r%   	test_hasho  s    $$$zTestPeriodMethods.test_hashc                 C   s   t ddd}|jddtdks$J tdtdd	 }|jd
d|ksJJ t ddd}|jddtdksnJ tdtdd	 }|jd
d|ksJ d S )Nr   r;   r(   Sr   r   z
2011-02-01rC   rc   Er   z
2011-04-01)r   rd   r   r   )r"   r   r\   r$   r$   r%   test_to_timestamp_mult{  s    z(TestPeriodMethods.test_to_timestamp_mult8ignore:Period with BDay freq is deprecated:FutureWarningc                 C   s|  t ddd}|jdd}g d}|D ]0}||jd|dks>J ||jd|dks$J q$|jd	d}g d
}|D ]0}||jd|dksJ ||jd|dksnJ qng d}dd }|D ]R}t d|d}| |}	|	|ksJ |j|jddksJ |j||ksJ qt ddd}|jddd}	tdddtdd }
|	|
ksFJ |jddd}	|	|
ksbJ |jddd}	tdddtdd }
|	|
ksJ |jddd}	|	|
ksJ |jdd}	tdddtdd }
|	|
ksJ tddd}
|jddd}	|	|
ksJ |jddd}	|	|
ks$J |jddd}	|	|
ks@J |jddd}	|	|
ks\J |jddd}	|	|
ksxJ d S )Nr?   r=   r(   r   r   )r   ZStarTZBEGInr7   r   r   )er   ZFINIsH)	r=   r>   r;   Wrj   r7   r   r^   r   c                 S   s2   | j dkr| jtddd S t| | j  jjd S )Nrj   rC   r   )r   nanoseconds)r   r   r   r   _value)r   r$   r$   r%   _ex  s    
z0TestPeriodMethods.test_to_timestamp.<locals>._exZ1985r   r   i  rC   rc   Z3hr@   Z2mini  startr   Z5s)r   rd   Z	to_periodr   end_timer   r   r   )r"   r   Zstart_tsaliasesaZend_tsZfrom_lstr   Zfcoder   r\   r$   r$   r%   test_to_timestamp  sX    z#TestPeriodMethods.test_to_timestampc                 C   sh   t jttd( tdd}|jddd}W d    n1 s<0    Y  tdtdd }||ksdJ d S )	Nr   
1990-01-05rj   r   r   
1990-01-06rC   r   )rU   rV   rW   rn   r   rd   r   r   r"   rf   r   r\   r$   r$   r%   test_to_timestamp_business_end  s
    
,z0TestPeriodMethods.test_to_timestamp_business_endzts, expected)	)z1970-01-01 00:00:00r   )z1970-01-01 00:00:00.000001rC   )z1970-01-01 00:00:00.00001rm   )z1970-01-01 00:00:00.499i8 )z1999-12-31 23:59:59.999iX> )z1999-12-31 23:59:59.999999i?B )z2050-12-31 23:59:59.5i  )z2050-12-31 23:59:59.500001i! )z2050-12-31 23:59:59.123456i@ r   )NrO   rc   c                 C   s"   t |j|dj}||ksJ d S )Nr(   )r   rd   microsecond)r"   re   r\   r   r   r$   r$   r%   test_to_timestamp_microsecond  s    z/TestPeriodMethods.test_to_timestamp_microsecondzstr_ts,freq,str_res,str_freq))zJan-2000N2000-01r;   )
2000-12-15Nr   r7   )2000-12-15 13:45:26.123456789rc   r   rc   )r   rO   2000-12-15 13:45:26.123456rO   )r   Nr   rO   )r   rL   2000-12-15 13:45:26.123rL   )r   Nr   rL   )2000-12-15 13:45:26r   r   r   )r   r@   z2000-12-15 13:45r@   )r   r   z2000-12-15 13:00r   )r   r=   2000r   )r   r>   Z2000Q4Q-DEC)r   r;   z2000-12r;   )r   r   z2000-12-11/2000-12-17r   )r   r7   r   r7   )r   rj   r   rj   c                 C   s>   t ||d}t||ksJ t|d| d| dks:J d S )Nr(   zPeriod('z', 'z'))r   r   repr)r"   Zstr_tsr   Zstr_resZstr_freqr   r$   r$   r%   	test_repr  s    zTestPeriodMethods.test_reprc                 C   s$   t ddd}ttt|v s J d S )Nr   r;   r(   )r   r   r   r   r$   r$   r%   test_repr_nat	  s    zTestPeriodMethods.test_repr_natc                 C   s4   t ddd}|d}|dks"J t|ts0J 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   r   r   r$   r$   r%   test_strftime  s    
zTestPeriodMethods.test_strftimeN)r0   r1   r2   r   r   r   r   r3   filterwarningsr   r   r4   r   r   r   r   r$   r$   r$   r%   r   i  s0   
?r   c                   @   s2  e Zd ZdZejdg ddd Zdd Zdd	 Z	ej
d
dd Zedd Zejdejdfejdfgejdddgdd Zejdejdfejdfgej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/d0 Zd1d2 Zd3S )4TestPeriodPropertiesz5Test properties such as year, month, weekday, etc....r   r   c                 C   sl   t d|d}|jsJ t|jts&J t d|d}|jr<J t d|d}|jsRJ t d|d}|jrhJ d S )Nz2000-01-01 00:00:00r(   z1999-01-01 00:00:00z2004-01-01 00:00:00z2100-01-01 00:00:00)r   Zis_leap_yearr   bool)r"   r   r   r$   r$   r%   test_is_leap_year  s    


z&TestPeriodProperties.test_is_leap_yearc                 C   s   t ddd}|jdksJ |jdks(J t|t s6J t ddd}|jdksPJ |jdks^J t|t slJ t ddd}|jdksJ |jd	ksJ t|t sJ d S )
Nr   r   rx        rB   r;      )r   r   rr   r   rE   r   r$   r$   r%    test_quarterly_negative_ordinals(  s    z5TestPeriodProperties.test_quarterly_negative_ordinalsc                 C   s0   t ddd}|jt ksJ |jdks,J d S )Nr?   r^   r(   r@   )r   r   r   ZMinuter   )r"   rX   r$   r$   r%   test_freq_str8  s    z"TestPeriodProperties.test_freq_strr   c              
   C   s  g dg dg dg dg dg dg dg dg d	d
	}t }| D ]\}}|D ]x}tjt|d td|d W d    n1 s0    Y  tjt|d td|d W d    qT1 s0    Y  qTtd|d}td|d}t|tsJ t|tsHJ qHd S )N)ZMTHZMONTHZMONTHLYZMthrE   Zmonthly)ZBUSZBUSINESSZ
BUSINESSLYZWEEKDAYbus)ZDAYZDLYZDAILYrT   ZDlyZDaily)ZHRZHOURZHRLYZHOURLYhrr   ZHRly)minuteZMINUTEZMINUTELYZminutely)secZSECZSECONDZSECONDLYsecond)ZMILLISECONDZMILLISECONDLYZmillisecond)ZMICROSECONDZMICROSECONDLYr   )Z
NANOSECONDZNANOSECONDLYr   )	r;   rj   r7   r   r@   r   rL   rO   rc   r   z2016-03-01 09:00r(   rC   rx   )r
   itemsr   r    r!   r   r   )r"   Zcasesr#   r   freqsr   r   r   r$   r$   r%   test_period_deprecated_freq=  s*    *,z0TestPeriodProperties.test_period_deprecated_freqc              	   C   s&   t | j| j| j| j| j| j| ddS )NrO   )r   rE   rF   r   r   r   r   )r   r   rE   rF   r   r   r   )boundoffsetr$   r$   r%   _period_constructor[  s    z(TestPeriodProperties._period_constructorzbound, offsetr   rC   period_propertyr   r   c                 C   sH   t ||}tjtdd t|| W d    n1 s:0    Y  d S )NzOut of bounds nanosecondr   )r   r   r   r    r   getattr)r"   r   r   r   periodr$   r$   r%   $test_outer_bounds_start_and_end_timeg  s    z9TestPeriodProperties.test_outer_bounds_start_and_end_timec                 C   sn   t || }| jdd}t||jdd|ks8J ||tddd  d}t||d|ksjJ d S )Nr   r(   rC   )unit)r   r   rd   roundr   r   floor)r"   r   r   r   r   r\   r$   r$   r%   $test_inner_bounds_start_and_end_timeo  s
    z9TestPeriodProperties.test_inner_bounds_start_and_end_timec                 C   s   g d}t ddd}|D ]}td|d}|j|ksJ qtjttd. tdddjt dddksfJ W d    n1 sz0    Y  tdd	djt d
ddksJ d S )N)r=   r>   r;   r7   r   r@   r   rl   rC   2012r(   r   rj   r   r   i  r      )r   r   r   rU   rV   rW   rn   )r"   Zfreq_lstxpfr   r$   r$   r%   test_start_timey  s    <z$TestPeriodProperties.test_start_timec                 C   s  t ddd}dd }|ddd}||jks.J t ddd}|d	d
d}||jksTJ t ddd}|d	dd}||jkszJ t ddd}|d	dd}||jksJ t ddd}|d	ddd}||jksJ tjttd6 t ddd}|d	dd}||jksJ W d    n1 s0    Y  t ddd}|d	dd}||jksFJ t ddd}|d	dd}||jksnJ t ddd}|d	ddd}||jksJ t ddd}|d	ddd}||jksJ d S )Nr  r=   r(   c                  W   s   t t t|  djd S Nrc   rC   r   r   Zas_unitr   argsr$   r$   r%   r     s    z/TestPeriodProperties.test_end_time.<locals>._ex  rC   r>   rl   r   r;   r   r7   r   r   rj   rB   r   Z15D   r   r   )r   r   rU   rV   rW   rn   )r"   r   r   r  r$   r$   r%   test_end_time  s@    .z"TestPeriodProperties.test_end_timec                 C   s`   t jttd  tdd}|j}W d    n1 s40    Y  tdtdd }||ks\J d S )Nr   r   rj   r   rC   r   )rU   rV   rW   rn   r   r   r   r   r   r$   r$   r%   test_end_time_business_friday  s
    
$z2TestPeriodProperties.test_end_time_business_fridayc                 C   s0   dd }t dd}|ddd}|j|ks,J d S )Nc                  W   s   t t t|  djd S r
  r  r  r$   r$   r%   r     s    z;TestPeriodProperties.test_anchor_week_end_time.<locals>._exz2013-1-1zW-SATr  rC      )r   r   )r"   r   r   r  r$   r$   r%   test_anchor_week_end_time  s    
z.TestPeriodProperties.test_anchor_week_end_timec                 C   s   t ddd}|jdksJ d S )Nr=   rI   )r   r   rs   )r"   Za_dater$   r$   r%   test_properties_annually  s    z-TestPeriodProperties.test_properties_annuallyc                 C   st   t dddd}t dddd}t dddd}tdD ]<}|||fD ],}|| jdksVJ || j|d ks@J q@q2d S )Nr   rI   rC   )r   r   rr   zQ-JANzQ-JUNrB   )r   r   Zqyearrr   )r"   Z
qedec_dateZ
qejan_dateZ
qejun_datexZqdr$   r$   r%   test_properties_quarterly  s    z.TestPeriodProperties.test_properties_quarterlyc                 C   s   t dddd}tdD ]}|| }|jdks0J d|d   krHdkr\n n|jdksJ nd|d   krtdkrn n|jd	ksJ nVd
|d   krdkrn n|jdksJ n*d|d   krdkrn n|jdksJ |j|d ksJ qd S )Nr;   rI   rC   )r   r   rE   r   rB   r   r  r      rJ   rm   r   )r   r   r   rr   rE   )r"   Zm_dater  Zm_ival_xr$   r$   r%   test_properties_monthly  s    z,TestPeriodProperties.test_properties_monthlyc                 C   s   t ddddd}|jdksJ |jdks,J |jdks:J |jdksHJ |d jdksZJ |jdkshJ t ddd	ddjd
ksJ d S )Nr   rI   rC   r  r   r   rE   rF   4      rl   r      )r   r   rr   rE   weekdays_in_month)r"   w_dater$   r$   r%   test_properties_weekly  s    z+TestPeriodProperties.test_properties_weeklyc                 C   s   t ddddd}|jdksJ |jdks,J |jdks:J |jdksHJ |d jdksZJ |jdkshJ t ddd	dd}|jd
ksJ t}tjt	|d  t ddddd W d    n1 s0    Y  d S )Nr   rI   rC   r  r  r  r  rl   r   r  r   ZWK)
r   r   rr   rE   r  r  r
   r   r    r!   )r"   r  r   r#   r$   r$   r%   test_properties_weekly_legacy  s    z2TestPeriodProperties.test_properties_weekly_legacyc                 C   s  t jttd  tddddd}W d    n1 s40    Y  |jdksLJ |jdksZJ |jdkshJ |jdksvJ |j	dksJ |j
dksJ |jdksJ t jttd* tddd	ddjd
ksJ W d    n1 s0    Y  tddddd}|jdksJ |jdksJ |jdks(J |jdks8J |j	dksHJ |j
dksXJ |jdkshJ tddd	ddjd
ksJ d S )Nr   rj   rI   rC   r  r   r  rl   r   r  r7   )rU   rV   rW   rn   r   r   rr   rE   rF   weekday	dayofyearr  )r"   Zb_dateZd_dater$   r$   r%   test_properties_daily   s(    .8z*TestPeriodProperties.test_properties_dailyc                 C   s   t dddddd}t dddddd}||fD ]}|jdks>J |jdksLJ |jdksZJ |jdkshJ |jdksvJ |jdksJ |jdksJ |jdksJ t ddd	dddjd
ks,J q,d S )Nr   rI   rC   r   )r   r   rE   rF   r   Z2hr  rl   r   r  )	r   r   rr   rE   rF   r"  r#  r   r  )r"   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"J |jdks0J |jdks>J |jdksLJ |jdksZJ |jdkshJ |jdksvJ |jdksJ t ddd	ddddjd
ksJ d S )Nr^   rI   rC   r   )r   r   rE   rF   r   r   r  r7   rl   r   r  )	r   rr   rE   rF   r"  r#  r   r   r  )r"   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$J |jdks2J |jdks@J |jdksNJ |jdks\J |jdksjJ |jdksxJ |jdksJ |j	dksJ |j
dksJ t ddddddddj
d	ksJ d S )
Nr^   rI   rC   r   )r   r   rE   rF   r   r   r   r  rl   r   r  )r   r   rr   rE   rF   r"  r#  r   r   r   r  )r"   Zs_dater$   r$   r%   test_properties_secondly=  s&    z-TestPeriodProperties.test_properties_secondlyN) r0   r1   r2   __doc__r   r3   r4   r   r   r   r   r   staticmethodr   r   r@   maxr   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 )TestPeriodComparisonsc                 C   sF   t dd}t dd}t dd}|||g}|||g}t||ksBJ d S )Nr   r;   z2000-02z2000-03)r   sorted)r"   janfebmarZperiodsZcorrectPeriodsr$   r$   r%   test_sort_periodsV  s    




z'TestPeriodComparisons.test_sort_periodsN)r0   r1   r2   r0  r$   r$   r$   r%   r+  U  s   r+  c                  C   s   d} t d}tjt| d d|_W d    n1 s60    Y  |j}tjt| d d| |_W d    n1 st0    Y  d S )Nznot writableZ2014Q1r      r   )r   r   r    AttributeErrorrQ   r   )r#   rf   r   r$   r$   r%   test_period_immutable_  s    $r3  c                  C   s*   t dd} | jdksJ | jdks&J d S )Nz
0001-01-07r7   rC   r  )r   r   rF   )Zper1r$   r$   r%   test_small_year_parsingl  s    
r4  c                  C   s   g d} t ddd}| D ]}t|| q| D ]&}t d|d}t| |jdks0J q0tjttd t ddd}W d    n1 s0    Y  t| t ddd}t| d S )	N)r=   r;   r>   r7   r   r@   r   r   r7   rx   r   r   rj   r   )r   r   ro   r   rU   rV   rW   rn   )r   r   r   r$   r$   r%   test_negone_ordinalsr  s    *r5  )$r   r   r   r   numpyr}   r   Zpandas._libs.tslibsr   Zpandas._libs.tslibs.ccalendarr   r   Zpandas._libs.tslibs.np_datetimer   Zpandas._libs.tslibs.parsingr	   Zpandas._libs.tslibs.periodr
   Zpandasr   r   r   r   r   Zpandas._testingZ_testingrU   rn   r   r5   r   r   r+  r3  r4  r5  r$   r$   r$   r%   <module>   s4   $    ) -  B
