o
    %jG                     @   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   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%   g/var/www/html/Deteccion_Ine/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   Z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   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?   r1   zETestPeriodDisallowedFreqs.test_invalid_frequency_period_error_messageN)__name__
__module____qualname__r    markparametrizer   r   r   r   r   r'   r,   r0   r2   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_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   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_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   rB   )MinrF   r)   z
2006-12-31)wrF   )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)   r:   z3/11/12z3/12/12b  rE   
   rG   )rX   rY   rZ   bday_msgr   asfreq)r#   r[   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 )NrD   rF   rA   r   quarterr   r=   r)   rE   z9/1/2005Z2005Q1Z2005q1Z05Q1Z05q1Z1Q2005Z1q2005Z1Q05Z1q05Z4Q1984i  Z4q1984r   r   )r#   r[   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)   200701rS   rT   r   I  rL   rF   
2007-01-012007-01-01 00:00:002007-01-01 00:00:00.000)r   r   r   r   np
datetime64r#   r_   r[   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   rl   rm   r:   rD   rF   r   r   rt   rA   r   rE   rG   ro   rp   z
2005-03-013DZ3BrS   r{   r|   rL   rz   r}   r~   r   rK   rM   r   rN   rO   rP   rQ   rR   )r   r   MonthEndYearEndrX   rY   rZ   rq   ZBusinessDayrW   Z
QuarterEndZ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   r9   g?r:   r)   zOrdinal must be an integerr{   z?Only value or ordinal but not both should be given but not bothr   rF   )rT   valuer   z%If value is None, freq cannot be None)rH   z1^Given date string "-2000" not likely a datetime$z-2000r@   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   rV   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 )Nry   2Mr)   rL   rF   )r   rH   r   r}   r:   r@   Z2007r   r   )r#   r_   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:10rC   z2007-01-01 07:10:15sz2007-01-01 07:10:15.123rO   z2007-01-01 07:10:15.123000rR   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1989Z2Yr)   r@   z2Y-DECY-DECr   rF   )r   rT   freqstrr   r   r   )r#   Zresult1Zresult2r%   r%   r&   test_multiples  s   z%TestPeriodConstruction.test_multiplesrH   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)   r:   endhowr   )r   strrg   r#   rH   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)   r:   r   r      )daysrF   )r   rg   r   
isinstancer   r%   r%   r&   test_period_cons_annual  s   
z.TestPeriodConstruction.test_period_cons_annualrI   numrp      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   rr   r   )r#   r   rI   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#   ri   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_ordinalrT   r   r   r#   r   resr%   r%   r&   test_period_from_ordinal  s   z/TestPeriodConstruction.test_period_from_ordinalr   r@   r>   r:   r   c                 C   sT   t d|d}|t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   ri   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)   r>   rE   rF   z;Frequency must be positive, because it represents span: -3Mr   z-3Mz:Frequency must be positive, because it represents span: 0MZ0M)	r   rT   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   rF   r{      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   rT   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
.000000001rF   )z
.000000999  )z
.123456789i  )z
.999999999r   )z
.999999000r   )z.999999001123rF   )z.999999001123456rF   )z.999999001123456789rF   c                 C   s    t || | jj|ksJ d S )N)r   
start_time
nanosecond)r#   rI   r   Z	sec_floatr_   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 ' Z1hr{   )r   r   )r#   r   r   r%   r%   r&   test_period_large_ordinale  s   z0TestPeriodConstruction.test_period_large_ordinalN) r3   r4   r5   r<   r`   re   rk   rs   rx   r   r   r   r   r   r   r    r6   r7   r   r   r   r   ranger   r   r   r   r   r   r   r   r   r%   r%   r%   r&   r8   E   sH    A#H"


	

