o
    d                     @   s  d dl mZm Z mZ d dlZd dlZd dlmZmZ	 d dl
mZmZ d dlmZ d dlmZ d dlmZmZ d dlZd dlmZmZmZmZmZ d dlmZ G d	d
 d
ZG dd dZG dd dZ G dd dZ!G dd dZ"G dd dZ#dd Z$dd Z%dd Z&dd Z'dS )    )datedatetime	timedeltaN)iNaTperiod)DAYSMONTHS)OutOfBoundsDatetime)DateParseError)INVALID_FREQ_ERR_MSGIncompatibleFrequency)NaTPeriod	Timedelta	Timestampoffsetsc                   @   sT  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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d.d/ Zejdg d0ejd1g d2ejd3g d4d5d6 Zejd1ed7d8d9 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 datetimematchDfreq)r   to_numpypytestraises
ValueErrorr   )selftdmsg r    k/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/scalar/period/test_period.pytest_from_td64nat_raises%   s   

"z/TestPeriodConstruction.test_from_td64nat_raisesc              	   C   s  t ddd}t d}||ksJ t ddd}t d}t ddd}||ks&J ||ks,J t ddd}t ddd}||ks>J ||ksDJ t d	}t t d	d}t d
}||ks\J ||ksbJ t d}t t dd}t t }||ks|J ||ksJ t ddd}t ddd}||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    n	1 s8w   Y  tjtd%d t dd&d W d    d S 1 sWw   Y  d S )'N1/1/2005Mr   zJan 20052005AamQqr   1982minMIN        yearmonthdayr   z3/1/2005d2007-01-01 09:00:00.001  	   r     L2007-01-01 09:00:00.00101  Uz"Must supply freq for ordinal valuer    )ordinalzInvalid frequency: Xz2007-1-1Xzpass as a string instead)Minr0   )	r   nowr   r   Dayr   r   r   	TypeError)r   i1i2i3i4i5expectedr   r    r    r!   test_construction0   sf   


$z(TestPeriodConstruction.test_constructionc                 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_nanosv   s   z=TestPeriodConstruction.test_construction_from_timestamp_nanosc                 C   s   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s3J t ddd}||ks?J t dd	d
dd}t ddd}||ksSJ d S )N3/10/12Br   r   z3/11/12z3/12/12b  r/   
   r1   )r   asfreq)r   rE   rF   rG   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 )Nr.   r0   r)   r2   quarterr   r#   r   r/   z9/1/20052005Q12005q105Q105q11Q20051q20051Q051q054Q1984i  4q1984r   r2   )r   rE   rF   rG   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   200701r>   r?   r   I  r7   r0   
2007-01-012007-01-01 00:00:002007-01-01 00:00:00.000)r   r2   r   r   np
datetime64r   rJ   rE   rF   rG   rH   rI   r    r    r!   test_construction_month   s*   z.TestPeriodConstruction.test_construction_monthc              	   C   sh  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 dt dt dddks@J t dt dt dddksPJ t d	d
tjdddt d	d
ddksdJ t d	dtjdddt d	dddksxJ t d	dd
t dt d	dd
ddksJ t dddt dt dddddksJ t ddd}t d	dd
tdd|ksJ t d	dd
dd|ksJ t dddtddt dddddksJ t dt dt dddksJ t dt d}t ddd}||ksJ |jdksJ |jdks
J t t	dd
d
dd}t ddd}||ks!J 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sQJ ||ksXJ ||ks_J ||ksfJ t d}t t	dd
d
d d!d!d"d#d}||ksJ 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&   rV   rW   r   r.   r0      )startingMonthr]   r)      r/   r1   rY   rZ   z
2005-03-013D3Br>   rn   ro   r7   rm   rp   rq   rr   r6   r8   r   r9   r:   r;   r<   r=   )r   r   MonthEndYearEndBusinessDayrC   
QuarterEndBDayr2   r   r   rs   rt   ru   r    r    r!   test_period_constructor_offsets   sv       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   r   g?r   r   zOrdinal must be an integerrn   z?Only value or ordinal but not both should be given but not bothry   r0   )r?   valuer   z%If value is None, freq cannot be None)r3   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   rB   r   r
   r   r   r    r    r!   test_invalid_arguments  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 )Nrl   2Mr   r7   r0   )r2   r3   r   rp   r   r&   2007r   r   )r   rJ   presultexpr    r    r!   test_constructor_corner9  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 )Nrp   r   z2007-01-01 07Hz2007-01-01 07:10Tz2007-01-01 07:10:15Sz2007-01-01 07:10:15.123r:   z2007-01-01 07:10:15.123000r=   z2007-01-01 07:10:15.123400)r   r   r   r   r    r    r!   test_constructor_infer_freqE  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2Ar   r&   z2A-DECzA-DECry   r0   )r   r?   freqstrr   r   r}   )r   result1result2r    r    r!   test_multiples]  s   z%TestPeriodConstruction.test_multiplesr3   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howrz   )r   strrM   r   r3   r   r   stampr   r    r    r!   test_period_cons_quarterlyk  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A-r   r   r   r   r      )daysr0   )r   rM   r   
