
    o[we*                     Z   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          Z G d d          Z  G d d          Z! G d d          Z" G d d          Z# G d d          Z$d Z%d Z&d Z'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                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zej                            de          d             Zej                            de          d             Zej                            de          ej                            d edd                    d                         Zd Zd Zej                            dg d          d             Zd Zd Zd Zej                            dg d          ej                            dg d          ej                            d g d!          d"                                     Zej                            d ed#                    d$             Zd%S )&TestPeriodConstructionc                 >   d}t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          dt	          j                               d d d            d S # 1 swxY w Y   d S )Nz;CustomBusinessDay cannot be used with Period or PeriodDtypematchz
2023-04-10Cfreq)pytestraises	TypeErrorr   r   CustomBusinessDayselfmsgs     Flib/python3.11/site-packages/pandas/tests/scalar/period/test_period.py$test_custom_business_day_freq_raisesz;TestPeriodConstruction.test_custom_business_day_freq_raises'   s-   K]9C000 	+ 	+<c****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]9C000 	C 	C<g&?&A&ABBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs!   <A A "#BBBc                 @   t          j        d          }d}t          j        t          |          5  t          |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nzm8[ns]2Value must be Period, string, integer, or datetimer   Dr   )r   to_numpyr   r   
ValueErrorr   )r    tdr!   s      r"   test_from_td64nat_raisesz/TestPeriodConstruction.test_from_td64nat_raises/   s   \(##B]:S111 	 	2JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	! 	!2C    	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s#   AAA4BBBc                    t          dd          }t          d          }||k    sJ t          dd          }t          d          }t          dd          }||k    sJ ||k    sJ t          dd          }t          dd          }||k    sJ ||k    sJ t          j        d	          }t          t          j                    d	          }t          j        d
          }||k    sJ ||k    sJ t          j        d          }t          t          j                    d          }t          j        t          j                              }||k    sJ ||k    sJ t          dd          }t          dd          }||k    sJ t          dddd          }t          dd          }||k    sJ t          dddd          }||k    sJ t          d          }t          t          ddddddd          d          }||k    sJ t          dd          }||k    sJ t          d          }t          t          ddddddd          d          }||k    sJ t          dd          }||k    sJ d}t          j        t          |          5  t          d !           d d d            n# 1 swxY w Y   d"}t          j        t          |          5  t          d#d$           d d d            n# 1 swxY w Y   t          j        t          d%          5  t          dd&           d d d            d S # 1 swxY w 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)Minr9   )	r   nowr   r   Dayr   r   r(   r   )r    i1i2i3i4i5expectedr!   s           r"   test_constructionz(TestPeriodConstruction.test_construction:   s?   JS)))JRxxxxF%%%F^^F%%%RxxxxRxxxxF%%%F%%%RxxxxRxxxxZS!!!HLNN---Z__RxxxxRxxxx ZS!!!HLNN---Z&&RxxxxRxxxxF'''F'''RxxxxQAC888JS)))RxxxxQAC888Rxxxx-..(4Aq!Q==CHHHX~~~~3#>>>X~~~~/00(4Aq!Q==CHHHX~~~~5C@@@X~~~~2]:S111 	# 	#6""""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# %]:S111 	) 	):C((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ]9,FGGG 	, 	,6
++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s6   J66J:=J:K<<L L "MMMc                     t          d          }t          |d          }|                                }||k    sJ |j        }t          |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rt2s          r"   &test_construction_from_timestamp_nanosz=TestPeriodConstruction.test_construction_from_timestamp_nanos   s    677Rd### Rxxxx wd&&&!!x4    c                 .   t          j        t          t                    5  t	          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          }||k    sJ t	          d	d
dd          }t	          dd          }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   3/10/12Br   r&   z3/11/12z3/12/12b  r8   
   r:   )tmassert_produces_warningFutureWarningbday_msgr   asfreq)r    rM   rN   rO   s       r"   test_construction_bdayz-TestPeriodConstruction.test_construction_bday   sk   'XFFF 	 		,,,B	,,,B3''''	,,,B3''''	,,,B3''''	,,,B8888T===B	,,,B88888	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   CD

DDc                    t          ddd          }t          dd          }||k    sJ t          ddd          }t          dd          }||k    sJ t          d	          }t          ddd          }t          d
          }||k    sJ ||k    sJ t          d          }||k    sJ t          d          }||k    sJ t          d          }||k    sJ t          d          }||k    sJ t          d          }||k    sJ t          d          }||k    sJ t          d          }|j        dk    sJ t          d          }||k    sJ d S )Nr7   r9   r2   r;   quarterr   r,   r   r8   z9/1/20052005Q12005q105Q105q11Q20051q20051Q051q054Q1984i  4q1984r   r;   )r    rM   rN   rO   lowers        r"   test_construction_quarterz0TestPeriodConstruction.test_construction_quarter   s~   qs333JS)))Rxxxxqs333JS)))RxxxxHqs333HRxxxxRxxxxF^^RxxxxvU{{{{HRxxxxx  U{{{{F^^RxxxxvU{{{{Hw$x  U{{{{{{r_   c                    t          dd          }t          dd          }||k    sJ t          dd          }||k    sJ t          dd          }||k    sJ t          dd          }|j        dk    sJ t          t          dd	d	          d          }t          dd          }||k    sJ t          t          dd	d	          d          }t          t          dd	d	          d          }t          t	          j        d
          d          }t          dd          }t          dd          }||k    sJ ||k    sJ ||k    sJ ||k    sJ d S )N2007-01r-   r   200701rG   rH   r   I  r@   r9   
2007-01-012007-01-01 00:00:002007-01-01 00:00:00.000)r   r;   r   r   np
datetime64r    rR   rM   rN   rO   rP   rQ   s          r"   test_construction_monthz.TestPeriodConstruction.test_construction_month   s   )#...H3'''X~~~~H3'''X~~~~F%%%X~~~~F---w%HT1a((s333H3'''RxxxxDq!$$3///HT1a((s333BM,//c:::)444-C888RxxxxRxxxxRxxxxRxxxxxxr_   c                 
   t          dt          j                              t          dd          k    sJ t          dt          j                              t          dd          k    sJ t          dt          j                              t          dd          k    sJ t	          j        t          t                    5  t          dt          j                              t          dd          k    sJ 	 d d d            n# 1 swxY w Y   t          dt          j	                              t          dd	          k    sJ t          d
dt          j
        d                    t          d
dd          k    sJ t          d
dt          j
        d                    t          d
dd          k    sJ t          d
ddt          j	                              t          d
ddd	          k    sJ t	          j        t          t                    5  t          dddt          j                              t          dddd          k    sJ 	 d d d            n# 1 swxY w Y   t          dd          }t          d
ddt          j	        d                    |k    sJ t          d
ddd          |k    sJ t	          j        t          t                    5  t          dddt          j        d                    t          dddd          k    sJ 	 d d d            n# 1 swxY w Y   t          dt          j                              t          dd          k    sJ t          dt          j                              }t          dd          }||k    sJ |j        dk    sJ |j        dk    sJ t          t          ddd          d          }t          dd          }||k    sJ t          t          ddd          d          }t          t          ddd          d          }t          t          j        d          d          }t          dd          }t          dd          }||k    sJ ||k    sJ ||k    sJ ||k    sJ t          d           }t          t          dddd!d"d"d#          d$          }||k    sJ t          d d$          }||k    sJ t          d%          }t          t          dddd!d"d"d&          d'          }||k    sJ t          d%d'          }||k    sJ d S )(Nr,   r   r-   r.   r/   r   ra   rb   r&   r7   r9      )startingMonthrm   r2      r8   r:   rd   re   z
2005-03-013D3BrG   r   r   r@   r~   r   r   r   r?   rA   r   rB   rC   rD   rE   rF   )r   r   MonthEndYearEndrf   rg   rh   ri   BusinessDayrL   
QuarterEndBDayr;   r   r   r   r   r   s          r"   test_period_constructor_offsetsz6TestPeriodConstruction.test_period_constructor_offsets   s   jw'7'9'9:::fS?
 ?
 ?
 
 
 
 
 f7?#4#4555S9Q9Q9QQQQQf7#3#5#5666&c:R:R:RRRRR'XFFF 	 	)'*=*?*?@@@FE E E     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 igkmm444ys8S8S8SSSSSqw'9'K'K'K
 
 
