a
    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 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#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offsetsz#Period with BDay freq is deprecatedc                   @   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   d}t jt|d tddd W d    n1 s40    Y  t jt|d  tdt d W d    n1 sr0    Y  d S )Nz;CustomBusinessDay cannot be used with Period or PeriodDtypematchz
2023-04-10Cfreq)pytestraises	TypeErrorr   r   ZCustomBusinessDayselfmsg r   o/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/scalar/period/test_period.py$test_custom_business_day_freq_raises'   s
    *z;TestPeriodConstruction.test_custom_business_day_freq_raisesc                 C   s   t d}d}tjt|d t| W d    n1 s:0    Y  tjt|d t|dd W d    n1 st0    Y  d S )Nzm8[ns]2Value must be Period, string, integer, or datetimer   Dr   )r   Zto_numpyr   r   
ValueErrorr   )r   tdr   r   r   r   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sLJ ||ksXJ t ddd}t ddd}||ks|J ||ksJ t jd	d}t t d	d}t d
}||ksJ ||ksJ t jdd}t t dd}t t }||ksJ ||ks
J t ddd}t ddd}||ks0J t ddddd}t ddd}||ksZJ t ddddd}||ksxJ t d}t tddddddddd}||ksJ t ddd}||ksJ t d}t tddddddddd}||ksJ t ddd}||ksJ d}tjt|d t d d! W d    n1 sD0    Y  d"}tjt|d t d#d$d W d    n1 s0    Y  tjtd%d t dd&d W d    n1 s0    Y  d S )'N1/1/2005Mr   zJan 20052005AamQqr"   1982minZ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)Minr2   )	r   nowr   r   Dayr   r   r#   r   )r   i1i2i3i4i5expectedr   r   r   r   test_construction:   s`    
*,z(TestPeriodConstruction.test_constructionc                 C   sT   t d}t|dd}| }||ks(J |j}t|dd}| }|j|ksPJ d S )Nz2022-04-20 09:23:24.123456789nsr   )r   r   to_timestampZasm8)r   tsperrtZdt64per2Zrt2r   r   r   &test_construction_from_timestamp_nanos   s    z=TestPeriodConstruction.test_construction_from_timestamp_nanosc                 C   s   t jttd tddd}tddd}||dks:J tddd}||dksXJ tddd}||dksvJ tddd}||ksJ td	d
ddd}tddd}||ksJ W d    n1 s0    Y  d S )Nr   3/10/12Br   r"   z3/11/12z3/12/12b  r1   
   r3   )tmassert_produces_warningFutureWarningbday_msgr   asfreq)r   rF   rG   rH   r   r   r   test_construction_bday   s    z-TestPeriodConstruction.test_construction_bdayc                 C   s,  t dddd}t ddd}||ks&J t dddd}t ddd}||ksLJ t d	}t dddd}t d
}||ksvJ ||ksJ t d}||ksJ t d}||ksJ t d}||ksJ t d}||ksJ t d}||ksJ t d}||ksJ t d}|jdksJ t d}||ks(J d S )Nr0   r2   r,   r4   quarterr   r&   r   r1   z9/1/2005Z2005Q1Z2005q1Z05Q1Z05q1Z1Q2005Z1q2005Z1Q05Z1q05Z4Q1984i  Z4q1984r   r4   )r   rF   rG   rH   lowerr   r   r   test_construction_quarter   s6    z0TestPeriodConstruction.test_construction_quarterc                 C   s&  t ddd}t ddd}||ks$J t ddd}||ks<J t ddd}||ksTJ t ddd}|jdksnJ t tdd	d	dd}t ddd}||ksJ t tdd	d	dd}t tdd	d	dd}t td
dd}t ddd}t ddd}||ksJ ||ksJ ||ksJ ||ks"J d S )N2007-01r'   r   200701r@   rA   r   I  r9   r2   
2007-01-012007-01-01 00:00:002007-01-01 00:00:00.000)r   r4   r   r   np
datetime64r   rK   rF   rG   rH   rI   rJ   r   r   r   test_construction_month   s*    z.TestPeriodConstruction.test_construction_monthc              	   C   s  t dt dt dddks J t dt dt dddks@J t dt dt dddks`J tjttd0 t dt dt dddksJ W d    n1 s0    Y  t dt	 dt dd	dksJ t d
dtj
dddt d
dddksJ t d
dtj
dddt d
dddks J t d
ddt	 dt d
ddd	dksJJ tjttd: t dddt dt dddddksJ W d    n1 s0    Y  t ddd}t d
ddt	dd|ksJ t d
dddd|ksJ tjttd< t dddtddt dddddks&J W d    n1 s<0    Y  t dt dt dddkshJ t dt d}t ddd}||ksJ |jdksJ |jdksJ t tddddd}t ddd}||ksJ t tddddd}t tddddd}t tddd}t ddd}t ddd}||ks@J ||ksNJ ||ks\J ||ksjJ t d }t tdddd!d"d"d#d$d}||ksJ t d d$d}||ksJ t d%}t tdddd!d"d"d&d'd}||ksJ t d%d'd}||ksJ d S )(Nr&   r   r'   r(   r)   r   rT   rU   r"   r0   r2      )startingMonthr_   r,      r1   r3   rW   rX   z
2005-03-013DZ3Br@   rf   rg   r9   re   rh   ri   rj   r8   r:   r   r;   r<   r=   r>   r?   )r   r   MonthEndYearEndrY   rZ   r[   r\   ZBusinessDayrE   
QuarterEndZBDayr4   r   r   rk   rl   rm   r   r   r   test_period_constructor_offsets   s|      * 
. ."z6TestPeriodConstruction.test_period_constructor_offsetsc                 C   s6  d}t jt|d tt  W d    n1 s40    Y  t jt|d  tt   W d    n1 sr0    Y  d}t jt|d tddd W d    n1 s0    Y  d}t jt|d tddd W d    n1 s0    Y  d	}t jt|d td
ddd W d    n1 s00    Y  d}t jt|d tdd W d    n1 sn0    Y  d}t jt|d tdd W d    n1 s0    Y  d}t jt|d tdd W d    n1 s0    Y  d}t jt|d tdd W d    n1 s(0    Y  d S )Nz#Must supply freq for datetime valuer   r!   g?r"   r   zOrdinal must be an integerrf   z?Only value or ordinal but not both should be given but not bothrq   r2   )rA   valuer   z%If value is None, freq cannot be None)r5   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   rD   r   r
   r   r   r   r   test_invalid_arguments*  s4    *.**.***z-TestPeriodConstruction.test_invalid_argumentsc                 C   sf   t ddd}t dddd|ks"J t d tu s2J t ddd}t |d	d}t d
d	d}||ksbJ d S )Nrd   2Mr   r9   r2   )r4   r5   r   rh   r"   r)   2007r   r   )r   rK   presultexpr   r   r   test_constructor_cornerI  s    z.TestPeriodConstruction.test_constructor_cornerc                 C   s   t d}|jdksJ t d}|jdks,J t d}|jdksBJ t d}|jdksXJ t d	}|jd
ksnJ t d}|jdksJ t d}|jdksJ d S )Nrh   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_freqU  s    z2TestPeriodConstruction.test_constructor_infer_freqc                 C   s   t ddd}t ddd}|j|jks(J |jdks6J |jdksDJ |jtdksXJ |jt ksjJ |d j|jd ksJ d| j|jd ksJ |d j|jd ksJ d	| j|jd ksJ d S )
N19892Ar   r)   z2A-DECA-DECrq   r2   )r   rA   freqstrr   r   rt   )r   Zresult1Zresult2r   r   r   test_multiplesm  s    z%TestPeriodConstruction.test_multiplesr5   c                 C   sv   d| }t d|d}dt|v s&J |jddd}t ||d}||ksLJ |jddd}t ||d}||ksrJ d S )NzQ-Z1989Q3r   r"   endhowrr   )r   strrN   r   r5   r   r   Zstampr}   r   r   r   test_period_cons_quarterly{  s    
z1TestPeriodConstruction.test_period_cons_quarterlyc                 C   s\   d| }t d|d}|jdddtdd }t ||d}||d	 ksJJ t|t sXJ d S )
NzA-r   r   r"   r   r      )daysr2   )r   rN   r   
isinstancer   r   r   r   test_period_cons_annual  s    
z.TestPeriodConstruction.test_period_cons_annualr6   numrX      c                 C   sP   d| }d| }t ||d}t |dd|}||ks>J t|t sLJ d S )Nz2011-02-zW-r   r"   )r   r]   r   )r   r   r6   Zdaystrr   r~   rK   r   r   r   test_period_cons_weekly  s    

z.TestPeriodConstruction.test_period_cons_weeklyc                 C   sn   t d}|jjdksJ t d}|jjdks0J d}tjt|d t d W d    n1 s`0    Y  d S )Nz2017-01-23/2017-01-29W-SUNz2017-01-24/2017-01-30zW-MONz%Could not parse as weekly-freq Periodr   z2016-01-23/2017-01-29)r   r   r   r   r   r#   )r   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 s6J d S N2011-01r'   r   )r   Z_from_ordinalrA   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 s4J t dd| d}|tu sPJ 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 s0J t tdd}|tu sHJ t tdd}|tu s`J t d}|tu stJ t t}|tu sJ d S )Nnatr   r   r"   rr   1D1Hr   )r   r   r   r   r   r   r   test_period_cons_nat  s    z+TestPeriodConstruction.test_period_cons_natc                 C   sb  t ddd}t ddd}|j|jks(J |jtdks<J |jdksJJ |jt ks\J |jdksjJ |d }|j|d jksJ |j|jksJ |jdksJ |d }|j|d jksJ |j|jksJ |jdksJ d}tjt|d t dd	d W d    n1 s0    Y  d
}tjt|d t ddd W d    n1 sT0    Y  d S )Nr   3Mr   r'   r1   r2   z;Frequency must be positive, because it represents span: -3Mr   z-3Mz:Frequency must be positive, because it represents span: 0MZ0M)	r   rA   r   r   rs   r   r   r   r#   )r   p1p2r~   r   r   r   r   test_period_cons_mult  s*    ,z,TestPeriodConstruction.test_period_cons_multc                 C   s  t dddt dddt dddft dddt dddt dddfg}|D ]\}}}|j|jksdJ |j|jkstJ |jtdksJ |jd	ksJ |jtdksJ |jd	ksJ |jt ksJ |jdksJ |d }|j|d jksJ |j|jksJ |jd	ksJ |d }|j|d jks4J |j|jksFJ |jd	ksVJ |d }|j|d jkstJ |j|jksJ |jd	ksJ |d }|j|d jksJ |j|jksJ |jd	ksHJ qHd
}tjt|d t ddd W d    n1 s0    Y  tjt|d t ddd W d    n1 sH0    Y  tjt|d t ddd W d    n1 s0    Y  tjt|d t ddd W d    n1 s0    Y  d}tjt|d t ddd W d    n1 s 0    Y  tjt|d t ddd W d    n1 s<0    Y  d}tjt|d t ddd W d    n1 s|0    Y  d}tjt|d t ddd W d    n1 s0    Y  d S )Nr   r   r   1H1Dr   r2   rf      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   rA   r   r   Hourr   r   r   r#   )r   r}   r   r   Zp3r~   r   r   r   r   test_period_cons_combined  sl    