isinstancer   r    r    r!   test_period_cons_annualy  s   
z.TestPeriodConstruction.test_period_cons_annualr4   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   r4   daystrr   r   rJ   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dd}||ksJ t|t sJ d S N2011-01r$   r   )r   _from_ordinalr?   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   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   rz   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$   r/   r0   z;Frequency must be positive, because it represents span: -3Mr   z-3Mz:Frequency must be positive, because it represents span: 0M0M)	r   r?   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   r0   rn      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   r?   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
.000000001r0   )z
.000000999  )z
.123456789i  )z
.999999999r   )z
.999999000r   )z.999999001123r0   )z.999999001123456r0   )z.999999001123456789r0   c                 C   s    t || | jj|ksJ d S N)r   
start_time
nanosecond)r   r4   r   	sec_floatrJ   r    r    r!   "test_period_constructor_nanosecond%  s    z9TestPeriodConstruction.test_period_constructor_nanosecond   c                 C   s"   t d| dd}|j|ksJ d S )Ni ' 1Hrn   )r   r   )r   r   r   r    r    r!   test_period_large_ordinal:  s   z0TestPeriodConstruction.test_period_large_ordinalN)__name__
__module____qualname__r"   rK   rU   r\   rk   rv   r   r   r   r   r   r   markparametrizer   r   r   r   ranger   r   r   r   r   r   r   r   r   r    r    r    r!   r   $   sF    F#E


	

Gr   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dg dej	
dg ddd Zdd Zdd Z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   tmround_trip_pickle)r   r   new_pr    r    r!   test_round_tripC  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   2011-02)hashr   )r   r    r    r!   	test_hashH  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   r   r   r   z
2011-02-01r0   rL   Er   
2011-04-01r   rM   r   r   )r   r   rJ   r    r    r!   test_to_timestamp_multT  s   z(TestPeriodMethods.test_to_timestamp_multc                 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 )Nr+   r&   r   r   r   )sStarTBEGInr   rz   r   )er   FINIsH)	r&   r)   r$   WrW   r   r   rA   r   c                 S   s2   | j dkr| jtddd S t| | j  jjd S )NrW   r0   r   )r   nanoseconds)r   r   r   r   _value)r   r    r    r!   _exp  s   
z0TestPeriodMethods.test_to_timestamp.<locals>._ex1985r   r   i  r0   rL   3Hr   2Ti  start5S)r   rM   	to_periodr   end_timer   r   r   )r   r   start_tsaliasesr'   end_tsfrom_lstr   fcoder   rJ   r    r    r!   test_to_timestamp_  sX   z#TestPeriodMethods.test_to_timestampc                 C   s:   t dd}|jddd}tdtdd }||ksJ d S )N
1990-01-05rW   r   r   
1990-01-06r0   r   r   r   rP   r   rJ   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.000001r0   )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   )NusrL   c                 C   s"   t |j|dj}||ksJ d S )Nr   )r   rM   microsecond)r   rO   rJ   r   r   r    r    r!   test_to_timestamp_microsecond  s   z/TestPeriodMethods.test_to_timestamp_microsecondc                 C   s4   t d}dt|v sJ t d}dt|v sJ d S )NzJan-20002000-01z
2000-12-15r   reprr   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      t d}t|dksJ d S )Nz2000-01-01 12:15:02.123z&Period('2000-01-01 12:15:02.123', 'L')r  r   r    r    r!   test_millisecond_repr     z'TestPeriodMethods.test_millisecond_reprc                 C   r  )Nz2000-01-01 12:15:02.123567z)Period('2000-01-01 12:15:02.123567', 'U')r  r   r    r    r!   test_microsecond_repr  r
  z'TestPeriodMethods.test_microsecond_reprc                 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)r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r  r  r    r    r    r!   r   B  s"    ?r   c                   @   s&  e Zd ZdZejdg ddd Zdd Zdd	 Z	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.d/ Zd0d1 Zd2S )3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   Q-DECrn        r/   r$      )r   r2   r^   r   r3   r   r    r    r!    test_quarterly_negative_ordinals  s   z5TestPeriodProperties.test_quarterly_negative_ordinalsc                 C   s0   t ddd}|jt ksJ |jdksJ d S )Nr+   rA   r   r   )r   r   r   Minuter   )r   rE   r    r    r!   test_freq_str  s   z"TestPeriodProperties.test_freq_strc              
   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Mthr3   monthly)BUSBUSINESS
