o
    թZh                     @   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   sP   t | d}tjt|d td|d W d    d S 1 s!w   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/html/lang_env/lib/python3.10/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 sw   Y  t j d}t jt|d tdt d W d    d S 1 sBw   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   D   d}t jt|d tddd W d    d S 1 sw   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      "z>TestPeriodDisallowedFreqs.test_invalid_frequency_error_messagec                 C   r,   )Nz*for Period, please use 'M' instead of 'ME'r   r-   ZMEr(   r.   r*   r$   r$   r%   +test_invalid_frequency_period_error_message>   r0   zETestPeriodDisallowedFreqs.test_invalid_frequency_period_error_messageN)__name__
__module____qualname__r   markparametrizer   r   r   r   r   r&   r+   r/   r1   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w   Y  tjt|d t|dd W d    d S 1 s;w   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   sp  t ddd}t d}||ksJ t ddd}t d}||ks J t ddd}||ks,J t jdd}t t dd}||ks@J t jdd}t t dd}t t }||ks[J ||ksaJ t d	d
d}d}tjt|d t d	dd}W d    n1 sw   Y  ||ksJ t ddddd}t ddd}||ksJ t dd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 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 sw   Y  d }tj	t
|d t d!d"d W d    d S 1 s1w   Y  d S )#N1/1/2005Mr(   zJan 20052005YQr9   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   sZ   $z(TestPeriodConstruction.test_constructionc                 C   sx   t jtdd tddd W d    n1 sw   Y  t jtdd tdd W d    d S 1 s5w   Y  d S )Nzpass as a string insteadr   rA   )MinrE   r(   z
2006-12-31)wrE   )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s(J 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s,J tddd}||dks;J tddd}||ksGJ td	d
ddd}tddd}||ks[J W d    d S 1 sfw   Y  d S )Nr   3/10/12Br(   r9   z3/11/12z3/12/12b  rD   
   rF   )rW   rX   rY   bday_msgr   asfreq)r"   rZ   r[   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s&J t d	}t dddd}t d
}||ks;J ||ksAJ t d}||ksKJ t d}||ksUJ t d}||ks_J t d}||ksiJ t d}||kssJ t d}||ks}J t d}|jdksJ t d}||ksJ d S )NrC   rE   r@   r   quarterr   r<   r(   rD   z9/1/2005Z2005Q1Z2005q1Z05Q1Z05q1Z1Q2005Z1q2005Z1Q05Z1q05Z4Q1984i  Z4q1984r   r   )r"   rZ   r[   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s*J t ddd}|jdks7J t tdd	d	dd}t ddd}||ksMJ 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sJ ||ksJ ||ksJ d S )N2007-01r=   r(   200701rR   rS   r   I  rK   rE   
2007-01-012007-01-01 00:00:002007-01-01 00:00:00.000)r   r   r   r   np
datetime64r"   r^   rZ   r[   r]   r\   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s0J tjttd t dt dt dddksHJ W d    n1 sRw   Y  t dt	 dt dd	dksgJ t d
dtj
dddt d
dddks{J t d
dtj
dddt d
dddksJ t d
ddt	 dt d
ddd	dksJ tjttd t dddt dt dddddksJ W d    n1 sw   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w   Y  t dt dt dddks.J t dt d}t ddd}||ksCJ |jdksKJ |jdksSJ t tddddd}t ddd}||ksjJ 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sJ ||ksJ ||ksJ 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 S )(Nr<   r(   r=   r>   r?   r   rk   rl   r9   rC   rE   r   r   rs   r@   r   rD   rF   rn   ro   z
2005-03-013DZ3BrR   rz   r{   rK   ry   r|   r}   r~   rJ   rL   r   rM   rN   rO   rP   rQ   )r   r   MonthEndYearEndrW   rX   rY   rp   ZBusinessDayrV   Z
QuarterEndZBDayr   r   r   r   r   r   r$   r$   r%   test_period_constructor_offsets   s      "z6TestPeriodConstruction.test_period_constructor_offsetsc                 C   s0  d}t jt|d tt  W d    n1 sw   Y  t jt|d tt   W d    n1 s9w   Y  d}t jt|d tddd W d    n1 sXw   Y  d}t jt|d tddd W d    n1 sww   Y  d	}t jt|d td
ddd W d    n1 sw   Y  d}t jt|d tdd W d    n1 sw   Y  d}t jt|d tdd W d    n1 sw   Y  d}t jt|d tdd W d    n1 sw   Y  d}t jt|d tdd W d    d S 1 sw   Y  d S )Nz#Must supply freq for datetime valuer   r8   g?r9   r(   zOrdinal must be an integerrz   z?Only value or ordinal but not both should be given but not bothr   rE   )rS   valuer   z%If value is None, freq cannot be None)rG   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   rU   r   r	   r*   r$   r$   r%   test_invalid_argumentsA  sF   $z-TestPeriodConstruction.test_invalid_argumentsc                 C   sf   t ddd}t dddd|ksJ t d tu sJ t ddd}t |d	d}t d
d	d}||ks1J d S )Nrx   2Mr(   rK   rE   )r   rG   r   r|   r9   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s!J t d}|jdks,J t d	}|jd
ks7J t d}|jdksBJ t d}|jdksMJ d S )Nr|   r9   z2007-01-01 07hz2007-01-01 07:10rB   z2007-01-01 07:10:15sz2007-01-01 07:10:15.123rN   z2007-01-01 07:10:15.123000rQ   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sJ |jdks"J |jtdks,J |jt ks5J |d j|jd ksAJ d| j|jd ksMJ |d j|jd ksYJ d	| j|jd kseJ d S )
N1989Z2Yr(   r?   z2Y-DECY-DECr   rE   )r   rS   freqstrr   r   r   )r"   Zresult1Zresult2r$   r$   r%   test_multiples  s   z%TestPeriodConstruction.test_multiplesrG   c                 C   sv   d| }t d|d}dt|v sJ |jddd}t ||d}||ks&J |jddd}t ||d}||ks9J d S )NzQ-Z1989Q3r(   r9   endhowr   )r   strrf   r"   rG   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s%J t|t s,J d S )
NzY-r   r(   r9   r   r      )daysrE   )r   rf   r   
isinstancer   r$   r$   r%   test_period_cons_annual  s   
z.TestPeriodConstruction.test_period_cons_annualrH   numro      c                 C   sP   d| }d| }t ||d}t |dd|}||ksJ t|t s&J d S )Nz2011-02-zW-r(   r9   )r   rq   r   )r"   r   rH   Zdaystrr   r   r^   r$   r$   r%   test_period_cons_weekly  s   

