
    d                     V   d dl mZm Z mZ d dlZd dlZd dlmZmZ	 d dl
mZmZ d dlmZ d dlmZ d dlmZmZ d dlZd dlmZmZmZmZmZ d dlmZ  G d	 d
          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offsetsc                      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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                 @   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 datetimematchDfreq)r   to_numpypytestraises
ValueErrorr   )selftdmsgs      b/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/scalar/period/test_period.py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)Minr3   )	r   nowr   r   Dayr   r   r   	TypeError)r    i1i2i3i4i5expectedr"   s           r#   test_constructionz(TestPeriodConstruction.test_construction0   s3   JS)))JRxxxxF%%%F^^F%%%RxxxxRxxxxF%%%F%%%RxxxxRxxxxZ__HLNN---Z__RxxxxRxxxxZ__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   J44J8;J8K::K>K> L??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_nanosv   s    677Rd### Rxxxx wd&&&!!x4    c                    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 S )N3/10/12Br   r   z3/11/12z3/12/12b  r2   
   r4   )r   asfreq)r    rH   rI   rJ   s       r#   test_construction_bdayz-TestPeriodConstruction.test_construction_bday   s    IC(((IC(((RYYs^^####IC(((RYYs^^####IC(((RYYs^^####IC(((RxxxxQBS999IC(((RxxxxxxrZ   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 )Nr1   r3   r,   r5   quarterr   r&   r   r2   z9/1/20052005Q12005q105Q105q11Q20051q20051Q051q054Q1984i  4q1984r   r5   )r    rH   rI   rJ   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{{{{{{rZ   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   200701rA   rB   r   I  r:   r3   
2007-01-012007-01-01 00:00:002007-01-01 00:00:00.000)r   r5   r   r   np
datetime64r    rM   rH   rI   rJ   rK   rL   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RxxxxxxrZ   c                 J	   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          dt          j                              t          dd          k    sJ 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          dddt          j                              t          dddd          k    sJ t          dd          }t          d	dd
t          j        d                    |k    sJ t          d	dd
d          |k    sJ t          dddt          j        d                    t          dd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 |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\   r]   r   r1   r3      )startingMonthrd   r,      r2   r4   r_   r`   z
2005-03-013D3BrA   rv   rw   r:   ru   rx   ry   rz   r9   r;   r   r<   r=   r>   r?   r@   )r   r   MonthEndYearEndBusinessDayrF   
QuarterEndBDayr5   r   r   r{   r|   r}   s          r#   test_period_constructor_offsetsz6TestPeriodConstruction.test_period_constructor_offsets   sU   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ig&9&;&;<<<CA
 A
 A
 
 
 
 
 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
 
 
 
 
 4qbw|~~FFF&QBSK
 K
 K
 
 
 
 
 ,T2224qagk!nnEEEQQQQ4qad;;;xGGGG4qbw|AGGG6QBTL
 L
 L
 
 
 
 
 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~~~~~~rZ   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 integerrv   z?Only value or ordinal but not both should be given but not bothr   r3   )rB   valuer   z%If value is None, freq cannot be None)r6   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   rE   r   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 )Nrt   2Mr   r:   r3   )r5   r6   r   rx   r   r)   2007r   r   )r    rM   presultexps        r#   test_constructor_cornerz.TestPeriodConstruction.test_constructor_corner9  s    )$///4qt444@@@@d||s""""<c***$$$V#&&&}}}}}}rZ   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 )Nrx   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   s     r#   test_constructor_infer_freqz2TestPeriodConstruction.test_constructor_infer_freqE  s    <  v}}}}?##v}}}}%&&v}}}}())v}}}},--v}}}} /00v}}}}/00v}}}}}}rZ   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-DECzA-DECr   r3   )r   rB   freqstrr   r   r   )r    result1result2s      r#   test_multiplesz%TestPeriodConstruction.test_multiples]  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)<<<<<<<rZ   r6   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   strrQ   r    r6   r   r   stampr   s         r#   test_period_cons_quarterlyz1TestPeriodConstruction.test_period_cons_quarterlyk  s     E||XD)))3s88####  % 005t$$$Cxxxx  5 115t$$$CxxxxxxrZ   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      )daysr3   )r   rQ   r   
isinstancer   s         r#   test_period_cons_annualz.TestPeriodConstruction.test_period_cons_annualy  s     E||V$'''  % 009"3E3E3EE5t$$$C!G||||!V$$$$$$$rZ   r7   numr`      c                     d| }d| }t          ||          }t          |d                              |          }||k    sJ t          |t                     sJ d S )Nz2011-02-zW-r   r   )r   ra   r   )r    r   r7   daystrr   r   rM   s          r#   test_period_cons_weeklyz.TestPeriodConstruction.test_period_cons_weekly  s{     "C!!CzzT***&s+++22488!!!!&&)))))))rZ   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    rT   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_ordinalrB   r   r    r   ress      r#   test_period_from_ordinalz/TestPeriodConstruction.test_period_from_ordinal  sT    93'''"193777Cxxxx#v&&&&&&&rZ   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   rT   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,,,czzzzzzrZ   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CxxxxxxrZ   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'   r2   r3   z;Frequency must be positive, because it represents span: -3Mr   z-3Mz:Frequency must be positive, because it represents span: 0M0M)	r   rB   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   r3   rv      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   rB   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
.000000001r3   )z
.000000999  )z
.123456789i  )z
.999999999r   )z
.999999000r   )z.999999001123r3   )z.999999001123456r3   )z.999999001123456789r3   c                 P    t          ||z   |z             j        j        |k    sJ d S N)r   
start_time
nanosecond)r    r7   r   	sec_floatrM   s        r#   "test_period_constructor_nanosecondz9TestPeriodConstruction.test_period_constructor_nanosecond%  s2    & cDj9,--8CxOOOOOOrZ      c                 H    t          d|z   d          }|j        |k    sJ d S )Ni ' 1Hrv   )r   r   )r    r   r   s      r#   test_period_large_ordinalz0TestPeriodConstruction.test_period_large_ordinal:  s-     7T>555v~~~~~~rZ   N)__name__
__module____qualname__r$   rN   rY   rb   rr   r~   r   r   r   r   r   r   markparametrizer	   r   r   r   ranger   r   r   r   r   r   r   r   r    rZ   r#   r   r   $   s       	! 	! 	!D, D, D,L       "! ! !F  8C C CJ% % %>
 
 
  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/  rZ   r   c                       e Zd Zd Zd Zd Zd Zd Zej	        
                    dg d          ej	        
                    dg d	          d
                         Zd Zd Zd Zd Zd ZdS )TestPeriodMethodsc                 \    t          d          }t          j        |          }||k    sJ d S )N2000Q1)r   tmround_trip_pickle)r    r   new_ps      r#   test_round_tripz!TestPeriodMethods.test_round_tripC  s0    8$Q''zzzzzzrZ   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_hashH  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UrZ   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-01r3   rP   Er   