BUSINESSLYWEEKDAYbus)DAYDLYDAILYrC   DlyDaily)HRHOURHRLYHOURLYhrr   HRly)minuteMINUTEMINUTELYminutely)secSECSECONDSECONDLYsecond)MILLISECONDMILLISECONDLYmillisecond)MICROSECONDMICROSECONDLYr  )
NANOSECONDNANOSECONDLYr   )	r$   rW   r   r   r   r   r:   r=   Nr   z2016-03-01 09:00r   r0   rn   )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 )Nr   )r2   r3   r4   r   r/  r7  r   )r   r2   r3   r4   r   r/  r7  )boundoffsetr    r    r!   _period_constructor  s   z(TestPeriodProperties._period_constructorzbound, offsetr   r0   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  rF  r   r   r	   getattr)r   rD  rE  rG  r   r    r    r!   $test_outer_bounds_start_and_end_time(  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   r0   )unit)r  rF  rM   roundrH  r   floor)r   rD  rE  rG  r   rJ   r    r    r!   $test_inner_bounds_start_and_end_time0  s
   z9TestPeriodProperties.test_inner_bounds_start_and_end_timec                 C   sx   g d}t ddd}|D ]}td|d}|j|ksJ qtdddjt dddks+J tdddjt d	d
dks:J d S )N)r&   r)   r$   r   r   r   r   rY   r0   2012r   rW   ry   r   i  rw      )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 ddd}|d	dd}||jkswJ 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 )NrN  r&   r   c                  W      t t t|  djd S NrL   r0   r   r   as_unitr   argsr    r    r!   r   F     z/TestPeriodProperties.test_end_time.<locals>._ex  r0   r)   rY   r  r$   ry   r   r   rW   r/   r   15D   r   r   r   r   )r   r   r   rQ  r    r    r!   test_end_timeC  s>   z"TestPeriodProperties.test_end_timec                 C   s2   t dd}|j}tdtdd }||ksJ d S )Nr   rW   r   r0   r   )r   r   r   r   r   r    r    r!   test_end_time_business_fridayq  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   rT  rU  rV  rX  r    r    r!   r   z  rZ  z;TestPeriodProperties.test_anchor_week_end_time.<locals>._exz2013-1-1zW-SATr[  r0      r^  )r   r   r   rQ  r    r    r!   test_anchor_week_end_timey  s   
z.TestPeriodProperties.test_anchor_week_end_timec                 C   s   t ddd}|jdksJ d S )Nr&   r7   )r   r2   ri   )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  r7   r0   )r   r2   r^   zQ-JANzQ-JUNr/   )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 )Nr$   r7   r0   )r   r2   r3   r  r/   r  ra  ry      r8   rZ   rw   )r   r   r2   r^   r3   )r   m_dateri  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   r7   r0   rl  r   r2   r3   r4   4      rY   ry      )r   r2   r^   r3   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   r7   r0   rl  rp  rq  rr  rY   ry   rs  r   WK)
r   r2   r^   r3   rt  ru  r   r   r   r   )r   rv  r   r   r    r    r!   test_properties_weekly_legacy  s   "z2TestPeriodProperties.test_properties_weekly_legacyc                 C   s  t ddddd}|jdksJ |jdksJ |jdksJ |jdks$J |jdks+J |jdks2J |jdks9J t dddddjd	ksFJ t d
dddd}|jdksUJ |jdks\J |jdkscJ |jdksjJ |jdksqJ |jdksxJ |jdksJ t d
ddddjd	ksJ d S )NrW   r7   r0   rp  r   rr  rY   ry   rs  r   )r   r2   r^   r3   r4   weekday	dayofyearru  )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   r7   r0   r   )r   r2   r3   r4   r   2Hrr  rY   ry   rs  )	r   r2   r^   r3   r4   rz  r{  r   ru  )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 )NrA   r7   r0   r   )r   r2   r3   r4   r   r/  rr  r   rY   ry   rs  )	r   r^   r3   r4   rz  r{  r   r/  ru  )r   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 )
NrA   r7   r0   r   )r   r2   r3   r4   r   r/  r7  rr  rY   ry   rs  )r   r2   r^   r3   r4   rz  r{  r   r/  r7  ru  )r   s_dater    r    r!   test_properties_secondly  s(   
z-TestPeriodProperties.test_properties_secondlyN)r   r   r   __doc__r   r   r   r  r  r  rC  staticmethodrF  r   r,   maxrI  rM  rS  r_  r`  rb  rd  rk  ro  rw  ry  r~  r  r  r  r    r    r    r!   r    s8    

	.r  c                   @   s   e Zd Zdd ZdS )TestPeriodFieldc                 C   sL   d}t jt|d tdtdd W d    d S 1 sw   Y  d S )Nz@Buffer dtype mismatch, expected 'const int64_t' but got 'double'r   r   r0   r   )r   r   r   	libperiodget_period_field_arrrs   emptyr   r    r    r!   2test_get_period_field_array_raises_on_out_of_range  s   "zBTestPeriodField.test_get_period_field_array_raises_on_out_of_rangeN)r   r   r   r  r    r    r    r!   r    s    r  c                	   @   sp   e Z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feedddffdd ZdS )TestPeriodComparisonsc                 C   sT   t dd}t dd}||ksJ ||ksJ ||ksJ ||k r"J ||kr(J d S Nr  r$   r   )r   leftrightr    r    r!   ,test_comparison_same_period_different_object  s   

zBTestPeriodComparisons.test_comparison_same_period_different_objectc                 C   s`   t dd}t dd}||krJ ||ksJ ||k sJ ||ks"J ||kr(J ||kr.J d S )Nr  r$   2000-02r  )r   janfebr    r    r!   test_comparison_same_freq$  s   