z.TestPeriodConstruction.test_period_cons_weeklyc                 C   sp   t d}|jjdksJ t d}|jjdksJ d}tjt|d t d W d    d S 1 s1w   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"   rh   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 sJ d S )N2011-01r=   r(   )r   Z_from_ordinalrS   r   r   r"   r   resr$   r$   r%   test_period_from_ordinal  s   z/TestPeriodConstruction.test_period_from_ordinalr   r?   r=   r9   r   c                 C   sT   t d|d}|tu sJ t dd| d}|tu sJ t dd| d}|tu s(J d S )Nr   r(   23r   )r"   r   rh   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 sJ t tdd}|tu s$J t tdd}|tu s0J t d}|tu s:J t t}|tu sDJ d S )Nnatr   r(   r9   r   1D1hr   )r   r   r   r   r$   r$   r%   test_period_cons_nat  s   z+TestPeriodConstruction.test_period_cons_natc                 C   s`  t ddd}t ddd}|j|jksJ |jtdksJ |jdks%J |jt ks.J |jdks5J |d }|j|d jksCJ |j|jksKJ |jdksRJ |d }|j|d jks`J |j|jkshJ |jdksoJ d}tjt|d t dd	d W d    n1 sw   Y  d
}tjt|d t ddd W d    d S 1 sw   Y  d S )Nr   3Mr(   r=   rD   rE   z;Frequency must be positive, because it represents span: -3Mr   z-3Mz:Frequency must be positive, because it represents span: 0MZ0M)	r   rS   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s1J |j|jks9J |jtdksCJ |jd	ksJJ |jtdksTJ |jd	ks[J |jt ksdJ |jdkskJ |d }|j|d jksyJ |j|jksJ |jd	ksJ |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 }|j|d jksJ |j|jksJ |jd	ksJ q$d
}tjt|d t ddd W d    n1 sw   Y  tjt|d t ddd W d    n	1 sw   Y  tjt|d t ddd W d    n	1 s6w   Y  tjt|d t ddd W d    n	1 sTw   Y  d}tjt|d t ddd W d    n	1 stw   Y  tjt|d t ddd W d    n	1 sw   Y  d}tjt|d t ddd W d    n	1 sw   Y  d}tjt|d t ddd W d    d S 1 sw   Y  d S )Nr   r   r(   1h1Dr   rE   rz      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   rS   r   r   Hourr   r   r    r!   )r"   r   r   r   Zp3r   r#   r$   r$   r%   test_period_cons_combined  s|   