2011-04-01r   rQ   r   r   )r    r   rM   s      r#   test_to_timestamp_multz(TestPeriodMethods.test_to_timestamp_multT  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2rZ   c                    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 )Nr.   r)   r   r   r   )sStarTBEGInr   r   r   )er   FINIsH)	r)   r,   r'   Wr]   r   r   rD   r   c                     | j         dk    r| j        t          dd          z   S t          | | j         z   j        j        dz
            S )Nr]   r3   r   )r   nanoseconds)r   r   r   r   _value)r   s    r#   _exz0TestPeriodMethods.test_to_timestamp.<locals>._exp  sF    v}}|iQB&G&G&GGGa!&j4;a?@@@rZ   1985r   r   i  r3   rP   3Hr   2Ti  start5S)r   rQ   	to_periodr   end_timer   r   r   )r    r   start_tsaliasesr*   end_tsfrom_lstr  fcoder   rM   s              r#   test_to_timestampz#TestPeriodMethods.test_to_timestamp_  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!!!!!!rZ   c                     t          dd          }|                    dd          }t          d          t          d          z
  }||k    sJ d S )N
1990-01-05r]   r   r   
1990-01-06r3   r
  r   r    rT   r   rM   s       r#   test_to_timestamp_business_endz0TestPeriodMethods.test_to_timestamp_business_end  s]    \3''!!#3!//\**Y1-E-E-EE!!!!!!rZ   zts, expected)	)z1970-01-01 00:00:00r   )z1970-01-01 00:00:00.000001r3   )z1970-01-01 00:00:00.00001r`   )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usrP   c                 f    t          |                              |          j        }||k    sJ d S )Nr   )r   rQ   microsecond)r    rS   rM   r   r   s        r#   test_to_timestamp_microsecondz/TestPeriodMethods.test_to_timestamp_microsecond  s:    " ((d(33?!!!!!!rZ   c                     t          d          }dt          |          v sJ t          d          }dt          |          v sJ d S )NzJan-20002000-01z