qs3334 4 4 4 qw'9'K'K'K
 
 
qs3334 4 4 4 4qagkmmDDDQACI
 I
 I
 
 
 
 
 'XFFF 	 	t1"7<>>JJJfO O O     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ,T2224qagk!nnEEEQQQQ4qad;;;xGGGG'XFFF 	 	t1"7<??KKKvP P P     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 f7#3#5#5666&c:R:R:RRRRRF)9););<<<F---Rxxxxw%w%HT1a((s333H3'''RxxxxDq!$$3///HT1a((s333BM,//c:::)444-C888RxxxxRxxxxRxxxxRxxxx-..(4Aq!Q==CHHHX~~~~3#>>>X~~~~/00(4Aq!Q==CHHHX~~~~5C@@@X~~~~~~s6   8DDD<I''I+.I+'=L11L58L5c                 J   d}t          j        t          |          5  t          t	          j                               d d d            n# 1 swxY w Y   t          j        t          |          5  t          t	          j                                                               d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  t          d
dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dd           d d d            d S # 1 swxY w Y   d S )Nz#Must supply freq for datetime valuer   r%   g?r&   r   zOrdinal must be an integerr   z?Only value or ordinal but not both should be given but not bothr   r9   )rH   valuer   z%If value is None, freq cannot be None)r<   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   rK   r   r   r   s     r"   test_invalid_argumentsz-TestPeriodConstruction.test_invalid_arguments*  s   3]:S111 	# 	#8<>>"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#]:S111 	* 	*8<>>&&(()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* C]:S111 	" 	"3S!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"*]:S111 	* 	*3S))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*O]:S111 	1 	11AC0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 6]:S111 	 	OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 B]:S111 	! 	!7C   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!-]>555 	 	3	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?]>555 	% 	%;$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   !AAA13B00B47B4C66C:=C:D<<E E $FF
F+GGG0HHH5III:JJJc                     t          dd          }t          ddd          |k    sJ t          d           t          u sJ t          dd          }t          |d	          }t          d
d	          }||k    sJ d S )Nr}   2Mr   r@   r9   )r;   r<   r   r   r&   r/   2007r   r   )r    rR   presultexps        r"   test_constructor_cornerz.TestPeriodConstruction.test_constructor_cornerI  s    )$///4qt444@@@@d||s""""<c***$$$V#&&&}}}}}}r_   c                    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    sJ t          d          }|j        dk    sJ t          d          }|j        dk    sJ d S )Nr   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.123rC   z2007-01-01 07:10:15.123000rF   z2007-01-01 07:10:15.123400)r   r   r    r   s     r"   test_constructor_infer_freqz2TestPeriodConstruction.test_constructor_infer_freqU  s    <  v}}}}?##v}}}}%&&v}}}}())v}}}},--v}}}} /00v}}}}/00v}}}}}}r_   c                    t          dd          }t          dd          }|j        |j        k    sJ |j        dk    sJ |j        dk    sJ |j        t	          j        d          k    sJ |j        t	          j                    k    sJ |dz   j        |j        dz   k    sJ d|z   j        |j        dz   k    sJ |dz
  j        |j        dz
  k    sJ d	|z   j        |j        dz
  k    sJ d S )
N19892Ar   r/   z2A-DECA-DECr   r9   )r   rH   freqstrr   r   r   )r    result1result2s      r"   test_multiplesz%TestPeriodConstruction.test_multiplesm  s   d+++c***'/1111(****'))))|wq111111|w000000!$!(;;;;;G$!(;;;;;!$!(;;;;;W%1)<<<<<<<r_   r<   c                    d| }t          d|          }dt          |          v sJ |                    dd          }t          ||          }||k    sJ |                    dd          }t          ||          }||k    sJ d S )NzQ-1989Q3r   r&   endhowr   )r   strrV   r    r<   r   r   stampr   s         r"   test_period_cons_quarterlyz1TestPeriodConstruction.test_period_cons_quarterly{  s     E||XD)))3s88####  % 005t$$$Cxxxx  5 115t$$$Cxxxxxxr_   c                     d| }t          d|          }|                    dd          t          d          z   }t          ||          }||d	z   k    sJ t          |t                     sJ d S )
NzA-r   r   r&   r   r      )daysr9   )r   rV   r   
isinstancer   s         r"   test_period_cons_annualz.TestPeriodConstruction.test_period_cons_annual  s     E||V$'''  % 009"3E3E3EE5t$$$C!G||||!V$$$$$$$r_   r=   numre      c                     d| }d| }t          ||          }t          |d                              |          }||k    sJ t          |t                     sJ d S )Nz2011-02-zW-r   r&   )r   rj   r   )r    r   r=   daystrr   r   rR   s          r"   test_period_cons_weeklyz.TestPeriodConstruction.test_period_cons_weekly  s{     "C!!CzzT***&s+++22488!!!!&&)))))))r_   c                    t          d          }|j        j        dk    sJ t          d          }|j        j        dk    sJ d}t          j        t
          |          5  t          d           d d d            d S # 1 swxY w 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    rY   r!   s      r"   test_parse_week_str_roundstripz5TestPeriodConstruction.test_parse_week_str_roundstrip  s    ,--x7****,--x7****5]:S111 	, 	,*+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s    A==BBc                     t          dd          }t          j        |j        d          }||k    sJ t          |t                     sJ d S N2011-01r-   r   )r   _from_ordinalrH   r   r    r   ress      r"   test_period_from_ordinalz/TestPeriodConstruction.test_period_from_ordinal  sT    93'''"193777Cxxxx#v&&&&&&&r_   r   r/   r-   r&   r   c                     t          d|          }|t          u sJ t          dd|z             }|t          u sJ t          dd|z             }|t          u sJ d S )Nr   r   23r   r    r   rY   s      r"   'test_construct_from_nat_string_and_freqz>TestPeriodConstruction.test_construct_from_nat_string_and_freq  sk    U&&&czzzzUt,,,czzzzUt,,,czzzzzzr_   c                 v   t          dd          }|t          u sJ t          t          d          }|t          u sJ t          t          d          }|t          u sJ t          t          d          }|t          u sJ t          d          }|t          u sJ t          t                    }|t          u sJ d S )Nnatr   r   r&   r   1D1Hr   )r   r   r   r   s     r"   test_period_cons_natz+TestPeriodConstruction.test_period_cons_nat  s    5w'''Cxxxx4c"""Cxxxx4d###Cxxxx4f%%%Cxxxx5MMCxxxx4LLCxxxxxxr_   c                    t          dd          }t          dd          }|j        |j        k    sJ |j        t          j        d          k    sJ |j        dk    sJ |j        t          j                    k    sJ |j        dk    sJ |dz   }|j        |dz   j        k    sJ |j        |j        k    sJ |j        dk    sJ |dz
  }|j        |dz
  j        k    sJ |j        |j        k    sJ |j        dk    sJ d}t          j        t          |          5  t          dd	           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          dd           d d d            d S # 1 swxY w Y   d S )Nr   3Mr   r-   r8   r9   z;Frequency must be positive, because it represents span: -3Mr   z-3Mz:Frequency must be positive, because it represents span: 0M0M)	r   rH   r   r   r   r   r   r   r(   )r    p1p2r   r!   s        r"   test_period_cons_multz,TestPeriodConstruction.test_period_cons_mult  sG   ID)))IC(((zRZ''''w'*1------zT!!!!w'*,,,,,,zS    a~"q&!11111{bg%%%%~%%%%a~"q&!11111{bg%%%%~%%%%K]:S111 	* 	*95))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* K]:S111 	) 	)94((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s$   D99D= D=!F  FFc                 L   t          dd          t          dd          t          dd          ft          dd          t          dd          t          dd          fg}|D ]\  }}}|j        |j        k    sJ |j        |j        k    sJ |j        t          j        d          k    sJ |j        d	k    sJ |j        t          j        d          k    sJ |j        d	k    sJ |j        t          j                    k    sJ |j        dk    sJ |dz   }|j        |dz   j        k    sJ |j        |j        k    sJ |j        d	k    sJ |dz   }|j        |dz   j        k    sJ |j        |j        k    sJ |j        d	k    sJ |dz
  }|j        |dz
  j        k    sJ |j        |j        k    sJ |j        d	k    sJ |dz
  }|j        |dz
  j        k    sJ |j        |j        k    sJ |j        d	k    sJ d
}t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   1H1Dr   r9   r      25Hz<Frequency must be positive, because it represents span: -25Hr   z-1D1Hz-1H1Dz:Frequency must be positive, because it represents span: 0D0D0HzInvalid frequency: 1W1D1W1DzInvalid frequency: 1D1W1D1W)	r   rH   r   r   Hourr   r   r   r(   )r    r   r   r   p3r   r!   s          r"   test_period_cons_combinedz0TestPeriodConstruction.test_period_cons_combined  s    yv...yv...ys+++ qv...qv...qs+++
  	+ 	+JBB:++++:++++7gl2......:&&&&7gl2......:&&&&7glnn,,,,:$$$$!VF>b2g%66666;"'))))>U****!VF>b2g%66666;"'))))>U****!VF>b2g%66666;"'))))>U****!VF>b2g%66666;"'))))>U*****L]:S111 	, 	,97++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]:S111 	, 	,97++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]:S111 	, 	,17++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]:S111 	, 	,17++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, K]:S111 	+ 	+96****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]:S111 	+ 	+16****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ (]:S111 	+ 	+96****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+']:S111 	+ 	+96****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   H66H:=H:I::I>I> J>>KK$LL	L*MMM.NNN4OOO:PP P)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
