
    A[gA                     p    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y)	    )	timedeltaN)IncompatibleFrequency)NaTPeriod	Timedelta	Timestampoffsetsc            
       J   e Zd Zd Zd Zd Zd Zd Zej                  j                  dg d      d        Zej                  j                  d	d
dg      ej                  j                  dg d      ej                  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                  j                  dg d      d        Zej                  j                  dg d      d        Zd Zd Zy)TestPeriodArithmeticc                    t         j                  j                  d      }dj                  ddg      }t	        j
                  t        |      5  |dz    d d d        d}t	        j
                  t        |      5  |t        d      z    d d d        t	        j
                  t        |      5  |t        j                  d      z    d d d        y # 1 sw Y   zxY w# 1 sw Y   RxY w# 1 sw Y   y xY w)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      e/var/www/html/bid-api/venv/lib/python3.12/site-packages/pandas/tests/scalar/period/test_arithmetic.pytest_add_overflow_raisesz-TestPeriodArithmetic.test_add_overflow_raises   s    mm%%d+hh;(
 ]]=4!G 5  ]]=4)A, 5]]=4',,q/! 54 54 5444s$   C9C+C%CC"%C.c                 h    t        dddd      }t        dddd      }|dz   |k(  sJ d|z   |k(  sJ y )ND  r   freqyearmonthday   r   )r   per1per2s      r   test_period_add_integerz,TestPeriodArithmetic.test_period_add_integer&   sF    3T:3T:ax44x4    c                    t        dddd      }t        dddd      }dj                  g d      }t        j                  t        |      5  |d	z    d d d        t        j                  t        |      5  d	|z    d d d        t        j                  t        |      5  ||z    d d d        y # 1 sw Y   \xY w# 1 sw Y   ?xY w# 1 sw Y   y xY w)
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5L 1]]9C0DL 1]]9C04K 10	 100000s$   B.6B:C.B7: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        y # 1 sw Y   y xY w)
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?   sg    V#.vC0HeUZZ'''E]]0<6)#.. =<<s   A++A4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        y # 1 sw Y   y xY w)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-iid{cCi'''d{b3h&&&A]]0<6)#.. =<<s   A88Bn)r   r&      r5   c                    t        d ||            }t        d ||            }t        t        |      |j                  j                        t        t        |      |j                  j                        z
  }||z
  |k(  sJ y )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   sm     J\!_5J\!_5#b'5G"'',,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 y )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!}"Dva;d;<Dva;d;<$RWW\\2VDrww||5TTRH$$$r+   c           	      j   dD ]  }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 ]V  }d	}t        j                  t        |
      5  ||z    d d d        t        j                  t        |
      5  ||z    d d d        X  d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j                  ddg      }t        j                  d      t        j                  d      t        j
                         t        j                  dd      t        d      fD ]T  }t        j                  t        |
      5  ||z    d d d        t        j                  t        |
      5  ||z    d d d        V g 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j                  ddg      }t        j                  d      t        j                  d      t        j
                         t        j                  d d!      t        d"      fD ]T  }t        j                  t        |
      5  ||z    d d d        t        j                  t        |
      5  ||z    d d d        V b d#D ]f  }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j                  ddg      }t        j                  d      t        j                  d      t        j
                         t        j                  d1d      t        d"d23      fD ]T  }t        j                  t        |
      5  ||z    d d d        t        j                  t        |
      5  ||z    d d d        V i y # 1 sw Y   txY w# 1 sw Y   xY w# 1 sw Y   $xY w# 1 sw Y   ]xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)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??1%+s222 !!!$""1% sC(# U]]#8D#I E]]#8D#I ED && &D.C.C))!,,333##A&,333.C))"--444##B'#-444((.9C !!!$""1% sC(# ]]#8D#I E]]#8D#I ED# &< &DD1CD1CQ'3...;;q>C'3...D1Cb))S000<<#c)S000D1C3//3666>>!S)C/3666D1C	3773>>>>>)S1C73>>>D1C2&#---R=3&#---D1C,,3332&,333((.9C !!!$""1% q#&# ]]#8D#I E]]#8D#I EDE &\ &D+$7C+$7CQ'3...;;q>C'3...+$7Ca(C///<<?S(C///2C+$7C3//3666>>!S)C/3666+$7Cc22c999>>$,s2c999+$7C3//3666S)C/3666+$7C3773>>>!S1C73>>>((.9C !!!$""1% tS)B/ ]]#8D#I E]]#8D#I EDG &c EDDD6 EDDDZ EDDDZ EDDDs`   ] ]])*]6&^^^;^)]]&)]36^ ^^^&)^2c           	      	   dj                  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        -  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        -  dD ]z  }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        - } 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        -  y # 1 sw Y   ,xY w# 1 sw Y   KxY w# 1 sw Y   xY w# 1 sw Y   bxY w)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 !!!$""1% sC(# ]]#8D#I ED	 & &D.C))!,,yt0LLLL))"--	1MMMM !!!$""1% sC(# ]]#8D#I ED &  &DD1CQ'6,T+JJJJb))VLt-LLLL3//6,T3RRRR	37764<    2&&D*IIII,,|$0OOOO !!!$""1% q#&# ]]#8D#I ED &* &D+$7CQ'62D4+PPPPa(F3ED,QQQQ3//6:LSW3XXXXc22f"7    3//6:LSW3XXXX3776"<   
 !!!$""1% tS)B/ ]]#8D#I ED &Q ED ED, ED. EDs0   S6S5S&8S3SS#&S03S<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 y )Nr   r3   )r   r   )r   r"   r   s      r   test_period_addsub_natz+TestPeriodArithmetic.test_period_addsub_natZ  s\     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        y # 1 sw Y   y xY w)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  sy     \3'nnUD)SyCSyCSyC]]9,AB#I CBBs   %A44A=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        t        j                  t
        |      5  |t        j                  d      z
   d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)	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   C >C, C),C5c                    t        d      }t        dd      }d}t        j                  t        |      5  ||z    d d d        d}t        j                  t        |      5  ||z    d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)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  sn    vV#&O]]9C0H 1 P]]9C0"H 10	 10 10s   A0!A<0A9<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[[S,/[[__g&1t$\\9%		