2000-12-15r   reprr   s     r#   	test_reprzTestPeriodMethods.test_repr  sP    :DGG####<  tAww&&&&&&rZ   c                 r    t          dd          }t          t                    t          |          v sJ d S )Nr   r'   r   )r   r'  r   r   s     r#   test_repr_natzTestPeriodMethods.test_repr_nat  s7    5s###CyyDGG######rZ   c                 N    t          d          }t          |          dk    sJ d S )Nz2000-01-01 12:15:02.123z&Period('2000-01-01 12:15:02.123', 'L')r&  r   s     r#   test_millisecond_reprz'TestPeriodMethods.test_millisecond_repr  s.    ,--AwwBBBBBBBrZ   c                 N    t          d          }t          |          dk    sJ d S )Nz2000-01-01 12:15:02.123567z)Period('2000-01-01 12:15:02.123567', 'U')r&  r   s     r#   test_microsecond_reprz'TestPeriodMethods.test_microsecond_repr  s.    /00AwwEEEEEEErZ   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#######rZ   N)r   r   r   r   r   r  r  r  r   r   r   r#  r(  r*  r,  r.  r1  r   rZ   r#   r   r   B  s         
V V V	3 	3 	3=" =" ="~" " " [
	
 
	
 
	
  [V%7%7%788" " 98 "' ' '$ $ $C C C
F F F
$ $ $ $ $rZ   r   c                   0   e Zd ZdZej                            dg d          d             Zd Zd Z	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>!!!!!rZ   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   Q-DECrv        r2   r'      )r   r5   re   r   r6   r   s     r#    test_quarterly_negative_ordinalsz5TestPeriodProperties.test_quarterly_negative_ordinals  s    2G,,,v~~~~yA~~~~!V$$$$$2G,,,v~~~~yA~~~~!V$$$$$2C(((v~~~~w"}}}}!V$$$$$$$rZ   c                 ~    t          dd          }|j        t          j                    k    sJ |j        dk    sJ d S )Nr.   rD   r   r   )r   r   r   Minuter   )r    rH   s     r#   test_freq_strz"TestPeriodProperties.test_freq_str  sH    F'''w'.******zS      rZ   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Mthr6   monthly)BUSBUSINESS
BUSINESSLYWEEKDAYbus)DAYDLYDAILYrF   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'   r]   r   r   r   r   r=   r@   Nr   z2016-03-01 09:00r   r3   rv   )r   itemsr   r   r   r   r   )r    casesr"   r   freqsr   r   r   s           r#   test_period_deprecated_freqz0TestPeriodProperties.test_period_deprecated_freq  s   G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   )r5   r6   r7   r   rX  r`  r   )r   r5   r6   r7   r   rX  r`  )boundoffsets     r#   _period_constructorz(TestPeriodProperties._period_constructor  s?    +	<<&(
 
 
 	
rZ   zbound, offsetr   r3   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   )r3  rp  r   r   r
   getattr)r    rn  ro  rq  r   s        r#   $test_outer_bounds_start_and_end_timez9TestPeriodProperties.test_outer_bounds_start_and_end_time(  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   r3   )unit)r3  rp  rQ   roundrs  r   floor)r    rn  ro  rq  r   rM   s         r#   $test_inner_bounds_start_and_end_timez9TestPeriodProperties.test_inner_bounds_start_and_end_time0  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FrZ   c                 "   g d}t          ddd          }|D ] }t          d|          }|j        |k    sJ !t          dd          j        t          ddd          k    sJ t          dd          j        t          d	d