$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
.000000001rE   )z
.000000999  )z
.123456789i  )z
.999999999r   )z
.999999000r   )z.999999001123rE   )z.999999001123456rE   )z.999999001123456789rE   c                 C   s    t || | jj|ksJ d S )N)r   
start_time
nanosecond)r"   rH   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1hrz   )r   r   )r"   r   r   r$   r$   r%   test_period_large_ordinala  s   z0TestPeriodConstruction.test_period_large_ordinalN) r2   r3   r4   r;   r_   rd   rj   rr   rw   r   r   r   r   r   r   r   r5   r6   r   r   r   r   ranger   r   r   r   r   r   r   r   r   r$   r$   r$   r%   r7   D   sH    A#H


	

Gr7   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   rW   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s$J t tdddt tdddks6J t tdddt tdddksHJ d S )	Nr   r=   r(   
2011-01-01r9   r   r   z2011-02)hashr   rc   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s%J t ddd}|jddtdks7J tdtdd	 }|jd
d|ksJJ d S )Nr   r=   r(   Sr   r   z
2011-02-01rE   re   Er   z
2011-04-01)r   rf   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   sp  t ddd}|jdd}g d}|D ]}||jd|dksJ ||jd|dks*J q|jd	d}g d
}|D ]}||jd|dksDJ ||jd|dksOJ q7g d}dd }|D ])}t d|d}| |}	|	|ksoJ |j|jddkszJ |j||ksJ qZt ddd}|jddd}	tdddtdd }
|	|
ksJ |jddd}	|	|
ksJ |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sJ |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s6J d S )NrA   r?   r(   r   r   )r   ZStarTZBEGInr9   r   r   )er   ZFINIsH)	r?   r@   r=   Wrl   r9   r   r`   r   c                 S   s2   | j dkr| jtddd S t| | j  jjd S )Nrl   rE   r   )r   nanoseconds)r   r   r   r   _value)r   r$   r$   r%   _ex  s   
z0TestPeriodMethods.test_to_timestamp.<locals>._exZ1985r   r   i  rE   re   Z3hrB   Z2mini  startr   Z5s)r   rf   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w   Y  tdtdd }||ks2J d S )	Nr   
1990-01-05rl   r   r   
1990-01-06rE   r   )rW   rX   rY   rp   r   rf   r   r   r"   rh   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.000001rE   )z1970-01-01 00:00:00.00001ro   )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   )NrQ   re   c                 C   s"   t |j|dj}||ksJ d S )Nr(   )r   rf   microsecond)r"   rg   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   r9   )2000-12-15 13:45:26.123456789re   r   re   )r   rQ   2000-12-15 13:45:26.123456rQ   )r   Nr   rQ   )r   rN   2000-12-15 13:45:26.123rN   )r   Nr   rN   )2000-12-15 13:45:26r   r   r   )r   rB   z2000-12-15 13:45rB   )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   r9   r   r9   )r   rl   r   rl   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sJ 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)r2   r3   r4   r   r   r   r   r5   filterwarningsr   r   r6   r   r   r   r   r$   r$   r$   r%   r   i  s2    
?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s)J t d|d}|jr4J 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 sJ t ddd}|jdks(J |jdks/J t|t s6J t ddd}|jdksCJ |jd	ksJJ t|t sQJ d S )
Nr   r   rz        rD   r=      )r   r   rt   r   rG   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 )NrA   r`   r(   rB   )r   r   r   ZMinuter   )r"   rZ   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 ]<}tjt|d td|d W d    n1 sDw   Y  tjt|d td|d W d    n1 saw   Y  q*td|d}td|d}t|tszJ t|tsJ q$d S )N)ZMTHZMONTHZMONTHLYZMthrG   Zmonthly)ZBUSZBUSINESSZ
BUSINESSLYZWEEKDAYbus)ZDAYZDLYZDAILYrV   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=   rl   r9   r   rB   r   rN   rQ   re   r   z2016-03-01 09:00r(   rE   rz   )r
   itemsr   r    r!   r   r   )r"   casesr#   r   freqsr   r   r   r$   r$   r%   test_period_deprecated_freq=  s2   z0TestPeriodProperties.test_period_deprecated_freqc              	   C   s&   t | j| j| j| j| j| j| ddS )NrQ   )r   rG   rH   r   r   r   r   )r   r   rG   rH   r   r   r   )boundoffsetr$   r$   r%   _period_constructor[  s   z(TestPeriodProperties._period_constructorzbound, offsetr   rE   period_propertyr   r   c                 C   sJ   t ||}tjtdd t|| W d    d S 1 sw   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sJ ||tddd  d}t||d|ks5J d S )Nr   r(   rE   )unit)r   r   rf   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s3J W d    n1 s=w   Y  tdd	djt d