,,,,,,,z0TestPeriodConstruction.test_period_cons_combined)z1970/01/01 z2020-12-31 z1981/09/13 hour)z00:00:00z00:00:01z23:59:59z12:00:59zsec_float, expected))z
.000000001r2   )z
.000000999  )z
.123456789i  )z
.999999999r   )z
.999999000r   )z.999999001123r2   )z.999999001123456r2   )z.999999001123456789r2   c                 C   s    t || | jj|ksJ d S N)r   
start_time
nanosecond)r   r6   r   Z	sec_floatrK   r   r   r   "test_period_constructor_nanosecond5  s    z9TestPeriodConstruction.test_period_constructor_nanosecond   c                 C   s"   t d| dd}|j|ksJ d S )Ni ' Z1Hrf   )r   r   )r   r   r}   r   r   r   test_period_large_ordinalJ  s    z0TestPeriodConstruction.test_period_large_ordinalN) __name__
__module____qualname__r    r%   rL   rS   r^   rc   rn   rv   ry   r   r   r   r   markparametrizer   r   r   r   ranger   r   r   r   r   r   r   r   r   r   r   r   r   r   &   sF   H#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 )NZ2000Q1)r   rY   Zround_trip_pickle)r   r}   Znew_pr   r   r   test_round_tripS  s    
z!TestPeriodMethods.test_round_tripc                 C   s   t tdddt tdddks$J t tdddt tdddksHJ t tdddt tdddkslJ t tdddt tdddksJ d S )	Nr   r'   r   
2011-01-01r"   r   rz   2011-02)hashr   )r   r   r   r   	test_hashX  s    $$$zTestPeriodMethods.test_hashc                 C   s   t ddd}|jddtdks$J tdtdd	 }|jd
d|ksJJ t ddd}|jddtdksnJ tdtdd	 }|jd
d|ksJ d S )Nr   r'   r   r   r   r   z
2011-02-01r2   rM   Er   
2011-04-01)r   rN   r   r   )r   r}   rK   r   r   r   test_to_timestamp_multd  s    z(TestPeriodMethods.test_to_timestamp_mult8ignore:Period with BDay freq is deprecated:FutureWarningc                 C   s|  t ddd}|jdd}g d}|D ]0}||jd|dks>J ||jd|dks$J q$|jd	d}g d
}|D ]0}||jd|dksJ ||jd|dksnJ qng d}dd }|D ]R}t d|d}| |}	|	|ksJ |j|jddksJ |j||ksJ qt ddd}|jddd}	tdddtdd }
|	|
ksFJ |jddd}	|	|
ksbJ |jddd}	tdddtdd }
|	|
ksJ |jddd}	|	|
ksJ |jdd}	tdddtdd }
|	|
ksJ tddd}
|jddd}	|	|
ksJ |jddd}	|	|
ks$J |jddd}	|	|
ks@J |jddd}	|	|
ks\J |jddd}	|	|
ksxJ d S )Nr.   r)   r   r   r   )sZStarTZBEGInr"   rr   r   )er   ZFINIsH)	r)   r,   r'   WrU   r"   r   rC   r   c                 S   s2   | j dkr| jtddd S t| | j  jjd S )NrU   r2   r   )r   nanoseconds)r   r   r   r   _value)r}   r   r   r   _ex  s    
z0TestPeriodMethods.test_to_timestamp.<locals>._exZ1985r   r   i  r2   rM   3Hr   Z2Ti  startZ5S)r   rN   Z	to_periodr   end_timer   r   r   )r   r}   start_tsaliasesr*   Zend_tsZfrom_lstr   Zfcoder~   rK   r   r   r   test_to_timestampo  sX    z#TestPeriodMethods.test_to_timestampc                 C   sh   t jttd( tdd}|jddd}W d    n1 s<0    Y  tdtdd }||ksdJ d S )	Nr   
1990-01-05rU   r   r   
1990-01-06r2   r   )rY   rZ   r[   r\   r   rN   r   r   r   rP   r~   rK   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.000001r2   )z1970-01-01 00:00:00.00001rX   )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usrM   c                 C   s"   t |j|dj}||ksJ d S )Nr   )r   rN   microsecond)r   rO   rK   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.123456789Nr   r   )r   r?   2000-12-15 13:45:26.123456r?   )r   Nr   r?   )r   r<   2000-12-15 13:45:26.123r<   )r   Nr   r<   )2000-12-15 13:45:26r   r   r   )r   r   z2000-12-15 13:45r   )r   r   z2000-12-15 13:00r   )r   Y2000r   )r   r,   Z2000Q4Q-DEC)r   r'   z2000-12r'   )r   r   z2000-12-11/2000-12-17r   )r   r"   r   r"   )r   rU   r   rU   c                 C   s>   t ||d}t||ksJ t|d| d| dks:J d S )Nr   zPeriod('z', 'z'))r   r   repr)r   Zstr_tsr   Zstr_resZstr_freqr}   r   r   r   	test_repr  s    zTestPeriodMethods.test_reprc                 C   s$   t ddd}ttt|v s J d S )Nr   r'   r   )r   r   r   r   r   r   r   test_repr_nat  s    zTestPeriodMethods.test_repr_natc                 C   s4   t ddd}|d}|dks"J t|ts0J d S )Nz2000-1-1 12:34:12r   r   z%Y-%m-%d %H:%M:%Sz2000-01-01 12:34:12)r   strftimer   r   r   r   r   r   test_strftime  s    
zTestPeriodMethods.test_strftimeN)r   r   r   r   r   r   r   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   R  s0   
?r   c                   @   s2  e Zd ZdZejdg ddd Zdd Zdd	 Z	ej
d
dd Zedd Zejdejdfejdfgejdddgdd Zejdejdfejdfgejdddgdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3S )4TestPeriodPropertiesz5Test properties such as year, month, weekday, etc....r   r   c                 C   sl   t d|d}|jsJ t|jts&J t d|d}|jr<J t d|d}|jsRJ t d|d}|jrhJ d S )Nz2000-01-01 00:00:00r   z1999-01-01 00:00:00z2004-01-01 00:00:00z2100-01-01 00:00:00)r   Zis_leap_yearr   bool)r   r   r}   r   r   r   test_is_leap_year  s    