% 0 9
%N`Qf [[V%67
  8
  [[V%AB
 C
""r+   r   c            
           e Zd Zd Zd Zd Zd Zd Zej                  j                  d ej                  d      df ej                   ed	d
            dff      d        Zy)TestPeriodComparisonsc                     t        dd      }t        dd      }||k(  rJ ||k7  sJ ||k  sJ ||k  sJ ||kD  rJ ||k\  rJ y )N2000-01r6   z2000-02r'   )r   janfebs      r    test_period_comparison_same_freqz6TestPeriodComparisons.test_period_comparison_same_freq  sd    Y$Y$#:~czzSyyczz9}#:~:r+   c                 z    t        dd      }t        dd      }||k(  sJ ||k\  sJ ||k  sJ ||k  rJ ||kD  rJ y Nr   r6   r'   )r   r8   r9   s      r   3test_period_comparison_same_period_different_objectzITestPeriodComparisons.test_period_comparison_same_period_different_object  sZ    i%y#&u}}u}}u}}%<%<<r+   c                    t        dd      }t        dd      }||k(  rJ ||k7  sJ d}t        j                  t        |      5  ||k   d d d        t        j                  t        |      5  ||k   d d d        t        j                  t        |      5  ||kD   d d d        t        j                  t        |      5  ||k\   d d d        y # 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   KxY w# 1 sw Y   y xY w)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'#:~czzA]]0<#I =]]0<3J =]]0<#I =]]0<3J =< =<<<<<<<s0   C-CC&?C2CC#&C/2C;c                    t        dd      }|dk(  rJ |dk7  sJ d}d| d| }|dfd|ffD ]  \  }}t        j                  t        |      5  ||kD   d d d        t        j                  t        |      5  ||k\   d d d        t        j                  t        |      5  ||k   d d d        t        j                  t        |      5  ||k   d d d         y # 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   MxY w# 1 sw Y   xY w)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$!8|axx%
3J<uZLQ !Hq#h/KD%y4u 5y4 5y4u 5y4 54 044444444s0   C7C& C2	C>C#	&C/	2C;	>D	c                     t        dd      }t        d      }t        |f|t        ft        |f|t        ffD ]/  \  }}||k  rJ ||kD  rJ ||k(  rJ ||k7  sJ ||k  rJ ||k\  s/J  y )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                 @    t        dd      }||k(  |u sJ ||k(  |u sJ y r   r'   )r   zerodim_arrrJ   r   s       r   (test_period_comparison_numpy_zerodim_arrz>TestPeriodComparisons.test_period_comparison_numpy_zerodim_arr  s6    
 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     so    		  $%$ [[
"((1+u		3)? @$GH0	0r+   r   )datetimer   numpyr   r   pandas._libs.tslibs.periodr   pandasr   r   r   r   r	   r   r   r   r+   r   <module>r      s4       <  DS0 S0r+   