ddksQJ d S )N)r?   r@   r=   r9   r   rB   r   rn   rE   2012r(   r   rl   r   r   i  r      )r   r   r   rW   rX   rY   rp   )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s*J t ddd}|d	dd}||jks=J t ddd}|d	dd}||jksPJ t ddd}|d	ddd}||jksdJ tjttd t ddd}|d	dd}||jksJ W d    n1 sw   Y  t ddd}|d	dd}||jksJ t ddd}|d	dd}||jksJ 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      t t t|  djd S Nre   rE   r   r   Zas_unitr   argsr$   r$   r%   r        z/TestPeriodProperties.test_end_time.<locals>._ex  rE   r@   rn   r   r=   r   r9   r   r   rl   rD   r   Z15D   r   r   )r   r   rW   rX   rY   rp   )r"   r   r   r
  r$   r$   r%   test_end_time  sB   z"TestPeriodProperties.test_end_timec                 C   s`   t jttd tdd}|j}W d    n1 sw   Y  tdtdd }||ks.J d S )Nr   r   rl   r   rE   r   )rW   rX   rY   rp   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   r  r  r  r  r$   r$   r%   r     r  z;TestPeriodProperties.test_anchor_week_end_time.<locals>._exz2013-1-1zW-SATr  rE      )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?   rK   )r   r   ru   )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s+J || j|d ks6J q qd S )Nr   rK   rE   )r   r   rt   zQ-JANzQ-JUNrD   )r   r   Zqyearrt   )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 ]m}|| }|jdksJ d|d   kr$dkr.n n|jdks-J nAd|d   kr:dkrDn n|jd	ksCJ n+d