z&TestPeriodProperties.test_is_leap_yearc                 C   s   t ddd}|jdksJ |jdks(J t|t s6J t ddd}|jdksPJ |jdks^J t|t slJ t ddd}|jdksJ |jd	ksJ t|t sJ d S )
Nr   r   rf        r1   r'      )r   r4   r`   r   r5   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.   rC   r   r   )r   r   r   Minuter   )r   rF   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 ]x}tjt|d td|d W d    n1 s0    Y  tjt|d td|d W d    qT1 s0    Y  qTtd|d}td|d}t|tsJ t|tsHJ qHd S )N)ZMTHZMONTHZMONTHLYZMthr5   Zmonthly)ZBUSZBUSINESSZ
BUSINESSLYZWEEKDAYZbus)ZDAYZDLYZDAILYrE   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'   rU   r"   r   r   r   r<   r?   r   r   z2016-03-01 09:00r   r2   rf   )r   itemsr   r   r#   r   r   )r   Zcasesr   r   freqsr   r   r   r   r   r   test_period_deprecated_freq&  s*    *,z0TestPeriodProperties.test_period_deprecated_freqc              	   C   s&   t | j| j| j| j| j| j| ddS )Nr   )r4   r5   r6   r   r   r   r   )r   r4   r5   r6   r   r   r   )boundoffsetr   r   r   _period_constructorD  s    z(TestPeriodProperties._period_constructorzbound, offsetr   r2   period_propertyr   r   c                 C   sH   t ||}tjtdd t|| W d    n1 s:0    Y  d S )NzOut of bounds nanosecondr   )r   r   r   r   r	   getattr)r   r   r   r   r   r   r   r   $test_outer_bounds_start_and_end_timeP  s    z9TestPeriodProperties.test_outer_bounds_start_and_end_timec                 C   sn   t || }| jdd}t||jdd|ks8J ||tddd  d}t||d|ksjJ d S )Nr   r   r2   )unit)r   r   rN   roundr  r   floor)r   r   r   r   r   rK   r   r   r   $test_inner_bounds_start_and_end_timeX  s
    z9TestPeriodProperties.test_inner_bounds_start_and_end_timec                 C   s   g d}t ddd}|D ]}td|d}|j|ksJ qtjttd. tdddjt dddksfJ W d    n1 sz0    Y  tdd	djt d
