
    bMhA                     ~    d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZ  G d d          Z G d d          ZdS )	    )	timedeltaN)IncompatibleFrequency)NaTPeriod	Timedelta	Timestampoffsetsc            
       <   e Zd Zd Zd Zd Z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ej	        
                    dg d          d             Zd Zd ZdS )TestPeriodArithmeticc                    t           j                            d          }d                    ddg          }t	          j        t          |          5  |dz    d d d            n# 1 swxY w Y   d}t	          j        t          |          5  |t          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 )Nns|z)Python int too large to convert to C longzint too big to convertmatch   zvalue too large)
r   max	to_periodjoinpytestraisesOverflowErrorr   r	   Nano)selfpermsgs      j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/scalar/period/test_arithmetic.pytest_add_overflow_raisesz-TestPeriodArithmetic.test_add_overflow_raises   s   m%%d++hh;(
 
 ]=444 	 	!GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  ]=444 	 	)A,,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]=444 	" 	"',q//!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s6   A$$A(+A(B++B/2B/C66C:=C:c                 ~    t          dddd          }t          dddd          }|dz   |k    sJ d|z   |k    sJ d S )ND  r   freqyearmonthday   r   )r   per1per2s      r   test_period_add_integerz,TestPeriodArithmetic.test_period_add_integer&   s^    3T:::3T:::ax44x4    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    r   r!   r&   r   )zunsupported operand type\(s\)zcan only concatenate strzmust be str, not Periodr   str)r   r   r   r   	TypeError)r   r(   r)   r   s       r   test_period_add_invalidz,TestPeriodArithmetic.test_period_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                    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2011Yr"   2007   z4Input has different freq=M from Period\(freq=Y-DEC\)r   z2007-01Mr   r"   r   r   r   )r   leftrightresultr   s        r   test_period_sub_period_annualz2TestPeriodArithmetic.test_period_sub_period_annual?   s    V#...vC0H0H0HeUZ''''E]0<<< 	/ 	/6)#.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A77A;>A;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 )N
2011-01-01r   r3   z
2011-01-15i   z0Input has different freq=M from Period\(freq=D\)r   z2011-02r6   r7   )r   r(   r)   offr   s        r   test_period_sub_periodz+TestPeriodArithmetic.test_period_sub_periodH   s    l---l---id{cCi''''d{b3h&&&&A]0<<< 	/ 	/6)#.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   #BB	B	n)r   r&      r5   c                 &   t          d ||                    }t          d ||                    }t          t          |          |j        j                  t          t          |          |j        j                  z
  }||z
  |k    sJ d S )N19910905r3   19920406)r   r-   r"   base)r   tick_classesrA   p1p2expecteds         r   test_sub_n_gt_1_ticksz*TestPeriodArithmetic.test_sub_n_gt_1_ticksT   s     J\\!__555J\\!__555#b''555GG"',9
 9
 9
 
 RH$$$$$$r+   	normalizeTFzoffset, kwd_namer$   startingMonthNweekdayc                    ||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 )NrB   rD   rE   r3   )r   r"   rF   )r   offsetkwd_namerA   rL   kwdsp1_dp2_drH   rI   rJ   s              r   test_sub_n_gt_1_offsetsz,TestPeriodArithmetic.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r2   2Y3Yr1   r3   2013r&   r   m  r   z<Input has different freq|Input cannot be converted to Periodr   r6   2M3M2011-03z2011-05z2012-03   r   Input has different freq#Input cannot be converted to Periodr   2D3D