z/TestPeriodComparisons.test_comparison_same_freqc                 C   s  t dd}t dd}||krJ ||ksJ d}tjt|d ||k  W d    n1 s.w   Y  tjt|d ||k W d    n1 sIw   Y  tjt|d ||k W d    n1 sdw   Y  tjt|d ||k W d    d S 1 sw   Y  d S )Nr  r$   z
2012-01-01r   z0Input has different freq=D from Period\(freq=M\)r   )r   r   r   r   )r   r  r4   r   r    r    r!   test_comparison_mismatched_freq/  s"   





"z5TestPeriodComparisons.test_comparison_mismatched_freqc              	   C   s,  t dd}|dkrJ |dksJ d}d| d| }|dfd|ffD ]p\}}tjt|d ||k W d    n1 s=w   Y  tjt|d ||k W d    n1 sXw   Y  tjt|d ||k  W d    n1 ssw   Y  tjt|d ||k W d    n1 sw   Y  q#d S )Nr  r$   r0   z'(Period|int)'z#not supported between instances of z and r   )r   r   r   rD   )r   r  
int_or_perr   r  r  r    r    r!   test_comparison_invalid_type?  s(   




z2TestPeriodComparisons.test_comparison_invalid_typec                 C   sF   t dd}t dd}t dd}|||g}|||g}t||ks!J d S )Nr  r$   r  z2000-03)r   sorted)r   r  r  marperiodscorrectPeriodsr    r    r!   test_sort_periodsQ  s   