ddksJ d S )N)r)   r,   r'   r"   r   r   r   rW   r2   2012r   r   rU   rq   r   i  ro      )r   r   r   rY   rZ   r[   r\   )r   Zfreq_lstxpfr}   r   r   r   test_start_timeb  s    <z$TestPeriodProperties.test_start_timec                 C   s  t ddd}dd }|ddd}||jks.J t ddd}|d	d
d}||jksTJ t ddd}|d	dd}||jkszJ t ddd}|d	dd}||jksJ t ddd}|d	ddd}||jksJ tjttd6 t ddd}|d	dd}||jksJ W d    n1 s0    Y  t ddd}|d	dd}||jksFJ t ddd}|d	dd}||jksnJ t ddd}|d	ddd}||jksJ t ddd}|d	ddd}||jksJ d S )Nr  r)   r   c                  W   s   t t t|  djd S NrM   r2   r   r   Zas_unitr   argsr   r   r   r   o  s    z/TestPeriodProperties.test_end_time.<locals>._ex  r2   r,   rW   r   r'   rq   r"   r   r   rU   r1   r   Z15D   r   r   )r   r   rY   rZ   r[   r\   )r   r}   r   r	  r   r   r   test_end_timel  s@    .z"TestPeriodProperties.test_end_timec                 C   s`   t jttd  tdd}|j}W d    n1 s40    Y  tdtdd }||ks\J d S )Nr   r   rU   r   r2   r   )rY   rZ   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   s   t t t|  djd S r  r  r  r   r   r   r     s    z;TestPeriodProperties.test_anchor_week_end_time.<locals>._exz2013-1-1zW-SATr  r2      )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)   r9   )r   r4   ra   )r   Za_dater   r   r   test_properties_annually  s    z-TestPeriodProperties.test_properties_annuallyc                 C   st   t dddd}t dddd}t dddd}tdD ]<}|||fD ],}|| jdksVJ || j|d ks@J q@q2d S )Nr   r9   r2   )r   r4   r`   zQ-JANzQ-JUNr1   )r   r   Zqyearr`   )r   Z
qedec_dateZ
qejan_dateZ
qejun_datexZqdr   r   r   test_properties_quarterly  s    z.TestPeriodProperties.test_properties_quarterlyc                 C   s   t dddd}tdD ]}|| }|jdks0J d|d   krHdkr\n n|jdksJ nd|d   krtdkrn n|jd	ksJ nVd
|d   krdkrn n|jdksJ n*d|d   krdkrn n|jdksJ |j|d ksJ qd S )Nr'   r9   r2   )r   r4   r5   r   r1   r   r  rq      r:   rX   ro   )r   r   r4   r`   r5   )r   Zm_dater  Zm_ival_xr   r   r   test_properties_monthly  s    z,TestPeriodProperties.test_properties_monthlyc                 C   s   t ddddd}|jdksJ |jdks,J |jdks:J |jdksHJ |d jdksZJ |jdkshJ t ddd	ddjd
ksJ d S )Nr   r9   r2   r  r   r4   r5   r6   4      rW   rq      )r   r4   r`   r5   weekdays_in_month)r   w_dater   r   r   test_properties_weekly  s    z+TestPeriodProperties.test_properties_weeklyc                 C   s   t ddddd}|jdksJ |jdks,J |jdks:J |jdksHJ |d jdksZJ |jdkshJ t ddd	dd}|jd
ksJ t}tjt	|d  t ddddd W d    n1 s0    Y  d S )Nr   r9   r2   r  r  r  r  rW   rq   r  r   ZWK)
r   r4   r`   r5   r  r   r   r   r   r#   )r   r!  r   r   r   r   r   test_properties_weekly_legacy  s    z2TestPeriodProperties.test_properties_weekly_legacyc                 C   s  t jttd  tddddd}W d    n1 s40    Y  |jdksLJ |jdksZJ |jdkshJ |jdksvJ |j	dksJ |j
dksJ |jdksJ t jttd* tddd	ddjd
ksJ W d    n1 s0    Y  tddddd}|jdksJ |jdksJ |jdks(J |jdks8J |j	dksHJ |j
dksXJ |jdkshJ tddd	ddjd
ksJ d S )Nr   rU   r9   r2   r  r   r  rW   rq   r  r"   )rY   rZ   r[   r\   r   r4   r`   r5   r6   weekday	dayofyearr   )r   Zb_dateZd_dater   r   r   test_properties_daily  s(    .8z*TestPeriodProperties.test_properties_dailyc                 C   s   t dddddd}t dddddd}||fD ]}|jdks>J |jdksLJ |jdksZJ |jdkshJ |jdksvJ |jdksJ |jdksJ |jdksJ t ddd	dddjd
ks,J q,d S )Nr   r9   r2   r   )r   r4   r5   r6   r   2Hr  rW   rq   r  )	r   r4   r`   r5   r6   r$  r%  r   r   )r   Zh_date1Zh_date2Zh_dater   r   r   test_properties_hourly  s    z+TestPeriodProperties.test_properties_hourlyc                 C   s   t ddddddd}|jdks"J |jdks0J |jdks>J |jdksLJ |jdksZJ |jdkshJ |jdksvJ |jdksJ t ddd	ddddjd
ksJ d S )NrC   r9   r2   r   )r   r4   r5   r6   r   r   r  r"   rW   rq   r  )	r   r`   r5   r6   r$  r%  r   r   r   )r   Zt_dater   r   r   test_properties_minutely  s    z-TestPeriodProperties.test_properties_minutelyc              	   C   s   t dddddddd}|jdks$J |jdks2J |jdks@J |jdksNJ |jdks\J |jdksjJ |jdksxJ |jdksJ |j	dksJ |j
dksJ t ddddddddj
d	ksJ d S )
NrC   r9   r2   r   )r   r4   r5   r6   r   r   r   r  rW   rq   r  )r   r4   r`   r5   r6   r$  r%  r   r   r   r   )r   Zs_dater   r   r   test_properties_secondly&  s&    z-TestPeriodProperties.test_properties_secondlyN) r   r   r   __doc__r   r   r   r   r   r   r   r   staticmethodr   r   r/   maxr  r  r  r  r  r  r  r  r  r"  r#  r&  r(  r)  r*  r   r   r   r   r     s<   



/	r   c                   @   s   e Zd Zdd ZdS )TestPeriodFieldc                 C   sJ   d}t jt|d$ tdtdd W d    n1 s<0    Y  d S )Nz@Buffer dtype mismatch, expected 'const int64_t' but got 'double'r   r   r2   r   )r   r   r#   	libperiodZget_period_field_arrrk   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   r1  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s8J ||k rDJ ||krPJ d S Nr   r'   r   )r   leftrightr   r   r   ,test_comparison_same_period_different_objectF  s    

zBTestPeriodComparisons.test_comparison_same_period_different_objectc                 C   s`   t dd}t dd}||kr J ||ks,J ||k s8J ||ksDJ ||krPJ ||kr\J d S )Nr   r'   2000-02r4  )r   janfebr   r   r   test_comparison_same_freqQ  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\0    Y  tjt|d ||k W d    n1 s0    Y  tjt|d ||k W d    n1 s0    Y  tjt|d ||k W d    n1 s0    Y  d S )Nr   r'   z
2012-01-01r"   z0Input has different freq=D from Period\(freq=M\)r   )r   r   r   r   )r   r9  r6   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 ]\}}tjt|d ||k W d    n1 sz0    Y  tjt|d ||k W d    n1 s0    Y  tjt|d ||k  W d    n1 s0    Y  tjt|d ||k W d    qF1 s0    Y  qFd S )Nr   r'   r2   z'(Period|int)'z#not supported between instances of z and r   )r   r   r   r   )r   r9  Z
int_or_perr   r5  r6  r   r   r   test_comparison_invalid_typel  s    
&&&z2TestPeriodComparisons.test_comparison_invalid_typec                 C   sF   t dd}t dd}t dd}|||g}|||g}t||ksBJ d S )Nr   r'   r8  z2000-03)r   sorted)r   r9  r:  marZperiodsZcorrectPeriodsr   r   r   test_sort_periods~  s    




