
    A>i$                        S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJr  SSKJr  \R@                  " S5      r!S r" " S	 S
5      r#\RH                  RK                  S\" S5      \" S5      \" S5      S4\" S5      \" S5      \" S5      S4\" S5      \" S5      \" SSS9S4\" S5      \" S5      \" SSS9S4/5      S 5       r&S  r'g)!z;
Tests for DateOffset additions over Daylight Savings Time
    )	timedeltaN	Timestamp)BMonthBegin	BMonthEndBQuarterBeginBQuarterEnd
BYearBeginBYearEndCBMonthBegin
CBMonthEndCustomBusinessDay
DateOffsetDay
MonthBeginMonthEndQuarterBegin
QuarterEndSemiMonthBeginSemiMonthEndWeek	YearBeginYearEnd)DatetimeIndexpytzc                 f    U R                  5       nUR                  S-  S-  UR                  -   S-  $ )N   i  g      @)	utcoffsetdaysseconds)tsos     d/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/tseries/offsets/test_dst.pyget_utc_offset_hoursr$   '   s.    
AFFRK$*f44    c                      \ rS rSrSrSr\R                  S5      SSS.SS	S
S.0r/ SQr	/ SQr
S rS rS rS rS rS r0 \SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\SS/_\ SS/_\!SS/_\"SS/0ERG                  5       r$\%RL                  RO                  S\$5      S 5       r(Sr)g )!TestDST-   2013-11-03 01:59:59.999999z2013-03-10 01:59:59.999999
US/Eastern)utc_offset_daylightutc_offset_standardzdateutil/US/Pacificii)weekdaydayhourminutesecondmicrosecond)weeksr   hoursminutesr    millisecondsmicrosecondsc                 ~    US:  a  U R                   OU R                  nU H  nU R                  " SUUUS.UD6  M     g )N   )offset_nameoffset_nperformance_warning )valid_date_offsets_pluralvalid_date_offsets_singular_test_offset)selfnr>   kwdsvalid_offsetsnames         r#   _test_all_offsetsTestDST._test_all_offsetsL   sV     1u **11 	 "D  $7 	 "r%   c                 ~   [        S0 X0D6nUS;   a  US:X  a  U[        S[        R                  S5      S9:X  a  SSSS	S.U   n[        R
                  " [        US