2011-04-01z
2011-04-06   
2011-04-02   
2011-04-03Q s
2011-03-300   hoursr5   h   rr   2h3h2011-04-01 09:00z2011-04-03 09:00z2011-04-01 12:00rB   zcannot use operands with typesz2011-04-01 10:00  z2011-04-01 11:00x   minutesz2011-04-05 12:00   daysr{        rq   r{   )r   r	   YearEnd	YearBegin
MonthBeginMinutenptimedelta64r   r   r   r   MonthEndr   DayHour)r   r"   r   expr?   r   s         r   test_period_add_offsetz+TestPeriodArithmetic.test_period_add_offsetw   s
   % 	 	Dd+++Cd+++C+++s2222?1%%+s2222 !!$$"1%%  sC((#   U]#8DDD  #II              ]#8DDD  #II               & 	 	D...C...C)!,,,3333#A&&,3333...C)"---4444#B''#-4444((.9 C !!$$"1%%  sC((# 
 
 ]#8DDD  #II              ]#8DDD  #II              
 & ,	 ,	DD111CD111CQ'3....;q>>C'3....D111Cb)))S0000<##c)S0000D111C3///36666>!S))C/36666D111C	37773>>>>>)S11C73>>>>D111C2&#----R==3&#----D111C,,,,33332&&&,3333((.9 C !!$$"1%%  q#&&### 
 
 ]#8DDD  #II              ]#8DDD  #II              
 & -	 -	D+$777C+$777CQ'3....;q>>C'3....+$777Ca(C////<??S(C////2C+$777C3///36666>!S))C/36666+$777Cc222c9999>$,,s2c9999+$777C3////36666S)))C/36666+$777C377773>>>>!S111C73>>>>((.9 C !!$$"1%%  tS))B/// 
 
 ]#8DDD  #II              ]#8DDD  #II              
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   ra   rb   rW   r1   r3   r&   2009r   r[   r   r   r\   r_   2011-01r`   z2010-03rc   rf   rg   z
2011-03-27ri   z
2011-03-31rm   rk   rl   rn   rj   ro   rp   r5   rr   rs   rt   rw   z2011-03-30 09:00rB   z2011-04-01 06:00rx   z2011-04-01 08:00ry   rz   z2011-04-01 07:00r|   r}   z2011-03-28 06:00r   r   r   )r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r"   r   r?   s        r   test_period_sub_offsetz+TestPeriodArithmetic.test_period_sub_offset  s   hh*5
 
 & 	 	Dd+++C+++vf4/H/H/HHHHH !!$$"1%%  sC((#   ]#8DDD  #II               & 	 	D...C)!,,,yt0L0L0LLLLL)"---	1M1M1MMMMM !!$$"1%%  sC((#   ]#8DDD  #II               & 	 	DD111CQ'6,T+J+J+JJJJJb)))VLt-L-L-LLLLL3///6,T3R3R3RRRRR	377764< < <     2&&D*I*I*IIIII,,,,|$0O0O0OOOOO !!$$"1%%  q#&&###   ]#8DDD  #II               & 	 	D+$777CQ'62D4+P+P+PPPPPa(F3ED,Q,Q,QQQQQ3///6:LSW3X3X3XXXXXc222f"7 7 7     3////6:LSW3X3X3XXXXX377776"< < <    
 !!$$"1%%  tS))B///   ]#8DDD  #II              	 	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   r3   )r   r   )r   r"   r   s      r   test_period_addsub_natz+TestPeriodArithmetic.test_period_addsub_natZ  st     YT*** SyCSyC SyCSyCr+   unit)r   usmsrl   mc                    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   zunsupported operandr   )r   r   r   r   r   r   r.   )r   r   r   nats       r   test_period_add_sub_td64_natz1TestPeriodArithmetic.test_period_add_sub_td64_natg  s     \3''nUD))SyCSyCSyC]9,ABBB 	 	#II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +A>>BB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 )	Nrf   r   r3   rh   r&   rm   z-Input cannot be converted to Period\(freq=D\)r   )r   r	   r   r   r   r   r   )r   r   r:   r   r   s        r   test_period_ops_offsetz+TestPeriodArithmetic.test_period_ops_offsett  s   \,,,w{}}$\,,,}}}}w{1~~%\,,,}}}}>]0<<< 	" 	"',q//!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" ]0<<< 	" 	"',q//!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s$   B22B69B6C==DDc                 0   t          d          }t          dd          }d}t          j        t          |          5  ||z    d d d            n# 1 swxY w Y   d}t          j        t          |          5  ||z    d d d            d S # 1 swxY w Y   d S )N2017r6   r3   z>unsupported operand type\(s\) for \+: 'Timestamp' and 'Period'r   z>unsupported operand type\(s\) for \+: 'Period' and 'Timestamp')r   r   r   r   r.   )r   tsr   r   s       r    test_period_add_timestamp_raisesz5TestPeriodArithmetic.test_period_add_timestamp_raises  s#   vV#&&&O]9C000 	 	HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 P]9C000 	 	"HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA8BBB)__name__
__module____qualname__r   r*   r/   r;   r@   r   markparametrizerK   r	   r   
QuarterEndr   WeekrU   r   r   r   r   r   r    r+   r   r   r      s       " " "(       &/ / /
/ 
/ 
/ [S,,,//	% 	% 0/	% [[4-88[S,,,//[_g&1t$\9%		
 
% 
%  0/ 98
%N N N`Q Q Qf [V%6%6%677
  
  87
  [V%A%A%ABB
 
 CB
" " ""    r+   r   c            
           e 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    rJ ||k    sJ ||k     sJ ||k    sJ ||k    rJ ||k    rJ d S )N2000-01r6   z2000-02r'   )r   janfebs      r    test_period_comparison_same_freqz6TestPeriodComparisons.test_period_comparison_same_freq  sr    Y$$Y$$#::::czzzzSyyyyczzzz9999#::::::r+   c                     t          dd          }t          dd          }||k    sJ ||k    sJ ||k    sJ ||k     rJ ||k    rJ d S Nr   r6   r'   )r   r8   r9   s      r   3test_period_comparison_same_period_different_objectzITestPeriodComparisons.test_period_comparison_same_period_different_object  se    i%%y#&&u}}}}u}}}}u}}}}%<<<<%<<<<<<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   r6   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_period_comparison_mismatched_freqz<TestPeriodComparisons.test_period_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   r6   r   z'(Period|int)'z#not supported between instances of z and r   )r   r   r   r.   )r   r   
int_or_perr   r8   r9   s         r   #test_period_comparison_invalid_typez9TestPeriodComparisons.test_period_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          }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   r3   )r   r   r   )r   r   r   r8   r9   s        r   test_period_comparison_natz0TestPeriodComparisons.test_period_comparison_nat  s    \,,,|$$ #J#J"II	
 	% 	%KD% e||||e||||u}}}}5====u}}}}u}}}}}	% 	%r+   zzerodim_arr, expectedr   Fr   r6   Tc                 N    t          dd          }||k    |u sJ ||k    |u sJ d S r   r'   )r   zerodim_arrrJ   r   s       r   (test_period_comparison_numpy_zerodim_arrz>TestPeriodComparisons.test_period_comparison_numpy_zerodim_arr  sE    
 Y$${"x////s"x//////r+   N)r   r   r   r   r   r   r   r   r   r   r   r   arrayr   r   r   r+   r   r   r     s        	 	 		  	  	      $% % %$ [
"(1++u		3)?)? @ @$GH 0 0	 0 0 0r+   r   )datetimer   numpyr   r   pandas._libs.tslibs.periodr   pandasr   r   r   r   r	   r   r   r   r+   r   <module>r      s               < < < < < <                    DS0 S0 S0 S0 S0 S0 S0 S0 S0 S0r+   