z'TestPeriodComparisons.test_sort_periodsc                 C   s   t ddd}td}t|f|tft|f|tffD ]P\}}||k rDJ ||krPJ ||kr\J ||kshJ ||krtJ ||kr0J q0d S )Nr   r"   r   )r   r   r   )r   r}   tr5  r6  r   r   r   test_period_cmp_nat  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 r3  r4  )r   Zzerodim_arrrK   r}   r   r   r   !test_comparison_numpy_zerodim_arr  s    
z7TestPeriodComparisons.test_comparison_numpy_zerodim_arrN)r   r   r   r7  r;  r<  r=  r@  rB  r   r   r   rk   arrayr   rC  r   r   r   r   r2  E  s    r2  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TestArithmeticr  )rM   r   msr   r+   c                 C   s   t dd}td|}|| tu s&J || tu s6J || tu sFJ tjtdd ||  W d    n1 sr0    Y  d S )Nz
2022-06-01r"   r   unsupported operandr   )r   rk   timedelta64r   r   r   r   )r   r  rP   r   r   r   r   test_add_sub_td64_nat  s    
z$TestArithmetic.test_add_sub_td64_natc                 C   sz   t dddt ddd }}|| }|d|j ks4J d}tjt|d  |t dd	d  W d    n1 sl0    Y  d S )
N2011r)   r   r{   r   z4Input has different freq=M from Period\(freq=A-DEC\)r   rd   r'   r   r   r   r   r   )r   r5  r6  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s0J d| |ks@J d S )Nr"     r2   r  rq   r4  )r   per1rR   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 sLJ 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 sZ0    Y  tjt|d d	|  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  d S )
Nr"   rM  r2   r  rq   |)zunsupported operand type\(s\)zcan only concatenate strzmust be str, not Periodr   r   )r   joinr   r   r   )r   rN  rR   r   r   r   r   test_add_invalid  s    &&zTestArithmetic.test_add_invalidc                 C   s   | S r   r   r  r   r   r   <lambda>      zTestArithmetic.<lambda>c                 C   s   t | gS r   )pdSeriesrT  r   r   r   rU    rV  c                 C   s   t | gS r   )rW  IndexrT  r   r   r   rU    rV  )identityrX  rY  lbox)idsrboxc                 C   s   t d}tddd}dg d}tjt|d  ||||  W d    n1 sV0    Y  tjt|d  ||||  W d    n1 s0    Y  tjt|d  ||||  W d    n1 s0    Y  d S )NZ2017r'   r   rQ  )z
cannot addrG  zcan only operate on azincompatible typezufunc add cannot use operandsr   )r   r   rR  r   r   r   )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s2J || d| ksFJ d}tjt|d  |t d	d
d  W d    n1 s~0    Y  d S )Nr   r"   r   z
2011-01-15i   z0Input has different freq=M from Period\(freq=D\)r   r   r'   rK  )r   rN  rR   offr   r   r   r   test_sub  s    zTestArithmetic.test_subn)r2   rq   r1   r   c                 C   s\   t d||d}t d||d}t t||jjdt t||jjd }|| |ksXJ d S )N19910905r   19920406)r   r   r   base)r   Ztick_classesrb  r   r   rK   r   r   r   test_sub_n_gt_1_ticks  s    z$TestArithmetic.test_sub_n_gt_1_ticks	normalizeTFzoffset, kwd_namer5   rp   Nr$  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sJ d S )Nr1   rc  rd  r   )r   r   re  )r   r   Zkwd_namerb  rg  kwdsZp1_dZp2_dr   r   rK   r   r   r   test_sub_n_gt_1_offsets  s     z&TestArithmetic.test_sub_n_gt_1_offsetsc              
   C   s  dD ]}t d|d}t d|d}|td |ks6J td| |ksLJ tdtdt tddtdfD ]t}d	}t	j