.000000001r9   )z
.000000999  )z
.123456789i  )z
.999999999r   )z
.999999000r   )z.999999001123r9   )z.999999001123456r9   )z.999999001123456789r9   c                 P    t          ||z   |z             j        j        |k    sJ d S N)r   
start_time
nanosecond)r    r=   r   	sec_floatrR   s        r"   "test_period_constructor_nanosecondz9TestPeriodConstruction.test_period_constructor_nanosecond5  s2    & cDj9,--8CxOOOOOOr_      c                 H    t          d|z   d          }|j        |k    sJ d S )Ni ' 1Hr   )r   r   )r    r   r   s      r"   test_period_large_ordinalz0TestPeriodConstruction.test_period_large_ordinalJ  s-     7T>555v~~~~~~r_   N) __name__
__module____qualname__r#   r*   rS   r^   rk   r{   r   r   r   r   r   r   r   markparametrizer	   r   r   r   ranger   r   r   r   r   r   r   r   r    r_   r"   r   r   &   s       C C C	! 	! 	!F, F, F,P       $! ! !F  8F F FP% % %>
 
 
  0= = = [Wf--  .- [Wf--% % .-% [UD))[UEE"bMM22* * 32 *)*, , ,' ' ' [V%9%9%9::  ;:  &) ) )<E+ E+ E+N [U$Q$Q$QRR[V%U%U%UVV[
	
 
	
 
	
 P P  WV SR P
 [VUU2YY//  0/  r_   r   c                      e Zd Zd Zd Zd Zej                            d          d             Z	d Z
ej                            dg d          ej                            d	g d
          d                         Zej                            dd          ej                            d          d                         Zd Zd ZdS )TestPeriodMethodsc                 \    t          d          }t          j        |          }||k    sJ d S )N2000Q1)r   rf   round_trip_pickle)r    r   new_ps      r"   test_round_tripz!TestPeriodMethods.test_round_tripS  s0    8$Q''zzzzzzr_   c                    t          t          dd                    t          t          dd                    k    sJ t          t          dd                    t          t          dd                    k    sJ t          t          dd                    t          t          dd                    k    sJ t          t          dd                    t          t          dd                    k    sJ d S )	Nr   r-   r   
2011-01-01r&   r   r   2011-02)hashr   )r    s    r"   	test_hashzTestPeriodMethods.test_hashX  s    F93///00D	PS9T9T9T4U4UUUUUF<c22233tF9SV<W<W<W7X7XXXXXF9400011T&QU:V:V:V5W5WWWWWF93///00D	PS9T9T9T4U4UUUUUUUr_   c                    t          dd          }|                    d          t          d          k    sJ t          d          t          dd	          z
  }|                    d
          |k    sJ t          dd          }|                    d          t          d          k    sJ t          d          t          dd	          z
  }|                    d
          |k    sJ d S )Nr   r-   r   r   r   r  z
2011-02-01r9   rU   Er   
2011-04-01)r   rV   r   r   )r    r   rR   s      r"   test_to_timestamp_multz(TestPeriodMethods.test_to_timestamp_multd  s    93'''~~#~&&)L*A*AAAAA\**Yq$-?-??~~#~&&(222294(((~~#~&&)L*A*AAAAA\**Yq$-?-??~~#~&&(222222r_   8ignore:Period with BDay freq is deprecated:FutureWarningc                    t          dd          }|                    d          }g d}|D ]<}||                    d|          k    sJ ||                    d|          k    sJ =|                    d	          }g d
}|D ]<}||                    d|          k    sJ ||                    d|          k    sJ =g d}d }|D ]y}t          d|          }|                                                    |          }	|	|k    sJ |j        |                    d          k    sJ |j         ||          k    sJ zt          dd          }|                    dd          }	t          ddd          t          dd          z
  }
|	|
k    sJ |                    dd          }	|	|
k    sJ |                    dd          }	t          ddd          t          dd          z
  }
|	|
k    sJ |                    dd          }	|	|
k    sJ |                    d          }	t          ddd          t          dd          z
  }
|	|
k    sJ t          ddd          }
|                    dd          }	|	|
k    sJ |                    dd          }	|	|
k    sJ |                    dd          }	|	|
k    sJ |                    dd          }	|	|
k    sJ |                    dd          }	|	|
k    sJ d S )Nr4   r/   r   r   r   )sStarTBEGInr&   r   r  )er   FINIsH)	r/   r2   r-   Wrb   r&   r   rJ   r   c                     | j         dk    r| j        t          dd          z   S t          | | j         z   j        j        dz
            S )Nrb   r9   r   )r   nanoseconds)r   r   r   r   _value)r   s    r"   _exz0TestPeriodMethods.test_to_timestamp.<locals>._ex  sF    v}}|iQB&G&G&GGGa!&j4;a?@@@r_   1985r   r   i  r9   rU   3Hr   2Ti  start5S)r   rV   	to_periodr   end_timer   r   r   )r    r   start_tsaliasesr0   end_tsfrom_lstr  fcoder   rR   s              r"   test_to_timestampz#TestPeriodMethods.test_to_timestampo  s    6$$$>>c>**))) 	; 	;Aq~~cq~999999q~~d~:::::::C((((( 	9 	9AQ^^CQ^777777Q^^Da^8888888BBB	A 	A 	A
  	( 	(EvE***A^^%%//66FQ;;;;<1>>c>#:#::::::Q''''' 6$$$//T1a((9Q+=+==!!!!%00!!!!//T1a((9Q+=+==!!!!%00!!!!E**T1a((9Q+=+==!!!!D!Q''11!!!!11!!!!11!!!!'22!!!!'22!!!!!!r_   c                    t          j        t          t                    5  t	          dd          }|                    dd          }d d d            n# 1 swxY w Y   t          d          t          d          z
  }||k    sJ d S )	Nr   