9   X6-     S S S 5        [        U/5      nSn	[        R
                  " [        US
9   [        R                  " XYS
9   X-     S S S 5        S S S 5        g X6-   n
Ub  [        U
5      U:X  d   eUS:X  a  U
R                  5       [        SUR                  S   -  S9UR                  5       -   :X  d   eU
R                  UR                  :X  aN  U
R                  UR                  :X  a4  U
R                   UR                   :X  a  U
R"                  UR"                  :X  d   eg US:X  a  [        UR                  S   5      UR                  5       -   U
R                  5       :X  d   eU
R                  UR                  :X  a4  U
R                   UR                   :X  a  U
R"                  UR"                  :X  d   eg XR$                  ;   a(  ['        XS:w  a  UOS5      nXR                  U   :X  d   eg XR)                  S5      U-   R)                  [        R                  S5      5      :X  d   eg ! , (       d  f       GN/= f! , (       d  f       GN= f! , (       d  f       g = f)N)r1   r2   r3   r4   r;   z2013-11-03 01:59:59.999999-0500r*   tzr)   z2013-11-03 01:01:59.999999z2013-11-03 01:59:01.999999z2013-11-03 01:59:59.000001matchzNon-vectorized DateOffsetr5      )r   r   r/   	dayofweekUTCz
US/Pacificr?   )r   r   r   timezonepytestraises
ValueErrorr   tmassert_produces_warningr$   dater   rE   rP   r1   r2   r3   rA   getattr
tz_convert)rC   r<   r=   tstartexpected_utc_offsetr>   offseterr_msgdtiwarn_msgtdatepart_offsets               r#   rB   TestDST._test_offset[   sz    6{56 FFA1dmmL6Q 566;	
 G z9 :  )C2Hz9//0CTL U : O*'*.AAAA'!668ya&++g2F.FG&++-WWWW v///FFfkk)HH-HH-	. .F"V[[01FKKMAQVVXMMM &++%HH-HH-.-<<<%":;O #kk+&>>>> **51F:FFl+   U :9 UT :9 s0   J
J.&J+J.

J
J+	&J..
J<c                 h    US:  a  US S3nO
SUS-  S S3n[        X-   5      R                  U5      $ )Nr   02d00-02)r   rZ   )rC   string
hrs_offsetrL   offset_strings        r#   _make_timestampTestDST._make_timestamp   sF    ?)#.b1Mb"5R8M/0;;B??r%   c           
          U R                   R                  5        H;  u  p#US   nUS   nU R                  SUU R                  U R                  XB5      US9  M=     g )Nr.   r-      rD   r>   r[   r\   timezone_utc_offsetsitemsrH   rm   ts_pre_springfwd)rC   r>   rL   utc_offsetshrs_prehrs_posts         r#   test_springforward_plural!TestDST.test_springforward_plural   sf    #88>>@OB!"78G"#89H""$7++D,A,A7O$,	 #   Ar%   c           
          U R                   R                  5        H6  u  p#US   nU R                  SUU R                  U R                  XB5      S S9  M8     g Nr.   r;   rq   )rs   rt   rH   rm   ts_pre_fallbackrC   r>   rL   rv   rw   s        r#   test_fallback_singularTestDST.test_fallback_singular   s]      $88>>@OB!"78G""$7++D,@,@'N$(	 #   Ar%   c           
          U R                   R                  5        H6  u  p#US   nU R                  SUU R                  U R                  XB5      S S9  M8     g r|   rr   r~   s        r#   test_springforward_singular#TestDST.test_springforward_singular   s[    #88>>@OB!"78G""$7++D,A,A7O$(	 #   Ar%   z	11/2/2012z	12/1/2012z
11/30/2012z	12/3/2012z
11/15/2012z	11/9/2012z1/1/2013z
12/31/2012z	11/4/2012z	11/5/2012tupc                 ^    Uu  p#[        US   SS9U" 5       -   n[        US   SS9nXE:X  d   eg )Nr   r*   rK   r;   r   )rC   r   r]   test_valuesfirstr3   s         r#   test_all_offset_classesTestDST.test_all_offset_classes   s;    !+a.\:VXE;q>l;r%   r?   N)*__name__
__module____qualname____firstlineno__r}   ru   r   rR   rs   rA   r@   rH   rB   rm   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r	   r   rt   offset_classesrS   markparametrizer   __static_attributes__r?   r%   r#   r'   r'   -   s   2O3 	l##%#%&
 	rRTU#!@D@
[+.;- 	k;/ 	K.	
 	{K0 	[,/ 	l3 	{L1 	{K( 	K, 	+|, 	[*- 	;- 	{K0 	[,/  	[1!" 	k<0#$ 	k;'%& eg' * [[UN3 4r%   r'   z"original_dt, target_dt, offset, tzz2021-10-01 01:15z2021-10-31 01:15r;   zEurope/Londonz2010-12-05 02:59z2010-10-31 02:59zEurope/Parisz2021-10-31 01:20z2021-11-07 01:20   zSun Mon)weekmaskr*   z2020-04-03 01:30z2020-11-01 01:30   )monthzAmerica/Chicagoc                     U R                  U5      nSU S3n[        R                  " [        US9   XB-     S S S 5        g ! , (       d  f       g = f)NzCannot infer dst time from z$, try using the 'ambiguous' argumentrM   )tz_localizerS   rT   rU   )original_dt	target_dtr]   rL   localized_dtmsgs         r#   -test_nontick_offset_with_ambiguous_time_errorr      sD    @ **2.L'	{2V
WC	z	- 
.	-	-s	   ?
Ac                      [        SSS9n Sn[        R                  " [        US9   U [	        S5      -     S S S 5        g ! , (       d  f       g = f)Nz2015-03-28T2:30zEurope/WarsawrK   z2is a nonexistent time due to daylight savings timerM   r;   )r   rS   rT   rU   r   )r!   r   s     r#   test_add_day_nonexistent_raisesr     s;     
$	9B
>C	z	-
SV 
.	-	-s	   >
A)(__doc__datetimer   rS   pandas._libs.tslibsr   pandas._libs.tslibs.offsetsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pandasr   pandas._testing_testingrV   importorskipr   r$   r'   r   r   r   r   r?   r%   r#   <module>r      s      )     . ! 6"5u up ( ()()QK		
 ()()		
 ()()a)4		
 ()()ar"		
':;:r%   