t|d
 ||  W d    n1 s0    Y  t	j
t|d
 ||  W d    qv1 s0    Y  qvqdD ]8}t d|d}t d|d}|td |ks(J td| |ks@J t d|d}|td |ksdJ td| |ks|J dddg}tdtdt tddtdfD ]v}t	j
t|d
 ||  W d    n1 s0    Y  t	j
t|d
 ||  W d    n1 s0    Y  qqdD ]0}t d|d}t d|d}|td |kshJ t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 t d|d}|tdd |ks"J tdd| |ks<J t d|d}|td |ks^J td| |kstJ 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 ]v}t	j
t|d
 ||  W d    n1 s0    Y  t	j
t|d
 ||  W d    n1 sT0    Y  qq2d#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(}t d&|d}|td'd! |ksJ td'd!| |ks8J t d)|d}|td*d |ks^J td*d| |ksxJ 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 ]v}t	j
t|d
 ||  W d    n1 sb0    Y  t	j
t|d
 ||  W d    n1 s0    Y  q0qjd S )4Nr)   r   Z3ArJ  r   Z2013rq   r2   m  r"   z<Input has different freq|Input cannot be converted to Periodr   r'   rz   r   2011-03z2011-05z2012-03ro   rQ  Input has different freq#Input cannot be converted to Periodr"   Z2Drr   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:00r1   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   rx  r  )r   r   rt   	YearBegin