|d   krPdkrZn n|jdksYJ nd|d   krfdkron n|jdksoJ |j|d ksxJ qd S )Nr=   rK   rE   )r   r   rG   r   rD   r   r  r      rL   ro   r   )r   r   r   rt   rG   )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s$J |d jdks-J |jdks4J t ddd	ddjd
ksAJ d S )Nr   rK   rE   r  r   r   rG   rH   4      rn   r      )r   r   rt   rG   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s$J |d jdks-J |jdks4J t ddd	dd}|jd
ksCJ t}tjt	|d t ddddd W d    d S 1 s`w   Y  d S )Nr   rK   rE   r  r  r  r   rn   r   r!  r   ZWK)
r   r   rt   rG   r"  r#  r
   r   r    r!   )r"   r$  r   r#   r$   r$   r%   test_properties_weekly_legacy  s   "z2TestPeriodProperties.test_properties_weekly_legacyc                 C   sx  t jttd tddddd}W d    n1 sw   Y  |jdks&J |jdks-J |jdks4J |jdks;J |j	dksBJ |j
dksIJ |jdksPJ t jttd tddd	ddjd
kseJ W d    n1 sow   Y  tddddd}|jdksJ |jdksJ |jdksJ |jdksJ |j	dksJ |j
dksJ |jdksJ tddd	ddjd
ksJ d S )Nr   rl   rK   rE   r  r   r   rn   r   r!  r9   )rW   rX   rY   rp   r   r   rt   rG   rH   weekday	dayofyearr#  )r"   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}||fD ]H}|jdksJ |jdks&J |jdks-J |jdks4J |jdks;J |jdksBJ |jdksIJ |jdksPJ t ddd	dddjd
ks^J qd S )Nr   rK   rE   r   )r   r   rG   rH   r   Z2hr   rn   r   r!  )	r   r   rt   rG   rH   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sJ |jdksJ |jdks&J |jdks-J |jdks4J |jdks;J |jdksBJ t ddd	ddddjd
ksQJ d S )Nr`   rK   rE   r   )r   r   rG   rH   r   r   r   r9   rn   r   r!  )	r   rt   rG   rH   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sJ |jdks J |jdks'J |jdks.J |jdks5J |jdks<J |jdksCJ |j	dksJJ |j
dksQJ t ddddddddj
d	ksaJ d S )
Nr`   rK   rE   r   )r   r   rG   rH   r   r   r   r   rn   r   r!  )r   r   rt   rG   rH   r'  r(  r   r   r   r#  )r"   Zs_dater$   r$   r%   test_properties_secondly=  s&   z-TestPeriodProperties.test_properties_secondlyN) r2   r3   r4   __doc__r   r5   r6   r   r   r   r   r   staticmethodr   r   rB   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s!J 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)r2   r3   r4   r5  r$   r$   r$   r%   r0  U  s    r0  c                  C   s   d} t d}tjt| d d|_W d    n1 sw   Y  |j}tjt| d d| |_W d    d S 1 s;w   Y  d S )Nznot writableZ2014Q1r      r   )r   r   r    AttributeErrorrS   r   )r#   rh   r   r$   r$   r%   test_period_immutable_  s   "r8  c                  C   s*   t dd} | jdksJ | jdksJ d S )Nz
0001-01-07r9   rE   r  )r   r   rH   )Zper1r$   r$   r%   test_small_year_parsingl  s   
r9  c                  C   s   g d} t ddd}| D ]	}t|| q| D ]}t d|d}t| |jdks+J qtjttd t ddd}W d    n1 sDw   Y  t| t ddd}t| d S )	N)r?   r=   r@   r9   r   rB   r   r   r9   rz   r   r   rl   r   )r   r   rq   r   rW   rX   rY   rp   )r   r  r   r$   r$   r%   test_negone_ordinalsr  s   r:  )$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_testingrW   rp   r   r7   r   r   r0  r8  r9  r:  r$   r$   r$   r%   <module>   s6    $    ) -  B