d          k    sJ d S )N)r)   r,   r'   r   r   r   r   r_   r3   2012r   r]   r   r  i  r      )r   r   r   )r    freq_lstxpfr   s        r#   test_start_timez$TestPeriodProperties.test_start_time:  s    666dAq!! 	& 	&AvA&&&A<2%%%%%f3'''2htQ6J6JJJJJf3'''2htR6L6LLLLLLLrZ   c                 n   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          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          dd          } |dddd          }||j        k    sJ d S )Nr{  r)   r   c                  ~    t          t          t          |                                d          j        dz
            S NrP   r3   r   r   as_unitr  argss    r#   r  z/TestPeriodProperties.test_end_time.<locals>._exF  2    Yx77??EELqPQQQrZ     r3   r,   r_   r;  r'   r   r   r   r]   r2   r  15D   r   r   r   r  )r    r   r  r~  s       r#   test_end_timez"TestPeriodProperties.test_end_timeC  sH   6$$$	R 	R 	R Sq!__QZ6$$$Sq!__QZ6$$$Sq!__QZ6$$$Sq!__QZ6$$$Sq!QQZ6$$$Sq!__QZ6$$$Sq!__QZ 6&&&Sq"QZ6'''Sq!QQZ6'''Sq!QQZrZ   c                     t          dd          }|j        }t          d          t          d          z
  }||k    sJ d S )Nr  r]   r  r3   r  )r   r  r   r   r  s       r#   test_end_time_business_fridayz2TestPeriodProperties.test_end_time_business_fridayq  sL    \3''\**Y1-E-E-EE!!!!!!rZ   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>._exz  r  rZ   z2013-1-1zW-SATr  r3      r  )r    r  r   r~  s       r#   test_anchor_week_end_timez.TestPeriodProperties.test_anchor_week_end_timey  sO    	R 	R 	R :w''Sq!__zRrZ   c                 B    t          dd          }|j        dk    sJ d S )Nr)   r:   )r   r5   rp   )r    a_dates     r#   test_properties_annuallyz-TestPeriodProperties.test_properties_annually  s-    St,,,{d""""""rZ   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 )Nr9  r:   r3   )r   r5   re   zQ-JANzQ-JUNr2   )r   r   qyearre   )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 	1rZ   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:   r3   )r   r5   r6   r=  r2   r;  r  r      r;   r`   r   )r   r   r5   re   r6   )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*****	+ 	+rZ   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:   r3   r  r   r5   r6   r7   4      r_   r      )r   r5   re   r6   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NrZ   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:   r3   r  r  r  r  r_   r   r  r   WK)
r   r5   re   r6   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                 6   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 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]   r:   r3   r  r   r  r_   r   r  r   )r   r5   re   r6   r7   weekday	dayofyearr  )r    b_dated_dates      r#   test_properties_dailyz*TestPeriodProperties.test_properties_daily  s   St1!<<<{d""""~""""|q    zQ~""""1$$$$#r))))3T:::HBNNNNSt1!<<<{d""""~""""|q    zQ~""""1$$$$#r))))3T:::HBNNNNNNrZ   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:   r3   r   )r   r5   r6   r7   r   2Hr  r_   r   r  )	r   r5   re   r6   r7   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	 	rZ   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 )NrD   r:   r3   r   )r   r5   r6   r7   r   rX  r  r   r_   r   r  )	r   re   r6   r7   r  r  r   rX  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     rZ   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 )
NrD   r:   r3   r   )r   r5   r6   r7   r   rX  r`  r  r_   r   r  )r   r5   re   r6   r7   r  r  r   rX  r`  r  )r    s_dates     r#   test_properties_secondlyz-TestPeriodProperties.test_properties_secondly  s)   T!A
 
 
 {d""""~""""|q    zQ~""""1$$$${a}!!!!}!!!!#r))))QAAaPQ       rZ   N)r   r   r   __doc__r   r   r   r7  r>  rA  rl  staticmethodrp  r   r/   maxrt  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rZ   r#   r3  r3    s3       ??[V%9%9%9::" " ;:"% % % ! ! !
* * *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0  $
 
 
"
 
 
 
 
rZ   r3  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   r3   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   rZ   r#   r  r    s#        ? ? ? ? ?rZ   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_object  se    i%%y#&&u}}}}u}}}}u}}}}%<<<<%<<<<<<rZ   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_freq$  sr    Y$$Y$$#::::czzzzSyyyyczzzz9999#::::::rZ   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  r7   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'   r3   z'(Period|int)'z#not supported between instances of z and r   )r   r   r   rG   )r    r  
int_or_perr"   r  r  s         r#   test_comparison_invalid_typez2TestPeriodComparisons.test_comparison_invalid_type?  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_periodsQ  sb    Y$$Y$$Y$$S/sCg.000000rZ   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_natY  s    <c***l## !HH!HH	
 	% 	%KD% e||||e||||u}}}}5====u}}}}u}}}}}	% 	%rZ   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_arrrM   r   s       r#   !test_comparison_numpy_zerodim_arrz7TestPeriodComparisons.test_comparison_numpy_zerodim_arrk  sE    
 9c""[ X----q X------rZ   N)r   r   r   r  r  r  r  r  r  r   r   r   r{   arrayr   r  r   rZ   r#   r  r    s        	  	  	 	 	 	     $1 1 1% % %$ [
"(1++u		3)?)? @ @$GH . .	 . . .rZ   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 )#TestArithmeticrv  )rP   r   msr  r+   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   rG   )r    rv  rT   r   s       r#   test_add_sub_td64_natz$TestArithmetic.test_add_sub_td64_natw  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   r;  z4Input has different freq=M from Period\(freq=A-DEC\)r   rt   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     r3   r  r   r  )r    per1rW   s      r#   test_add_integerzTestArithmetic.test_add_integer  s^    3T:::3T:::ax44x4rZ   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#~~~~~~rZ   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  r3   r  r   |)zunsupported operand type\(s\)zcan only concatenate strzmust be str, not Periodr   r   )r   joinr   r   rG   )r    r  rW   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 rZ   c                 ,    t          j        | g          S r   )pdSeriesr  s    r#   r  zTestArithmetic.<lambda>  s    BIqcNN rZ   c                 ,    t          j        | g          S r   )r  Indexr  s    r#   r  zTestArithmetic.<lambda>  s    bhsmm rZ   )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   rG   )r    r  r	  rS   rT   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  rW   offr"   s        r#   test_subzTestArithmetic.test_sub  s    l---l---id{cCi''''d{b3h&&&&A]0<<< 	/ 	/6)#.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   #BB	B	n)r3   r   r2   r;  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   rM   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$$$$$$rZ   	normalizeTFzoffset, kwd_namer6   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 )Nr2   r  r  r   )r   r   r  )r    ro  kwd_namer  r  kwdsp1_dp2_dr   r   rM   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$$$$$$rZ   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   r3   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-30r<  0   hoursr;  h   r   r  r  2011-04-01 09:00z2011-04-03 09:00z2011-04-01 12:00r2   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   r3  r;  )r   r   r   	YearBegin
MonthBeginr@  r{   r  r   r   r   r   r   r  rF   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  r(  r)  r"  r  r   r   2009r3   r%  r   r   r&  r'  r   r   z2010-03r*  r   r,  z
2011-03-27r   z
2011-03-31r0  r/  r  r<  r.  r1  r2  r;  r4  r5  r6  r7  z2011-03-30 09:00r2   z2011-04-01 06:00r8  z2011-04-01 08:00r9  r:  z2011-04-01 07:00r<  r=  z2011-03-28 06:00r>  r   r?  )r  r   r   r   r@  rA  r@  r{   r  r   r   r   r   r   rF   r   )r    r"   r   r   rB  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   r&  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rZ   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   r0  z-Input cannot be converted to Period\(freq=D\)r   )r   r   rF   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   rC  rF  rH  rJ  r   rZ   r#   r  r  v  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	          rZ   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   AttributeErrorrB   r   )r"   rT   r   s      r#   test_period_immutablerP    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   r3   r  )r   r5   r7   )r  s    r#   test_small_year_parsingrR    s3    ,$$D9>>>>8q======rZ   c                  b   g d} t          dd          }| D ]$}t          |                    |                     %| D ]/}t          d|          }t          |           |j        dk    sJ 0t          dd          }t          |           t          dd          }t          |           d S )N)r)   r'   r,   r   r   r   r   r   r   rv   r:  r]   r  )r   r'  ra   r5   )rk  r   r   s      r#   test_negone_ordinalsrT    s    ///EBS)))F " "V]]4  !!!! # #...V{d"""""BS)))FLLLBS)))FLLLLLrZ   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_messagerV    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_testingr   r   r   r3  r  r  r  rP  rR  rT  rV  r   rZ   r#   <module>r`     s                               @ ? ? ? ? ? 6 6 6 6 6 6       
                       [ [ [ [ [ [ [ [|T$ T$ T$ T$ T$ T$ T$ T$nu
 u
 u
 u
 u
 u
 u
 u
p	? ? ? ? ? ? ? ?[. [. [. [. [. [. [. [.|A  A  A  A  A  A  A  A H
 
 
    $. . . . .rZ   