MonthBeginr   rk   rH  r   r   r   r   rs   rR  rE   r   )r   r   r}   r   or   r   r   r   test_add_offset(  s    
&*

(.

(0


(zTestArithmetic.test_add_offsetc              
   C   s  d ddg}dD ]}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    qj1 s0    Y  qjqdD ]}td|d}|td td|dksJ |td td|dksJ tdtd	t td
dt	d
fD ]>}t
jt|d ||  W d    n1 sT0    Y  q"qd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 s0    Y  qhqhd"D ]F}td#|d}|t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'd td(|dksFJ |t	d)d* td+|dksfJ |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 s0    Y  qqd S )2NrQ  rn  ro  rj  rJ  r   rq   Z2009r2   rk  r"   r   rl  rm  r   ro   z2010-03rp  r   rq  z
2011-03-27r   z
2011-03-31ru  rt  r   r   rs  rv  rw  r   ry  rz  r{  r|  z2011-03-30 09:00r1   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  )rR  r   r   rt   r  r  r   rk   rH  r   r   r   r   rs   rE   r   )r   r   r   r}   r  r   r   r   test_sub_offset  s    
*
.
  "" 
0
  " 

zTestArithmetic.test_sub_offsetr   rl  c                 C   sP   t d|d}t| tu sJ |t tu s,J t| tu s<J |t tu sLJ 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s0J |td }t ddd}||ksVJ d}tjt|d |td  W d    n1 s0    Y  tjt|d |td  W d    n1 s0    Y  d S )	Nr   r"   r   rr  rq   ru  z-Input cannot be converted to Period\(freq=D\)r   )r   r   rE   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   rI  rL  rO  rP  rS  Zboxesr\  r^  ra  rf  r   rt   ru   rs   ZWeekri  r  r  r  r  r   r   r   r   rE    s>   
	
	 Q