z'TestPeriodComparisons.test_sort_periodsc                 C   s   t ddd}td}t|f|tft|f|tffD ](\}}||k r"J ||kr(J ||kr.J ||ks4J ||kr:J ||kr@J qd S )Nr   r   r   )r   r   r   )r   r   tr  r  r    r    r!   test_period_cmp_natY  s   z)TestPeriodComparisons.test_period_cmp_natzzerodim_arr, expectedr   Fr  r$   Tc                 C   s.   t dd}||k|u sJ ||k|u sJ d S r  r  )r   zerodim_arrrJ   r   r    r    r!   !test_comparison_numpy_zerodim_arrk  s   
z7TestPeriodComparisons.test_comparison_numpy_zerodim_arrN)r   r   r   r  r  r  r  r  r  r   r   r   rs   arrayr   r  r    r    r    r!   r    s     r  c                
   @   s>  e Zd Zejdg ddd Zdd Zdd Zd	d
 Z	dd Z
dd dd dd gZg dZejjdeedejjdeeddd Zdd Zejdg ddd Zejdddgejdg dejd ejd!fejd"fejd#fejd$fgd%d& Zd'd( Zd)d* Zejd+g d,d-d. Zd/d0 Zd#S )1TestArithmeticrJ  )rL   r   msr   r(   c                 C   s   t dd}td|}|| tu sJ || tu sJ || tu s#J tjtdd ||  W d    d S 1 s:w   Y  d S )Nz
2022-06-01r   r   unsupported operandr   )r   rs   timedelta64r   r   r   rD   )r   rJ  rP   r   r    r    r!   test_add_sub_td64_natw  s   

"z$TestArithmetic.test_add_sub_td64_natc                 C   s|   t dddt ddd}}|| }|d|j ksJ d}tjt|d |t dd	d  W d    d S 1 s7w   Y  d S )
N2011r&   r   r   r  z4Input has different freq=M from Period\(freq=A-DEC\)r   rl   r$   r   r   r   r   r   )r   r  r  r   r   r    r    r!   test_sub_delta  s   "zTestArithmetic.test_sub_deltac                 C   sD   t ddddd}t ddddd}|d |ksJ d| |ks J d S )Nr     r0   rp  ry   r  )r   per1rS   r    r    r!   test_add_integer  s   zTestArithmetic.test_add_integerc                 C   sP   t ddd}|t tu sJ t| tu sJ |t tu sJ t| tu s&J d S r   r   r   r    r    r!   test_add_sub_nat  s
   zTestArithmetic.test_add_sub_natc                 C   s   t ddddd}t ddddd}dg d}tjt|d |d	  W d    n1 s-w   Y  tjt|d d	|  W d    n1 sHw   Y  tjt|d ||  W d    d S 1 sdw   Y  d S )
Nr   r  r0   rp  ry   |)zunsupported operand type\(s\)zcan only concatenate strzmust be str, not Periodr   r   )r   joinr   r   rD   )r   r  rS   r   r    r    r!   test_add_invalid  s   


