o
     \iG                     @   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 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)PY314)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   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   freq_msgmsg r'   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/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   CustomBusinessDaybaser$   r&   r'   r'   r(   $test_custom_business_day_freq_raises1   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_message:      "z>TestPeriodDisallowedFreqs.test_invalid_frequency_error_messagec                 C   r0   )Nz*for Period, please use 'M' instead of 'ME'r   r1   MEr+   r2   r.   r'   r'   r(   +test_invalid_frequency_period_error_message?   r4   zETestPeriodDisallowedFreqs.test_invalid_frequency_period_error_messageN)__name__
__module____qualname__r!   markparametrizer   r   r   r   r   r)   r/   r3   r6   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   to_numpyr!   r"   r#   r   )r$   tdr&   r'   r'   r(   test_from_td64nat_raisesF   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Qr>   1982minz<'MIN' is deprecated and will be removed in a future version.r   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_constructionQ   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   rG   )MinrL   r+   z
2006-12-31)wrL   )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_timestampasm8)r$   tsperrtdt64per2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+   r>   z3/11/12z3/12/12b  rK   
   rM   )r^   r_   r`   bday_msgr   asfreq)r$   ra   rb   rd   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 )NrJ   rL   rF   r   quarterr   rB   r+   rK   z9/1/20052005Q12005q105Q105q11Q20051q20051Q051q054Q1984i  4q1984r   r   )r$   ra   rb   rd   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-01rC   r+   200701rY   rZ   r   I  rR   rL   
2007-01-012007-01-01 00:00:002007-01-01 00:00:00.000)r   r   r   r   np
datetime64r$   re   ra   rb   rd   rc   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 )(NrB   r+   rC   rD   rE   r   rv   rw   r>   rJ   rL   r   r   r~   rF   r   rK   rM   ry   rz   z
2005-03-013D3BrY   r   r   rR   r   r   r   r   rQ   rS   r   rT   rU   rV   rW   rX   )r   r   MonthEndYearEndr^   r_   r`   r{   BusinessDayr]   
QuarterEndBDayr   r   r   r   r   r   r'   r'   r(   test_period_constructor_offsets   s      "z6TestPeriodConstruction.test_period_constructor_offsetsc                 C   s:  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  trd}n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   r=   g?r>   r+   zOrdinal must be an integerr   z?Only value or ordinal but not both should be given but not bothr   rL   )rZ   valuer   z%If value is None, freq cannot be None)rN   z1^Given date string "-2000" not likely a datetime$z-2000rE   z5day 0 must be in range 1..31 for month 1 in year 1: 0zday is out of range for month0z/Unknown datetime string format, unable to parsez	1/1/-2000)	r!   r"   r#   r   r   r\   r   r   r	   r.   r'   r'   r(   test_invalid_argumentsB  sJ   $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 )Nr   2Mr+   rR   rL   )r   rN   r   r   r>   rE   2007r   r   )r$   re   presultexpr'   r'   r(   test_constructor_cornerd  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   r>   z2007-01-01 07hz2007-01-01 07:10rH   z2007-01-01 07:10:15sz2007-01-01 07:10:15.123rU   z2007-01-01 07:10:15.123000rX   z2007-01-01 07:10:15.123400)r   r   r$   r   r'   r'   r(   test_constructor_infer_freqp  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19892Yr+   rE   z2Y-DECY-DECr   rL   )r   rZ   freqstrr   r   r   )r$   result1result2r'   r'   r(   test_multiples  s   z%TestPeriodConstruction.test_multiplesrN   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-1989Q3r+   r>   endhowr   )r   strrm   r$   rN   r   r   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+   r>   r   r      )daysrL   )r   rm   r   
isinstancer   r'   r'   r(   test_period_cons_annual  s   
z.TestPeriodConstruction.test_period_cons_annualrO   numrz      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+   r>   )r   r|   r   )r$   r   rO   daystrr   r   re   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$   rp   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-01rC   r+   )r   _from_ordinalrZ   r   r   r$   r   resr'   r'   r(   test_period_from_ordinal  s   z/TestPeriodConstruction.test_period_from_ordinalr   rE   rC   r>   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   rp   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+   r>   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+   rC   rK   rL   z;Frequency must be positive, because it represents span: -3Mr   z-3Mz:Frequency must be positive, because it represents span: 0M0M)	r   rZ   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   rL   r      25hz<Frequency must be positive, because it represents span: -25hr   z-1D1hz-1h1Dz:Frequency must be positive, because it represents span: 0D0D0hzInvalid frequency: 1W1D1W1DzInvalid frequency: 1D1W1D1W)	r   rZ   r   r   Hourr   r!   r"   r#   )r$   r   r   r   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
.000000001rL   )z
.000000999  )z
.123456789i  )z
.999999999r   )z
.999999000r   )z.999999001123rL   )z.999999001123456rL   )z.999999001123456789rL   c                 C   s    t || | jj|ksJ d S )N)r   
start_time
nanosecond)r$   rO   r   	sec_floatre   r'   r'   r(   "test_period_constructor_nanosecondP  s    z9TestPeriodConstruction.test_period_constructor_nanosecond   c                 C   s"   t d| dd}|j|ksJ d S )Ni ' 1hr   )r   r   )r$   r   r   r'   r'   r(   test_period_large_ordinale  s   z0TestPeriodConstruction.test_period_large_ordinalN) r7   r8   r9   rA   rf   rk   ru   r}   r   r   r   r   r   r   r   r!   r:   r;   r   r   r   r   ranger   r   r   r   r   r   r   r   r   r'   r'   r'   r(   r<   E   sH    A#H"


	

Gr<   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 )N2000Q1)r   r^   round_trip_pickle)r$   r   new_pr'   r'   r(   test_round_tripn  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   rC   r+   
2011-01-01r>   r   r   z2011-02)hashr   rj   r'   r'   r(   	test_hashs  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   rC   r+   Sr   r   z
2011-02-01rL   rl   Er   z
2011-04-01)r   rm   r   r   )r$   r   re   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 )NrG   rE   r+   r   r   )r   StarTBEGInr>   r   r   )er   FINIsH)	rE   rF   rC   Wrw   r>   r   rg   r   c                 S   s2   | j dkr| jtddd S t| | j  jjd S )Nrw   rL   r   )r   nanoseconds)r   r   r   r   _value)r   r'   r'   r(   _ex  s   
z0TestPeriodMethods.test_to_timestamp.<locals>._ex1985r   r   i  rL   rl   3hrH   2mini  startr   5s)r   rm   	to_periodr   end_timer   r   r   )r$   r   start_tsaliasesaend_tsfrom_lstr   fcoder   re   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-05rw   r   r   
1990-01-06rL   r   )r^   r_   r`   r{   r   rm   r   r   r$   rp   r   re   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.000001rL   )z1970-01-01 00:00:00.00001rz   )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   )NrX   rl   c                 C   s"   t |j|dj}||ksJ d S )Nr+   )r   rm   microsecond)r$   ro   re   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-01rC   )
2000-12-15Nr  r>   )2000-12-15 13:45:26.123456789rl   r  rl   )r  rX   2000-12-15 13:45:26.123456rX   )r  Nr  rX   )r  rU   2000-12-15 13:45:26.123rU   )r  Nr  rU   )2000-12-15 13:45:26r   r  r   )r  rH   z2000-12-15 13:45rH   )r  r   z2000-12-15 13:00r   )r  rE   2000r   )r  rF   2000Q4Q-DEC)r  rC   z2000-12rC   )r  r   z2000-12-11/2000-12-17r   )r  r>   r  r>   )r  rw   r  rw   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$   str_tsr   str_res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   rC   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)r7   r8   r9   r   r   r   r!   r:   filterwarningsr  r  r;   r  r#  r$  r&  r'   r'   r'   r(   r   m  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   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  r        rK   rC      )r   r   r   r   rN   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 )NrG   rg   r+   rH   )r   r   r   Minuter   )r$   ra   r'   r'   r(   test_freq_str<  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)MTHMONTHMONTHLYMthrN   monthly)BUSBUSINESS
BUSINESSLYWEEKDAYbus)DAYDLYDAILYr]   DlyDaily)HRHOURHRLYHOURLYhrr   HRly)minuteMINUTEMINUTELYminutely)secSECSECONDSECONDLYsecond)MILLISECONDMILLISECONDLYmillisecond)MICROSECONDMICROSECONDLYr  )
NANOSECONDNANOSECONDLYr   )	rC   rw   r>   r   rH   r   rU   rX   rl   r   z2016-03-01 09:00r+   rL   r   )r
   itemsr!   r"   r#   r   r   )r$   casesr&   r   freqsr   r   r   r'   r'   r(   test_period_deprecated_freqA  s2   z0TestPeriodProperties.test_period_deprecated_freqc              	   C   s&   t | j| j| j| j| j| j| ddS )NrX   )r   rN   rO   r   rH  rP  r   )r   r   rN   rO   r   rH  rP  )boundoffsetr'   r'   r(   _period_constructor_  s   z(TestPeriodProperties._period_constructorzbound, offsetr   rL   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_timek  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+   rL   )unit)r(  r^  rm   roundr`  r   floor)r$   r\  r]  r_  ra  re   r'   r'   r(   $test_inner_bounds_start_and_end_times  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)rE   rF   rC   r>   r   rH   r   ry   rL   2012r+   r   rw   r   r   i  r      )r   r   r   r^   r_   r`   r{   )r$   freq_lstxpfr   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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 )Nrg  rE   r+   c                  W      t t t|  djd S Nrl   rL   r   r   as_unitr   argsr'   r'   r(   r        z/TestPeriodProperties.test_end_time.<locals>._ex  rL   rF   ry   r-  rC   r   r>   r   r   rw   rK   r   15D   r   r   )r   r  r^   r_   r`   r{   )r$   r   r   rj  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  rw   r  rL   r  )r^   r_   r`   r{   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   rm  rn  ro  rq  r'   r'   r(   r     rs  z;TestPeriodProperties.test_anchor_week_end_time.<locals>._exz2013-1-1zW-SATrt  rL      )r   r  )r$   r   r   rj  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 )NrE   rR   )r   r   r   )r$   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  rR   rL   )r   r   r   zQ-JANzQ-JUNrK   )r   r   qyearr   )r$   
qedec_date
qejan_date
qejun_datex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 )NrC   rR   rL   )r   r   rN   r/  rK   r-  ry  r      rS   rz   r   )r   r   r   r   rN   )r$   m_dater  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   rR   rL   r  r   r   rN   rO   4      ry   r      )r   r   r   rN   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   rR   rL   r  r  r  r  ry   r   r  r   WK)
r   r   r   rN   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   rw   rR   rL   r  r   r  ry   r   r  r>   )r^   r_   r`   r{   r   r   r   rN   rO   weekday	dayofyearr  )r$   b_date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   rR   rL   r   )r   r   rN   rO   r   2hr  ry   r   r  )	r   r   r   rN   rO   r  r  r   r  )r$   h_date1h_date2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 )Nrg   rR   rL   r   )r   r   rN   rO   r   rH  r  r>   ry   r   r  )	r   r   rN   rO   r  r  r   rH  r  )r$   t_dater'   r'   r(   test_properties_minutely0  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 )
Nrg   rR   rL   r   )r   r   rN   rO   r   rH  rP  r  ry   r   r  )r   r   r   rN   rO   r  r  r   rH  rP  r  )r$   s_dater'   r'   r(   test_properties_secondlyA  s&   z-TestPeriodProperties.test_properties_secondlyN) r7   r8   r9   __doc__r!   r:   r;   r+  r0  r2  r'  r[  staticmethodr^  r   rH   maxrb  rf  rl  rw  rx  rz  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  rC   z2000-02z2000-03)r   sorted)r$   janfebmarperiodscorrectPeriodsr'   r'   r(   test_sort_periodsZ  s   




z'TestPeriodComparisons.test_sort_periodsN)r7   r8   r9   r  r'   r'   r'   r(   r  Y  s    r  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 writable2014Q1r      r   )r   r!   r"   AttributeErrorrZ   r   )r&   rp   r   r'   r'   r(   test_period_immutablec  s   "r  c                  C   s*   t dd} | jdksJ | jdksJ d S )Nz
0001-01-07r>   rL   r  )r   r   rO   )per1r'   r'   r(   test_small_year_parsingp  s   
r  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)rE   rC   rF   r>   r   rH   r   r   r>   r   r,  r   rw   r   )r   r  r|   r   r^   r_   r`   r{   )rZ  ra  r   r'   r'   r(   test_negone_ordinalsv  s   r  )&r   r   r   r   numpyr   r!   pandas._libs.tslibsr   pandas._libs.tslibs.ccalendarr   r   pandas._libs.tslibs.np_datetimer   pandas._libs.tslibs.parsingr	   pandas._libs.tslibs.periodr
   pandas.compatr   pandasr   r   r   r   r   pandas._testing_testingr^   r{   r   r<   r   r(  r  r  r  r  r'   r'   r'   r(   <module>   s8    $    , -  B