1990-01-05rb   r  r   
1990-01-06r9   r  )rf   rg   rh   ri   r   rV   r   r   r    rY   r   rR   s       r"   test_to_timestamp_business_endz0TestPeriodMethods.test_to_timestamp_business_end  s    'XFFF 	4 	4s++C%%cs%33F	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 \**Y1-E-E-EE!!!!!!s   (AAAzts, expected)	)z1970-01-01 00:00:00r   )z1970-01-01 00:00:00.000001r9   )z1970-01-01 00:00:00.00001re   )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usrU   c                 f    t          |                              |          j        }||k    sJ d S )Nr   )r   rV   microsecond)r    rX   rR   r   r   s        r"   test_to_timestamp_microsecondz/TestPeriodMethods.test_to_timestamp_microsecond  s:    " ((d(33?!!!!!!r_   z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.  rF   2000-12-15 13:45:26.123456rF   )r0  Nr0  rF   )r.  rC   2000-12-15 13:45:26.123rC   )r1  Nr1  rC   )2000-12-15 13:45:26r   r2  r   )r2  r   z2000-12-15 13:45r   )r2  r   z2000-12-15 13:00r   )r-  Y2000r   )r-  r2   2000Q4Q-DEC)r-  r-   z2000-12r-   )r-  r  z2000-12-11/2000-12-17r   )r-  r&   r-  r&   )r-  rb   r-  rb   c                     t          ||          }t          |          |k    sJ t          |          d| d| dk    sJ d S )Nr   zPeriod('z', 'z'))r   r   repr)r    str_tsr   str_resstr_freqr   s         r"   	test_reprzTestPeriodMethods.test_repr  s^    < 6%%%1vv    Aww>W>>(>>>>>>>>>r_   c                 r    t          dd          }t          t                    t          |          v sJ d S )Nr   r-   r   )r   r8  r   r   s     r"   test_repr_natzTestPeriodMethods.test_repr_nat  s7    5s###CyyDGG######r_   c                     t          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   s      r"   test_strftimezTestPeriodMethods.test_strftime  sU    &S111jj,--+++++#s#######r_   N)r   r   r   r   r  r  r   r   filterwarningsr!  r'  r   r+  r<  r>  rA  r   r_   r"   r   r   R  si         
V V V	3 	3 	3 [B =" =" ="~" " " [
	
 
	
 
	
  [V%7%7%788" " 98 " [&	
 4 [B ? ? 5 :?
$ $ $$ $ $ $ $r_   r   c                   p   e Zd ZdZej                            dg d          d             Zd Zd Z	ej        
                    d          d             Zed	             Zej                            d
ej        dfej        dfg          ej                            dddg          d                         Zej                            d
ej        dfej        dfg          ej                            dddg          d                         Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS ) TestPeriodPropertiesz5Test properties such as year, month, weekday, etc....r   r   c                    t          d|          }|j        sJ t          |j        t                    sJ t          d|          }|j        rJ t          d|          }|j        sJ t          d|          }|j        rJ 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   s      r"   test_is_leap_yearz&TestPeriodProperties.test_is_leap_year  s     (t444~!.$/////(t444>!!!(t444~(t444>!!!!!r_   c                    t          dd          }|j        dk    sJ |j        dk    sJ t          |t                     sJ t          dd          }|j        dk    sJ |j        dk    sJ t          |t                     sJ t          dd          }|j        dk    sJ |j        d	k    sJ t          |t                     sJ d S )
Nr   r6  r        r8   r-      )r   r;   rn   r   r<   r   s     r"    test_quarterly_negative_ordinalsz5TestPeriodProperties.test_quarterly_negative_ordinals  s    2G,,,v~~~~yA~~~~!V$$$$$2G,,,v~~~~yA~~~~!V$$$$$2C(((v~~~~w"}}}}!V$$$$$$$r_   c                 ~    t          dd          }|j        t          j                    k    sJ |j        dk    sJ d S )Nr4   rJ   r   r   )r   r   r   Minuter   )r    rM   s     r"   test_freq_strz"TestPeriodProperties.test_freq_str!  sH    F'''w'.******zS      r_   r	  c           
      >   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          |          5  t          d|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d|           d d d            n# 1 swxY w Y   t          d|          }t          d|          }t          |t
                    sJ t          |t
                    sJ d S )N)MTHMONTHMONTHLYMthr<   monthly)BUSBUSINESS
BUSINESSLYWEEKDAYbus)DAYDLYDAILYrL   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-   rb   r&   r   r   r   rC   rF   r/  r   z2016-03-01 09:00r   r9   r   )r   itemsr   r   r(   r   r   )r    casesr!   r   freqsr   r   r   s           r"   test_period_deprecated_freqz0TestPeriodProperties.test_period_deprecated_freq&  s   
 HGGDDD???GGG===???@@@@@@===

 

 #++-- 	* 	*JC 1 1]:S999 : :-D9999: : : : : : : : : : : : : : :]:S999 1 11400001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 *555B,,,Bb&)))))b&))))))	* 	*s$   A<<B B "C  CCc           	      p    t          | j        | j        | j        | j        | j        | j        |z   d          S )Nr(  )r;   r<   r=   r   rh  rp  r   )r   r;   r<   r=   r   rh  rp  )boundoffsets     r"   _period_constructorz(TestPeriodProperties._period_constructorD  s?    +	<<&(
 
 
 	
r_   zbound, offsetr   r9   period_propertyr   r  c                     t                               ||          }t          j        t          d          5  t          ||           d d d            d S # 1 swxY w Y   d S )NzOut of bounds nanosecondr   )rD  r  r   r   r
   getattr)r    r}  r~  r  r   s        r"   $test_outer_bounds_start_and_end_timez9TestPeriodProperties.test_outer_bounds_start_and_end_timeP  s     &99%HH].6PQQQ 	- 	-FO,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   AAAc                    t                               ||           }|                                                    d          }t	          ||                              d          |k    sJ ||t          dd          z  z
                      d          }t	          ||                              d          |k    sJ d S )Nr   r   r9   )unit)rD  r  rV   roundr  r   floor)r    r}  r~  r  r   rR   s         r"   $test_inner_bounds_start_and_end_timez9TestPeriodProperties.test_inner_bounds_start_and_end_timeX  s     &99%&II&&((..C.88v//5535??8KKKKFYqs%;%;%;;;BB3GGv//55c::hFFFFFFr_   c                    g d}t          ddd          }|D ] }t          d|          }|j        |k    sJ !t          j        t
          t                    5  t          dd          j        t          ddd          k    sJ 	 d d d            n# 1 swxY w Y   t          dd	          j        t          d
dd          k    sJ d S )N)r/   r2   r-   r&   r   r   r   rd   r9   2012r   r   rb   r   r  i  r      )r   r   r   rf   rg   rh   ri   )r    freq_lstxpfr   s        r"   test_start_timez$TestPeriodProperties.test_start_timeb  s4   666dAq!! 	& 	&AvA&&&A<2%%%%%'XFFF 	O 	O&s+++6(4A:N:NNNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Of3'''2htR6L6LLLLLLLs   ,BBBc                    t          dd          }d } |ddd          }||j        k    sJ t          dd          } |dd	d          }||j        k    sJ t          dd
          } |ddd          }||j        k    sJ t          dd          } |ddd          }||j        k    sJ t          dd          } |dddd          }||j        k    sJ t          j        t          t
                    5  t          dd          } |ddd          }||j        k    sJ 	 d d d            n# 1 swxY w Y   t          dd          } |ddd          }||j        k    sJ t          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 d S )Nr  r/   r   c                  ~    t          t          t          |                                d          j        dz
            S NrU   r9   r   r   as_unitr  argss    r"   r  z/TestPeriodProperties.test_end_time.<locals>._exo  2    Yx77??EELqPQQQr_     r9   r2   rd   rK  r-   r   r&   r   r   rb   r8   r  15D   r   r   )r   r  rf   rg   rh   ri   )r    r   r  r  s       r"   test_end_timez"TestPeriodProperties.test_end_timel  s   6$$$	R 	R 	R Sq!__QZ6$$$Sq!__QZ6$$$Sq!__QZ6$$$Sq!__QZ6$$$Sq!QQZ'XFFF 	$ 	$vC(((AT1aB#####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 6$$$Sq!__QZ 6&&&Sq"QZ6'''Sq!QQZ6'''Sq!QQZs   <,D55D9<D9c                     t          j        t          t                    5  t	          dd          }|j        }d d d            n# 1 swxY w Y   t          d          t          d          z
  }||k    sJ d S )Nr   r#  rb   r$  r9   r%  )rf   rg   rh   ri   r   r  r   r   r&  s       r"   test_end_time_business_fridayz2TestPeriodProperties.test_end_time_business_friday  s    'XFFF 	" 	"s++C\F	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" \**Y1-E-E-EE!!!!!!s   AA	A	c                 `    d }t          dd          } |ddd          }|j        |k    sJ d S )Nc                  ~    t          t          t          |                                d          j        dz
            S r  r  r  s    r"   r  z;TestPeriodProperties.test_anchor_week_end_time.<locals>._ex  r  r_   z2013-1-1zW-SATr  r9      )r   r  )r    r  r   r  s       r"   test_anchor_week_end_timez.TestPeriodProperties.test_anchor_week_end_time  sO    	R 	R 	R :w''Sq!__zRr_   c                 B    t          dd          }|j        dk    sJ d S )Nr/   r@   )r   r;   ry   )r    a_dates     r"   test_properties_annuallyz-TestPeriodProperties.test_properties_annually  s-    St,,,{d""""""r_   c                     t          ddd          }t          ddd          }t          ddd          }t          d          D ]-}|||fD ]%}||z   j        dk    sJ ||z   j        |dz   k    sJ &.d S )Nr6  r@   r9   )r   r;   rn   zQ-JANzQ-JUNr8   )r   r   qyearrn   )r    
qedec_date
qejan_date
qejun_datexqds         r"   test_properties_quarterlyz.TestPeriodProperties.test_properties_quarterly  s    tQ???
tQ???
tQ???
q 	1 	1A!:z: 1 1Q~----Q'1q5000001	1 	1r_   c                    t          ddd          }t          d          D ]}||z   }|j        dk    sJ d|dz   cxk    rdk    rn n|j        dk    sJ nbd|dz   cxk    rdk    rn n|j        d	k    sJ nAd
|dz   cxk    rdk    rn n|j        dk    sJ n d|dz   cxk    rdk    rn n|j        dk    sJ |j        |dz   k    sJ d S )Nr-   r@   r9   )r   r;   r<   rM  r8   rK  r  r      rA   re   r   )r   r   r;   rn   r<   )r    m_dater  m_ival_xs       r"   test_properties_monthlyz,TestPeriodProperties.test_properties_monthly  sA   St1555r 	+ 	+AzH=D((((AEQ'1,,,,,a!eq'1,,,,,a!eq'1,,,,,q1u"""""""""'1,,,,>QU*****	+ 	+r_   c                 
   t          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z
  j        dk    sJ |j        dk    sJ t          ddd	d          j        d