"zTestArithmetic.test_add_invalidc                 C   s   | S r   r    ri  r    r    r!   <lambda>  s    zTestArithmetic.<lambda>c                 C      t | gS r   )pdSeriesr  r    r    r!   r        c                 C   r  r   )r  Indexr  r    r    r!   r    r  )identityr  r  lbox)idsrboxc                 C   s   t d}tddd}dg d}tjt|d ||||  W d    n1 s+w   Y  tjt|d ||||  W d    n1 sJw   Y  tjt|d ||||  W d    d S 1 sjw   Y  d S )N2017r$   r   r  )z
cannot addr  zcan only operate on azincompatible typezufunc add cannot use operandsr   )r   r   r  r   r   rD   )r   r  r  rO   rP   r   r    r    r!   test_add_timestamp_raises  s   	"z(TestArithmetic.test_add_timestamp_raisesc                 C   s   t ddd}t ddd}|j}|| d| ksJ || d| ks#J d}tjt|d |t d	d
d  W d    d S 1 s@w   Y  d S )Nr   r   r   z
2011-01-15i   z0Input has different freq=M from Period\(freq=D\)r   r   r$   r  )r   r  rS   offr   r    r    r!   test_sub  s   "zTestArithmetic.test_subn)r0   ry   r/   r  c                 C   s\   t d||d}t d||d}t t||jjdt t||jjd }|| |ks,J d S )N19910905r   19920406)r   r   r   base)r   tick_classesr  r   r   rJ   r    r    r!   test_sub_n_gt_1_ticks  s   z$TestArithmetic.test_sub_n_gt_1_ticks	normalizeTFzoffset, kwd_namer3   rx   Nrz  c                 C   s   |d ur|dini }d}d}t ||||fi |d}t ||||fi |d}	t ||	jjdt ||jjd }
|	| |
ks@J d S )Nr/   r  r  r   )r   r   r  )r   rE  kwd_namer  r  kwdsp1_dp2_dr   r   rJ   r    r    r!   test_sub_n_gt_1_offsets  s    z&TestArithmetic.test_sub_n_gt_1_offsetsc              
   C   s  dD ]t}t d|d}t d|d}|td |ksJ td| |ks&J tdtdt tddtdfD ]:}d	}t	j
t|d
 ||  W d    n1 sUw   Y  t	j
t|d
 ||  W d    n1 spw   Y  q;qdD ]}t d|d}t d|d}|td |ksJ td| |ksJ t d|d}|td |ksJ td| |ksJ dddg}tdtdt tddtdfD ]9}t	j
t|d
 ||  W d    n1 sw   Y  t	j
t|d
 ||  W d    n	1 s	w   Y  qqydD ]}t d|d}t d|d}|td |ks-J td| |ks9J t d|d}|td |ksKJ td| |ksWJ t d|d}|tdd |ksjJ tdd| |kswJ t d|d}|tdd |ksJ tdd| |ksJ t d|d}|td |ksJ td| |ksJ t d|d}|tdd |ksJ tdd| |ksJ dddg}tdtdt td d!td"dfD ];}t	j
t|d
 ||  W d    n	1 sw   Y  t	j
t|d
 ||  W d    n	1 s#w   Y  qqd#D ]}t d$|d}t d%|d}|td |ksIJ td| |ksUJ t d&|d}|td' |ksgJ td'| |kssJ d(}t d&|d}|td'd! |ksJ td'd!| |ksJ t d)|d}|td*d |ksJ td*d| |ksJ t d+|d}|td,d- |ksJ td,d-| |ksJ t d.|d}|td d/d0 |ksJ td d/d0| |ksJ dddg}tdtdt td1dtd"d2d3fD ];}t	j
t|d
 ||  W d    n	1 s*w   Y  t	j
t|d
 ||  W d    n	1 sFw   Y  qq.d S )4Nr&   r   3Ar  r   2013ry   r0   m  r   z<Input has different freq|Input cannot be converted to Periodr   r$   r   r   2011-03z2011-05z2012-03rw   r  Input has different freq#Input cannot be converted to Periodr   2Drz   r   z
2011-04-06   
2011-04-02r   
2011-04-03Q r   
2011-03-30r  0   hoursr  h   r   r  r   2011-04-01 09:00z2011-04-03 09:00z2011-04-01 12:00r/   zcannot use operands with typesz2011-04-01 10:00  z2011-04-01 11:00x   minutesz2011-04-05 12:00   r   r    r   r  r  )r   r   r}   	YearBegin
MonthBeginr  rs   r  r   r   r   r   r|   r  rC   r   )r   r   r   r   or   r    r    r!   test_add_offset  s   