rE  c                  C   s   d} t d}tjt| d d|_W d    n1 s60    Y  |j}tjt| d d| |_W d    n1 st0    Y  d S )Nznot writableZ2014Q1r   r_  rq   )r   r   r   AttributeErrorrA   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"   r2   r  )r   r4   r6   )rN  r   r   r   test_small_year_parsing4  s    
r  c                  C   s   g d} t ddd}| D ]}t|| q| D ]&}t d|d}t| |jdks0J q0tjttd t ddd}W d    n1 s0    Y  t| t ddd}t| d S )	N)r)   r'   r,   r"   r   r   r   r   r"   rf   r   r   rU   r   )r   r   r]   r4   rY   rZ   r[   r\   )r   r   r   r   r   r   test_negone_ordinals:  s    *r  c                  C   sB   d} t jt| d tddd W d    n1 s40    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_messageM  s    r  ))r   r   r   numpyrk   r   Zpandas._libs.tslibsr   r   r/  Zpandas._libs.tslibs.ccalendarr   r   Zpandas._libs.tslibs.np_datetimer	   Zpandas._libs.tslibs.parsingr
   Zpandas._libs.tslibs.periodr   r   ZpandasrW  r   r   r   r   r   Zpandas._testingZ_testingrY   r\   r   r   r   r.  r2  rE  r  r  r  r  r   r   r   r   <module>   s>       0 -  B^   