k    sJ d S )Nr  r@   r9   r  r   r;   r<   r=   4      rd   r      )r   r;   rn   r<   weekdays_in_month)r    w_dates     r"   test_properties_weeklyz+TestPeriodProperties.test_properties_weekly  s    St1!<<<{d""""~""""|q    {a
 B&&&&#r))))3T:::HBNNNNNNr_   c                    t          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z
  j        dk    sJ |j        dk    sJ t          ddd	d          }|j        d
k    sJ t          }t          j        t          |          5  t          dddd           d d d            d S # 1 swxY w Y   d S )Nr  r@   r9   r  r  r  r  rd   r   r  r   WK)
r   r;   rn   r<   r  r  r   r   r   r(   )r    r  r   r!   s       r"   test_properties_weekly_legacyz2TestPeriodProperties.test_properties_weekly_legacy  sO   St1!<<<{d""""~""""|q    {a
 B&&&&#r))))#Dq999 B&&&&"]:S111 	9 	94qa8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   'CCCc                    t          j        t          t                    5  t	          dddd          }d d d            n# 1 swxY w Y   |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    sJ |j        dk    sJ t          j        t          t                    5  t	          ddd	d          j        d
k    sJ 	 d d d            n# 1 swxY w Y   t	          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    sJ |j        dk    sJ t	          ddd	d          j        d
k    sJ d S )Nr   rb   r@   r9   r  r   r  rd   r   r  r&   )rf   rg   rh   ri   r   r;   rn   r<   r=   weekday	dayofyearr  )r    b_dated_dates      r"   test_properties_dailyz*TestPeriodProperties.test_properties_daily  s   'XFFF 	A 	A4qa@@@F	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A {d""""~""""|q    zQ~""""1$$$$#r))))'XFFF 	S 	SsQA>>>LPRRRRRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S St1!<<<{d""""~""""|q    zQ~""""1$$$$#r))))3T:::HBNNNNNNs#   AAAC33C7:C7c                 r   t          ddddd          }t          ddddd          }||f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    sJ |j        dk    sJ |j        dk    sJ t          ddd	dd          j        d
k    sJ d S )Nr   r@   r9   r   )r   r;   r<   r=   r   2Hr  rd   r   r  )	r   r;   rn   r<   r=   r  r  r   r  )r    h_date1h_date2h_dates       r"   test_properties_hourlyz+TestPeriodProperties.test_properties_hourly  s   cA11EEEdQAAFFF( 	 	F;$&&&&>Q&&&&<1$$$$:????>Q&&&&#q((((;!####'2----Cd!CCCQUWWWWWW	 	r_   c                 @   t          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    sJ |j        dk    sJ |j        dk    sJ t          ddd	ddd          j        d
k    sJ d S )NrJ   r@   r9   r   )r   r;   r<   r=   r   rh  r  r&   rd   r   r  )	r   rn   r<   r=   r  r  r   rh  r  )r    t_dates     r"   test_properties_minutelyz-TestPeriodProperties.test_properties_minutely  s    UQAAaPPP~""""|q    zQ~""""1$$$${a}!!!!#r))))$aQQqIIIW     r_   c           	      x   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    sJ |j        dk    sJ |j        dk    sJ |j	        dk    sJ |j
        dk    sJ t          ddddddd          j
        d	k    sJ d S )