zTestArithmetic.test_add_offsetc              
   C   s  d ddg}dD ]J}td|d}|td td|dks J tdtd	t td
dt	d
fD ]}t
jt|d ||  W d    n1 sMw   Y  q5q	dD ]Y}td|d}|td td|dksmJ |td td|dks|J tdtd	t td
dt	d
fD ]}t
jt|d ||  W d    n1 sw   Y  qqVdD ]}td|d}|td td|dksJ |td td|dksJ |tdd td|dksJ |tdd td|dksJ |t	d td|dksJ |t	dd td|dksJ tdtd	t tdd t	d!dfD ]}t
jt|d ||  W d    n	1 sFw   Y  q-qd"D ]}td#|d}|td td$|dkshJ |td% td&|dksxJ |td%d  td&|dksJ |td'd td(|dksJ |t	d)d* td+|dksJ |t	dd,d- td.|dksJ tdtd	t td/dt	d!d0d1fD ]}t
jt|d ||  W d    n	1 sw   Y  qҐqPd S )2Nr  r  r  r  r  r   ry   2009r0   r  r   r   r  r  r   rw   z2010-03r  r   r  z
2011-03-27r   z
2011-03-31r  r  r   r  r  r  r  r  r  r  r  r  z2011-03-30 09:00r/   z2011-04-01 06:00r  z2011-04-01 08:00r  r  z2011-04-01 07:00r  r  z2011-03-28 06:00r  r   r  )r  r   r   r}   r  r  r  rs   r  r   r   r   r   r|   rC   r   )r   r   r   r   r  r    r    r!   test_sub_offset  s   




   


  " 


zTestArithmetic.test_sub_offsetr   r  c                 C   sP   t d|d}t| tu sJ |t tu sJ t| tu sJ |t tu s&J d S )Nr   r   r   r   r    r    r!   test_period_addsub_nat  s
   z%TestArithmetic.test_period_addsub_natc                 C   s   t ddd}|t  }t ddd}||ksJ |td }t ddd}||ks+J d}tjt|d |td  W d    n1 sFw   Y  tjt|d |td  W d    d S 1 sew   Y  d S )	Nr   r   r   r  ry   r  z-Input cannot be converted to Period\(freq=D\)r   )r   r   rC   r   r   r   r   )r   r   r   r   r   r    r    r!   test_period_ops_offset  s   "z%TestArithmetic.test_period_ops_offset)r   r   r   r   r   r   r  r  r  r  r  boxesr  r  r  r  r   r}   r   r|   Weekr  r  r  r  r  r    r    r    r!   r  v  s@    
	
	 Q
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  ry   )r   r   r   AttributeErrorr?   r   )r   rP   r   r    r    r!   test_period_immutable  s   "r  c                  C   s*   t dd} | jdksJ | jdksJ d S )Nz
0001-01-07r   r0   rl  )r   r2   r4   )r  r    r    r!   test_small_year_parsing  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 ddd}t| t ddd}t| d S )N)r&   r$   r)   r   r   r   r   r   r   rn   r  rW   r   )r   r  r[   r2   )rB  r   r   r    r    r!   test_negone_ordinals  s   r  c                  C   sD   d} t jt| d tddd W d    d S 1 sw   Y  d S )Nz3Invalid frequency: <WeekOfMonth: week=0, weekday=0>r   z
2012-01-02zWOM-1MONr   )r   r   r   r   )r   r    r    r!   $test_invalid_frequency_error_message  s   "r  )(r   r   r   numpyrs   r   pandas._libs.tslibsr   r   r  pandas._libs.tslibs.ccalendarr   r   pandas._libs.tslibs.np_datetimer	   pandas._libs.tslibs.parsingr
   pandas._libs.tslibs.periodr   r   pandasr  r   r   r   r   r   pandas._testing_testingr   r   r   r  r  r  r  r  r  r  r  r    r    r    r!   <module>   s>        "   :^   