Gr8   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   rX   Zround_trip_pickle)r#   r   Z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   r>   r)   
2011-01-01r:   r   r   z2011-02)hashr   rd   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   r>   r)   Sr   r   z
2011-02-01rF   rf   Er   z
2011-04-01)r   rg   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 )NrB   r@   r)   r   r   )r   ZStarTZBEGInr:   r   r   )er   ZFINIsH)	r@   rA   r>   Wrm   r:   r   ra   r   c                 S   s2   | j dkr| jtddd S t| | j  jjd S )Nrm   rF   r   )r   nanoseconds)r   r   r   r   _value)r   r%   r%   r&   _ex  s   
z0TestPeriodMethods.test_to_timestamp.<locals>._exZ1985r   r   i  rF   rf   Z3hrC   Z2mini  startr   Z5s)r   rg   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-05rm   r   r   
1990-01-06rF   r   )rX   rY   rZ   rq   r   rg   r   r   r#   ri   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.000001rF   )z1970-01-01 00:00:00.00001rp   )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   )NrR   rf   c                 C   s"   t |j|dj}||ksJ d S )Nr)   )r   rg   microsecond)r#   rh   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   r:   )2000-12-15 13:45:26.123456789rf   r   rf   )r   rR   2000-12-15 13:45:26.123456rR   )r   Nr   rR   )r   rO   2000-12-15 13:45:26.123rO   )r   Nr   rO   )2000-12-15 13:45:26r   r   r   )r   rC   z2000-12-15 13:45rC   )r   r   z2000-12-15 13:00r   )r   r@   2000r   )r   rA   Z2000Q4Q-DEC)r   r>   z2000-12r>   )r   r   z2000-12-11/2000-12-17r   )r   r:   r   r:   )r   rm   r   rm   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)r3   r4   r5   r   r   r   r    r6   filterwarningsr   r   r7   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   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   r{        rE   r>      )r   r   ru   r   rH   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 )NrB   ra   r)   rC   )r   r   r   ZMinuter   )r#   r[   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)ZMTHZMONTHZMONTHLYZMthrH   Zmonthly)ZBUSZBUSINESSZ
BUSINESSLYZWEEKDAYbus)ZDAYZDLYZDAILYrW   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>   rm   r:   r   rC   r   rO   rR   rf   r   z2016-03-01 09:00r)   rF   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 )NrR   )r   rH   rI   r   r   r   r   )r   r   rH   rI   r   r   r   )boundoffsetr%   r%   r&   _period_constructor_  s   z(TestPeriodProperties._period_constructorzbound, offsetr   rF   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)   rF   )unit)r   r   rg   roundr  r   floor)r#   r   r   r  r  r_   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)r@   rA   r>   r:   r   rC   r   ro   rF   2012r)   r   rm   r   r   i  r      )r   r   r   rX   rY   rZ   rq   )r#   Z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 )Nr	  r@   r)   c                  W      t t t|  djd S Nrf   rF   r   r   Zas_unitr   argsr%   r%   r&   r        z/TestPeriodProperties.test_end_time.<locals>._ex  rF   rA   ro   r   r>   r   r:   r   r   rm   rE   r   Z15D   r   r   )r   r   rX   rY   rZ   rq   )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   rm   r   rF   r   )rX   rY   rZ   rq   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  rF      )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@   rL   )r   r   rv   )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   rL   rF   )r   r   ru   zQ-JANzQ-JUNrE   )r   r   Zqyearru   )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>   rL   rF   )r   r   rH   r   rE   r   r  r      rM   rp   r   )r   r   r   ru   rH   )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   rL   rF   r  r   r   rH   rI   4      ro   r      )r   r   ru   rH   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   rL   rF   r  r  r   r!  ro   r   r"  r   ZWK)
r   r   ru   rH   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   rm   rL   rF   r  r   r!  ro   r   r"  r:   )rX   rY   rZ   rq   r   r   ru   rH   rI   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   rL   rF   r   )r   r   rH   rI   r   Z2hr!  ro   r   r"  )	r   r   ru   rH   rI   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 )Nra   rL   rF   r   )r   r   rH   rI   r   r   r!  r:   ro   r   r"  )	r   ru   rH   rI   r(  r)  r   r   r$  )r#   Z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 )
Nra   rL   rF   r   )r   r   rH   rI   r   r   r   r!  ro   r   r"  )r   r   ru   rH   rI   r(  r)  r   r   r   r$  )r#   Zs_dater%   r%   r&   test_properties_secondlyA  s&   z-TestPeriodProperties.test_properties_secondlyN) r3   r4   r5   __doc__r    r6   r7   r   r   r   r   r   staticmethodr   r   rC   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_periodsZ  s   




z'TestPeriodComparisons.test_sort_periodsN)r3   r4   r5   r6  r%   r%   r%   r&   r1  Y  s    r1  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!   AttributeErrorrT   r   )r$   ri   r   r%   r%   r&   test_period_immutablec  s   "r9  c                  C   s*   t dd} | jdksJ | jdksJ d S )Nz
0001-01-07r:   rF   r  )r   r   rI   )Z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)r@   r>   rA   r:   r   rC   r   r   r:   r{   r   r   rm   r   )r   r   rr   r   rX   rY   rZ   rq   )r   r  r   r%   r%   r&   test_negone_ordinalsv  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pandas.compatr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingrX   rq   r   r8   r   r   r1  r9  r:  r;  r%   r%   r%   r&   <module>   s8    $    , -  B