NrJ   r@   r9   r   )r   r;   r<   r=   r   rh  rp  r  rd   r   r  )r   r;   rn   r<   r=   r  r  r   rh  rp  r  )r    s_dates     r"   test_properties_secondlyz-TestPeriodProperties.test_properties_secondly&  s)   T!A
 
 
 {d""""~""""|q    zQ~""""1$$$${a}!!!!}!!!!#r))))QAAaPQ       r_   N) r   r   r   __doc__r   r   r   rH  rN  rQ  rB  r{  staticmethodr  r   r5   maxr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r_   r"   rD  rD    sW       ??[V%9%9%9::" " ;:"% % % ! ! !
 [B * * *6 	
 	
 \	
 [_	r/BY]TUDV.WXX[.z0JKK- - LK YX- [_	r/BY]TUDV.WXX[.z0JKKG G LK YXGM M M-  -  - ^" " "     # # #
	1 	1 	1+ + + 
O 
O 
O9 9 9"O O O4  $
 
 
"
 
 
 
 
r_   rD  c                       e Zd Zd ZdS )TestPeriodFieldc                     d}t          j        t          |          5  t          j        dt          j        d          d           d d d            d S # 1 swxY w Y   d S )Nz@Buffer dtype mismatch, expected 'const int64_t' but got 'double'r   r   r9   r   )r   r   r(   	libperiodget_period_field_arrr   emptyr   s     r"   2test_get_period_field_array_raises_on_out_of_rangezBTestPeriodField.test_get_period_field_array_raises_on_out_of_range?  s    P]:S111 	? 	?*2rx{{A>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   )AAAN)r   r   r   r  r   r_   r"   r  r  >  s#        ? ? ? ? ?r_   r  c            
           e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            d ej        d          d	f ej         ed
d                    dff          d             ZdS )TestPeriodComparisonsc                     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rights      r"   ,test_comparison_same_period_different_objectzBTestPeriodComparisons.test_comparison_same_period_different_objectF  se    i%%y#&&u}}}}u}}}}u}}}}%<<<<%<<<<<<r_   c                     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febs      r"   test_comparison_same_freqz/TestPeriodComparisons.test_comparison_same_freqQ  sr    Y$$Y$$#::::czzzzSyyyyczzzz9999#::::::r_   c                 4   t          dd          }t          dd          }||k    rJ ||k    sJ d}t          j        t          |          5  ||k      d d d            n# 1 swxY w Y   t          j        t          |          5  ||k     d d d            n# 1 swxY w Y   t          j        t          |          5  ||k     d d d            n# 1 swxY w Y   t          j        t          |          5  ||k     d d d            d S # 1 swxY w 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  r=   r!   s       r"   test_comparison_mismatched_freqz5TestPeriodComparisons.test_comparison_mismatched_freq\  s   Y$$\3''#::::czzzzA]0<<< 	 	#II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]0<<< 	 	3JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]0<<< 	 	#II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]0<<< 	 	3JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   A!!A%(A%BB!B CCC9DDDc                 >   t          dd          }|dk    rJ |dk    sJ d}d| d| }|dfd|ffD ]\  }}t          j        t          |          5  ||k     d d d            n# 1 swxY w Y   t          j        t          |          5  ||k     d d d            n# 1 swxY w Y   t          j        t          |          5  ||k      d d d            n# 1 swxY w Y   t          j        t          |          5  ||k     d d d            n# 1 swxY w Y   d S )Nr,  r-   r9   z'(Period|int)'z#not supported between instances of z and r   )r   r   r   r   )r    r  
int_or_perr!   r  r  s         r"   test_comparison_invalid_typez2TestPeriodComparisons.test_comparison_invalid_typel  s<   Y$$!8888axxxx%
QJQQZQQ !Hq#h/ 	 	KD%y444  u              y444                y444  u              y444                	 	sH   A&&A*	-A*	BB#	&B#	CC	C	>DD	D	c                     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correctPeriodss         r"   test_sort_periodsz'TestPeriodComparisons.test_sort_periods~  sb    Y$$Y$$Y$$S/sCg.000000r_   c                     t          dd          }t          d          }t          |f|t          ft          |f|t          ffD ]5\  }}||k     rJ ||k    rJ ||k    rJ ||k    sJ ||k    rJ ||k    rJ 6d S )Nr  r&   r   )r   r   r   )r    r   tr  r  s        r"   test_period_cmp_natz)TestPeriodComparisons.test_period_cmp_nat  s    <c***l## !HH!HH	
 	% 	%KD% e||||e||||u}}}}5====u}}}}u}}}}}	% 	%r_   zzerodim_arr, expectedr   Fr,  r-   Tc                 N    t          dd          }||k    |u sJ ||k    |u sJ d S r  r  )r    zerodim_arrrR   r   s       r"   !test_comparison_numpy_zerodim_arrz7TestPeriodComparisons.test_comparison_numpy_zerodim_arr  sE    
 9c""[ X----q X------r_   N)r   r   r   r  r  r  r  r  r  r   r   r   r   arrayr   r  r   r_   r"   r  r  E  s        	  	  	 	 	 	     $1 1 1% % %$ [
"(1++u		3)?)? @ @$GH . .	 . . .r_   r  c            
          e Zd Zej                            dg d          d             Zd Zd Zd Z	d Z
d d	 d
 gZg dZej                            dee          ej                            dee          d                         Zd Zej                            dg 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                                     Zd Zd Zej                            dg d           d!             Zd" ZdS )#TestArithmeticr  )rU   r(  msr  r1   c                    t          dd          }t          j        d|          }||z   t          u sJ ||z   t          u sJ ||z
  t          u sJ t	          j        t          d          5  ||z
   d d d            d S # 1 swxY w Y   d S )Nz
2022-06-01r&   r   unsupported operandr   )r   r   timedelta64r   r   r   r   )r    r  rY   r   s       r"   test_add_sub_td64_natz$TestArithmetic.test_add_sub_td64_nat  s     \3''nUD))SyCSyCSyC]9,ABBB 	 	#II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +A>>BBc                    t          dd          t          dd          }}||z
  }|d|j        z  k    sJ d}t          j        t          |          5  |t          dd	          z
   d d d            d S # 1 swxY w Y   d S )
N2011r/   r   r   rK  z4Input has different freq=M from Period\(freq=A-DEC\)r   r}   r-   r   r   r   r   r   )r    r  r  r   r!   s        r"   test_sub_deltazTestArithmetic.test_sub_delta  s    V#...vC0H0H0HeUZ''''E]0<<< 	/ 	/6)#.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A77A;>A;c                 ~    t          dddd          }t          dddd          }|dz   |k    sJ d|z   |k    sJ d S )Nr&     r9   r  r   r  )r    per1r\   s      r"   test_add_integerzTestArithmetic.test_add_integer  s^    3T:::3T:::ax44x4r_   c                     t          dd          }|t          z   t          u sJ t          |z   t          u sJ |t          z
  t          u sJ t          |z
  t          u sJ d S r   r   r   s     r"   test_add_sub_natzTestArithmetic.test_add_sub_nat  s\    93'''3w#~~~~Qw#~~~~3w#~~~~Qw#~~~~~~r_   c                    t          dddd          }t          dddd          }d                    g d          }t          j        t          |          5  |d	z    d d d            n# 1 swxY w Y   t          j        t          |          5  d	|z    d d d            n# 1 swxY w Y   t          j        t          |          5  ||z    d d d            d S # 1 swxY w Y   d S )
Nr&   r  r9   r  r   |)zunsupported operand type\(s\)zcan only concatenate strzmust be str, not Periodr   r   )r   joinr   r   r   )r    r  r\   r!   s       r"   test_add_invalidzTestArithmetic.test_add_invalid  s   3T:::3T:::hh  
 
 ]9C000 	 	5LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9C000 	 	DLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9C000 	 	4KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   A++A/2A/B##B'*B'	CC #C c                     | S r   r   r  s    r"   <lambda>zTestArithmetic.<lambda>  s    q r_   c                 ,    t          j        | g          S r   )pdSeriesr  s    r"   r  zTestArithmetic.<lambda>  s    BIqcNN r_   c                 ,    t          j        | g          S r   )r  Indexr  s    r"   r  zTestArithmetic.<lambda>  s    bhsmm r_   )identityr  r  lbox)idsrboxc                 2   t          d          }t          dd          }d                    g d          }t          j        t
          |          5   ||           ||          z    d d d            n# 1 swxY w Y   t          j        t
          |          5   ||           ||          z    d d d            n# 1 swxY w Y   t          j        t
          |          5   ||           ||          z    d d d            d S # 1 swxY w 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   r   )r    r  r  rX   rY   r!   s         r"   test_add_timestamp_raisesz(TestArithmetic.test_add_timestamp_raises  s    vV#&&& hh  
 
 ]9C000 	! 	!DHHttCyy  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! ]9C000 	! 	!DIIR  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! ]9C000 	" 	"DIIS		!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s6   A77A;>A;CCC'DDDc                 $   t          dd          }t          dd          }|j        }||z
  d|z  k    sJ ||z
  d|z  k    sJ d}t          j        t          |          5  |t          d	d
          z
   d d d            d S # 1 swxY 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  r\   offr!   s        r"   test_subzTestArithmetic.test_sub  s    l---l---id{cCi''''d{b3h&&&&A]0<<< 	/ 	/6)#.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   #BB	B	n)r9   r   r8   rK  c                 &   t          d ||                    }t          d ||                    }t          t          |          |j        j                  t          t          |          |j        j                  z
  }||z
  |k    sJ d S )N19910905r   19920406)r   r   r   base)r    tick_classesr!  r   r   rR   s         r"   test_sub_n_gt_1_ticksz$TestArithmetic.test_sub_n_gt_1_ticks  s     J\\!__555J\\!__555#b''555GG"',9
 9
 9
 
 RH$$$$$$r_   	normalizeTFzoffset, kwd_namer<   r   Nr  c                    ||dini }d}d}t          | |||fi |          }t          | |||fi |          }	t          ||	j        j                  t          ||j        j                  z
  }
|	|z
  |
k    sJ d S )Nr8   r#  r$  r   )r   r   r%  )r    r~  kwd_namer!  r(  kwdsp1_dp2_dr   r   rR   s              r"   test_sub_n_gt_1_offsetsz&TestArithmetic.test_sub_n_gt_1_offsets  s     !) 4!}}"Dvva;;d;;<<<Dvva;;d;;<<<$RW\222VDrw|5T5T5TTRH$$$$$$r_   c           	      p   dD ]0}t          d|          }t          d|          }|t          j        d          z   |k    sJ t          j        d          |z   |k    sJ t          j        d          t          j        d          t          j                    t          j        dd          t          d          fD ]t}d	}t          j
        t          |
          5  ||z    d d d            n# 1 swxY w Y   t          j
        t          |
          5  ||z    d d d            n# 1 swxY w Y   u2dD ]}t          d|          }t          d|          }|t          j        d          z   |k    sJ t          j        d          |z   |k    sJ t          d|          }|t          j        d          z   |k    sJ t          j        d          |z   |k    sJ d                    ddg          }t          j        d          t          j        d          t          j                    t          j        dd          t          d          fD ]r}t          j
        t          |
          5  ||z    d d d            n# 1 swxY w Y   t          j
        t          |
          5  ||z    d d d            n# 1 swxY w Y   sdD ]}t          d|          }t          d|          }|t          j        d          z   |k    sJ t          j        d          |z   |k    sJ t          d|          }|t          j        d          z   |k    sJ t          j        d          |z   |k    sJ t          d|          }|t          j        dd          z   |k    sJ t          j        dd          |z   |k    sJ t          d|          }|t          j        dd          z   |k    sJ t          j        dd          |z   |k    sJ t          d|          }|t          d          z   |k    sJ t          d          |z   |k    sJ t          d|          }|t          d          z   |k    sJ t          d          |z   |k    sJ d                    ddg          }t          j        d          t          j        d          t          j                    t          j        d d!          t          d"          fD ]r}t          j
        t          |
          5  ||z    d d d            n# 1 swxY w Y   t          j
        t          |
          5  ||z    d d d            n# 1 swxY w Y   sd#D ]}t          d$|          }t          d%|          }|t          j        d          z   |k    sJ t          j        d          |z   |k    sJ t          d&|          }|t          j        d'          z   |k    sJ t          j        d'          |z   |k    sJ d(}t          d&|          }|t          j        d'd!          z   |k    sJ t          j        d'd!          |z   |k    sJ t          d)|          }|t          j        d*d          z   |k    sJ t          j        d*d          |z   |k    sJ t          d+|          }|t          d,-          z   |k    sJ t          d,-          |z   |k    sJ t          d.|          }|t          d d/0          z   |k    sJ t          d d/0          |z   |k    sJ d                    ddg          }t          j        d          t          j        d          t          j                    t          j        d1d          t          d"d23          fD ]r}t          j
        t          |
          5  ||z    d d d            n# 1 swxY w Y   t          j
        t          |
          5  ||z    d d d            n# 1 swxY w Y   sd S )4Nr/   r   3Ar  r   2013r   r9   m  r&   z<Input has different freq|Input cannot be converted to Periodr   r-   r   r   2011-03z2011-05z2012-03r   r  Input has different freq#Input cannot be converted to Periodr&   2Dr   r  z
2011-04-06   
2011-04-02r   
2011-04-03Q r  
2011-03-30rL  0   hoursrK  h   r   r  r  2011-04-01 09:00z2011-04-03 09:00z2011-04-01 12:00r8   zcannot use operands with typesz2011-04-01 10:00  z2011-04-01 11:00x   minutesz2011-04-05 12:00   r   rI    r   rA  rI  )r   r   r   	YearBegin
MonthBeginrP  r   r  r   r   r   r   r   r  rL   r   )r    r   r   r   or!   s         r"   test_add_offsetzTestArithmetic.test_add_offset(  s
   % 	 	DvD)))Ad+++Cwq)))S0000?1%%)S0000 !!$$"1%%  sC((#   U]#8DDD  EE              ]#8DDD  EE               & 	 	Dyt,,,A...Cw'***c1111#A&&*c1111...Cw'+++s2222#B''!+s2222((.9 C !!$$"1%%  sC((# 
 
 ]#8DDD  EE              ]#8DDD  EE              
 & ,	 ,	D|$///AD111Cw{1~~%,,,,;q>>A%,,,,D111Cw|B'''3....<##a'3....D111Cr~a---4444>!S))A-4444D111Cr~i555<<<<>)S11A5<<<<D111Cy}}$++++R==1$++++D111Cyr****c11112&&&*c1111((.9 C !!$$"1%%  q#&&### 
 
 ]#8DDD  EE              ]#8DDD  EE              
 & -	 -	D)555A+$777Cw{1~~%,,,,;q>>A%,,,,+$777Cw|A&#----<??Q&#----2C+$777Cr~a---4444>!S))A-4444+$777Cr~dC000C7777>$,,q0C7777+$777Cy----4444S)))A-4444+$777Cya5555<<<<!S111A5<<<<((.9 C !!$$"1%%  tS))B/// 
 
 ]#8DDD  EE              ]#8DDD  EE              
G-	 -	s   C//C36C3D''D+.D+1JJ
J)J;;J?J?$T66T:=T:U..U25U2_00_47_4`((`,/`,c           	      
   d                     ddg          }dD ]}t          d|          }|t          j        d          z
  t          d|          k    sJ t          j        d          t          j        d	          t          j                    t          j        d
d          t          d
          fD ]:}t          j        t          |          5  ||z
   d d d            n# 1 swxY w Y   ;dD ]}t          d|          }|t          j        d          z
  t          d|          k    sJ |t          j        d          z
  t          d|          k    sJ t          j        d          t          j        d	          t          j                    t          j        d
d          t          d
          fD ]:}t          j        t          |          5  ||z
   d d d            n# 1 swxY w Y   ;dD ]}t          d|          }|t          j        d          z
  t          d|          k    sJ |t          j        d          z
  t          d|          k    sJ |t          j        dd          z
  t          d|          k    sJ |t          j        dd          z
  t          d|          k    sJ |t          d          z
  t          d|          k    sJ |t          d          z
  t          d|          k    sJ t          j        d          t          j        d	          t          j                    t          j        dd           t          d!          fD ]:}t          j        t          |          5  ||z
   d d d            n# 1 swxY w Y   ;d"D ]}t          d#|          }|t          j        d          z
  t          d$|          k    sJ |t          j        d%          z
  t          d&|          k    sJ |t          j        d%d           z
  t          d&|          k    sJ |t          j        d'd          z
  t          d(|          k    sJ |t          d)*          z
  t          d+|          k    sJ |t          dd,-          z
  t          d.|          k    sJ t          j        d          t          j        d	          t          j                    t          j        d/d          t          d!d01          fD ]:}t          j        t          |          5  ||z
   d d d            n# 1 swxY w Y   ;d S )2Nr  r6  r7  r0  r  r   r   2009r9   r3  r&   r   r4  r5  r   r   z2010-03r8  r  r:  z
2011-03-27r   z
2011-03-31r>  r=  r  rL  r<  r?  r@  rK  rB  rC  rD  rE  z2011-03-30 09:00r8   z2011-04-01 06:00rF  z2011-04-01 08:00rG  rH  z2011-04-01 07:00rJ  rK  z2011-03-28 06:00rL  r   rM  )r  r   r   r   rN  rO  rP  r   r  r   r   r   r   r   rL   r   )r    r!   r   r   rP  s        r"   test_sub_offsetzTestArithmetic.test_sub_offset  s   hh*5
 
 & 	 	DvD)))Awq)))VF-F-F-FFFFF !!$$"1%%  sC((#   ]#8DDD  EE               & 	 	Dyt,,,Aw'***fYT.J.J.JJJJJw'+++vid/K/K/KKKKK !!$$"1%%  sC((#   ]#8DDD  EE               & 	 	D|$///Aw{1~~%4)H)H)HHHHHw|B'''6,T+J+J+JJJJJr~a---41P1P1PPPPPr~i555SW9X9X9XXXXXy}}$|$(G(G(GGGGGyr****f\.M.M.MMMMM !!$$"1%%  q#&&###   ]#8DDD  EE               & 	 	D)555Aw{1~~%0B)N)N)NNNNNw|A&&1C$*O*O*OOOOOr~a---8JQU1V1V1VVVVVr~dC000F"5 5 5     y----8JQU1V1V1VVVVVya5555": : :    
 !!$$"1%%  tS))B///   ]#8DDD  EE              	 	sH   C$$C(+C(G**G.1G.	NN"N=UUUr   r4  c                     t          d|          }t          |z
  t          u sJ |t          z
  t          u sJ t          |z   t          u sJ |t          z   t          u sJ d S )Nr   r   r   r   s      r"   test_period_addsub_natz%TestArithmetic.test_period_addsub_nat	  sr    YT*** SyCSyC SyCSyCr_   c                    t          dd          }|t          j                    z   }t          dd          }||k    sJ |t          j        d          z
  }t          dd          }||k    sJ d}t          j        t
          |          5  |t          j        d          z    d d d            n# 1 swxY w Y   t          j        t
          |          5  |t          j        d          z
   d d d            d S # 1 swxY w Y   d S )	Nr  r&   r   r;  r   r>  z-Input cannot be converted to Period\(freq=D\)r   )r   r   rL   r   r   r   r   )r    r   r   r   r!   s        r"   test_period_ops_offsetz%TestArithmetic.test_period_ops_offset  s   <c***W[]]"\,,,}}}}W[^^#\,,,}}}}>]0<<< 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ]0<<< 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s$   B22B69B6C==DD)r   r   r   r   r   r   r  r  r  r	  r  boxesr  r  r   r'  r   r   r   r   Weekr.  rQ  rT  rV  rX  r   r_   r"   r  r    sI       [V%A%A%ABB
 
 CB
/ / /         & [224K4KLE
)
)
)C[VU44[VU44" " 54 54"2
/ 
/ 
/ [S,,,//	% 	% 0/	% [[4-88[S,,,//[_g&1t$\9%		
 
% 
%  0/ 98
%N N N`O O Ob [V%6%6%677	  	  87	          r_   r  c                  &   d} t          d          }t          j        t          |           5  d|_        d d d            n# 1 swxY w Y   |j        }t          j        t          |           5  d|z  |_        d d d            d S # 1 swxY w Y   d S )Nznot writable2014Q1r   r  r   )r   r   r   AttributeErrorrH   r   )r!   rY   r   s      r"   test_period_immutabler^  '  s   
C


C	~S	1	1	1                 8D	~S	1	1	1  t8                 s#   AAA.BB
B
c                  Z    t          dd          } | j        dk    sJ | j        dk    sJ d S )Nz
0001-01-07r&   r9   r  )r   r;   r=   )r  s    r"   test_small_year_parsingr`  4  s3    ,$$D9>>>>8q======r_   c                     g d} t          dd          }| D ]$}t          |                    |                     %| D ]/}t          d|          }t          |           |j        dk    sJ 0t	          j        t          t                    5  t          dd          }d d d            n# 1 swxY w Y   t          |           t          dd          }t          |           d S )	N)r/   r-   r2   r&   r   r   r   r   r&   r   rJ  r   rb   r  )r   r8  rj   r;   rf   rg   rh   ri   )rz  r   r   s      r"   test_negone_ordinalsrb  :  s6   ///EBS)))F " "V]]4  !!!! # #...V{d"""""		#M	B	B	B . .---. . . . . . . . . . . . . . .LLLBS)))FLLLLLs   B--B14B1c                      d} t          j        t          |           5  t          dd           d d d            d S # 1 swxY w Y   d S )Nz3Invalid frequency: <WeekOfMonth: week=0, weekday=0>r   z
2012-01-02zWOM-1MONr   )r   r   r(   r   )r!   s    r"   $test_invalid_frequency_error_messagerd  M  s    
?C	z	-	-	- . .|*----. . . . . . . . . . . . . . . . . .s   =AA))r   r   r   numpyr   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_testingrf   ri   r   r   rD  r  r  r  r^  r`  rb  rd  r   r_   r"   <module>rn     s                               @ ? ? ? ? ? 6 6 6 6 6 6       
                       0i i i i i i i iXi$ i$ i$ i$ i$ i$ i$ i$X}
 }
 }
 }
 }
 }
 }
 }
@
? ? ? ? ? ? ? ?[. [. [. [. [. [. [. [.|A  A  A  A  A  A  A  A H
 
 
    &. . . . .r_   