
    Mh2                         S SK JrJr  S SKrS SK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  S SKJr  S SKJr  S SKJr   " S S5      rg)	    )given
strategiesN)lib)NaTOutOfBoundsDatetime	Timedelta	TimestampiNaT	to_offset)NpyDatetimeUnit)INVALID_FREQ_ERR_MSGc                   h   \ rS rSrS r\R                  R                  S/ SQ5      S 5       rS r	S r
S rS	 rS
 r\R                  R                  S/ SQ5      S 5       r\R                  R                  S/ SQ5      \R                  R                  S/ SQ5      S 5       5       r\R                  R                  S/ SQ5      S 5       r\R                  R                  S/ SQ5      S 5       r\R                  R                  S/ SQ5      \R                  R                  S/ SQ5      S 5       5       r\R                  R                  S/ SQ/ SQ/ SQ/5      \R                  R                  S/ SQ5      S 5       5       r\R                  R                  S/ S Q5      \R                  R                  S!/ S"Q5      S# 5       5       rS$ r\" \R0                  " \S%-   \R6                  5      S&9\R                  R                  S\R:                  \R<                  \R>                  /5      S' 5       5       r S(r!g))*TestTimestampRound   c                     [        S5      nSn[        R                  " [        US9   UR	                  S5        S S S 5        g ! , (       d  f       g = f)Nz
2016-01-01zDivision by zero in roundingmatch0ns)r	   pytestraises
ValueErrorround)selftsmsgs      b/var/www/html/env/lib/python3.13/site-packages/pandas/tests/scalar/timestamp/methods/test_round.py"test_round_division_by_zero_raises5TestTimestampRound.test_round_division_by_zero_raises   s6    |$,]]:S1HHUO 211s   A
Aztimestamp, freq, expected))20130101 09:10:11D20130101)z20130101 19:10:11r    20130102)z20130201 12:00:00r    20130202)z20130104 12:00:00r    20130105)2000-01-05 05:09:15.13r    z2000-01-05 00:00:00)r%   hz2000-01-05 05:00:00)r%   sz2000-01-05 05:09:15c                 `    [        U5      nUR                  U5      n[        U5      nXS:X  d   eg Nr	   r   )r   	timestampfreqexpecteddtresults         r   test_round_frequencies)TestTimestampRound.test_round_frequencies    s1     y!$X&!!!    c                     [        SSS9nUR                  S5      n[        SSS9nX#:X  d   e[        SSS9nUR                  S5      nX!:X  d   eg )Nr   z
US/Easterntzr    r!   r'   r*   r   r.   r/   r-   s       r   test_round_tzaware%TestTimestampRound.test_round_tzaware2   sX    *|<#ZL9!!!*|<#||r2   c                 `    [        S5      nUR                  S5      n[        S5      nX#:X  d   eg )Nz20130104 12:32:0030Minz20130104 12:30:00r*   r6   s       r   test_round_30min#TestTimestampRound.test_round_30min<   s2    *+'"01!!!r2   c                 `   [        S5      R                  S5      n[        S5      nX:X  d   e[        S5      R                  S5      n[        S5      nX:X  d   e[        S5      nS H  nX3R                  U5      :X  a  M   e   [        S5      R                  S5      n[        S	5      nX:X  d   eg )
Nz2016-10-17 12:00:00.0015msz2016-10-17 12:00:00.002000z2016-10-17 12:00:00.00149z2016-10-17 12:00:00.001000)usns2016-10-17 12:00:00.00150103110nsz2016-10-17 12:00:00.001501030r*   )r   r/   r-   r   r,   s        r   test_round_subsecond'TestTimestampRound.test_round_subsecondC   s    56<<TB9:!!!67==dC9:!!!12 D$''' ! :;AA&I<=!!!r2   c                     [         R                  " S5         [        S5      R                  S5        S S S 5        g ! , (       d  f       g = f)NFrA   1010ns)tmassert_produces_warningr	   r   )r   s    r   test_round_nonstandard_freq.TestTimestampRound.test_round_nonstandard_freqU   s0    ''.56<<XF /..s	   ;
A	c                     [        S5      n[        R                  " [        [        S9   UR                  S5        S S S 5        g ! , (       d  f       g = f)Nr%   r   foo)r	   r   r   r   r   r   )r   stamps     r   test_round_invalid_arg)TestTimestampRound.test_round_invalid_argY   s5    23]]:-ABKK CBBs   A
Az#test_input, rounder, freq, expected))2117-01-01 00:00:45floor15srP   )rP   ceilrR   rP   )z2117-01-01 00:00:45.000000012rQ   rB   z2117-01-01 00:00:45.000000010)z1823-01-01 00:00:01.000000012rS   rB   z1823-01-01 00:00:01.000000020)1823-01-01 00:00:01rQ   1srT   )rT   rS   rU   rT   )r   rQ   rU   r   )r   rS   rU   r   c                     [        U5      n[        XR5      nU" U5      nU[        L a  U[        L d   eg [        U5      nXt:X  d   eg r)   )r	   getattrr   )r   
test_inputrounderr,   r-   r.   funcr/   s           r   test_ceil_floor_edge'TestTimestampRound.test_ceil_floor_edge^   sJ    0 z"r#d9S= = *H%%%r2   ztest_input, freq, expected))2018-01-01 00:02:062sr]   )2018-01-01 00:02:002minr_   )2018-01-01 00:04:004minra   )2018-01-01 00:15:0015minrc   )2018-01-01 00:20:0020minre   )2018-01-01 03:00:003hrg   rY   )rS   rQ   r   c                 d    [        U5      n[        U5      n[        XT5      nU" U5      nXs:X  d   eg r)   )r	   rW   )r   rX   r,   r-   rY   r.   rZ   r/   s           r   test_round_minute_freq)TestTimestampRound.test_round_minute_freq   s7      z"X&r#d!!!r2   unit)r@   r?   r>   r'   c                     [        S5      R                  U5      nUR                  S5      n[        S5      nX4:X  d   eUR                  UR                  :X  d   eg )Nr   r    r"   )r	   as_unitrS   _cresor   rl   r.   r/   r-   s        r   	test_ceilTestTimestampRound.test_ceil   sQ    *+33D9Z(!!!}}		)))r2   c                     [        S5      R                  U5      nUR                  S5      n[        S5      nX4:X  d   eUR                  UR                  :X  d   eg )Nr   r    r!   )r	   rn   rQ   ro   rp   s        r   
test_floorTestTimestampRound.test_floor   sQ    *+33D9#Z(!!!}}		)))r2   method)rS   r   rQ   c                 n   [        SSS9R                  S5      nUR                  U5      n[        X15      " SSS9nXC:X  d   eUR                  [        [
        SU 35      R                  :X  d   e[        X15      " SS	S9n[        S
SS9R                  S5      nXE:X  d   eUR                  [        [
        SU 35      R                  :X  d   e[        X15      " SSS9nU[        L d   eSn[        R                  " [        R                  US9   [        X15      " SSS9  S S S 5        g ! , (       d  f       g = f)Nz2017-10-29 00:00:00UTCr4   zEurope/Madridr&   T)	ambiguousNPY_FR_Fz2017-10-29 01:00:00r   zCannot infer dst timer   raise)r	   
tz_convertrn   rW   ro   r   valuer   r   r   pytzAmbiguousTimeError)r   rv   rl   r   r/   r-   r   s          r   test_round_dst_border_ambiguous2TestTimestampRound.test_round_dst_border_ambiguous   s    ,7BB?SZZ$SD9||}}74&9I J P PPPP$SE:2u=HH
 !!!}}74&9I J P PPPP$SE:}}%]]422#>Bw7 ?>>s   D&&
D4zmethod, ts_str, freq)rS   2018-03-11 01:59:00-06005min)r   r   r   )rQ   z2018-03-11 03:01:00-05002hc                    [        USS9R                  U5      n[        XQ5      " USS9n[        SSS9nXg:X  d   eUR                  [        [        SU 35      R
                  :X  d   e[        XQ5      " USS9nU[        L d   eSn[        R                  " [        R                  US	9   [        XQ5      " US
S9  S S S 5        g ! , (       d  f       g = f)NzAmerica/Chicagor4   shift_forward)nonexistentz2018-03-11 03:00:00rz   r   z2018-03-11 02:00:00r   r{   )r	   rn   rW   ro   r   r}   r   r   r   r~   NonExistentTimeError)	r   rv   ts_strr,   rl   r   r/   r-   r   s	            r   !test_round_dst_border_nonexistent4TestTimestampRound.test_round_dst_border_nonexistent   s     v"34<<TB$TG27HI!!!}}74&9I J P PPPP$Tu=}}#]]444C@B': A@@s   (C
Cr+   )z2018-01-01 0:0:0.124999360z2018-01-01 0:0:0.125000367z2018-01-01 0:0:0.125500z2018-01-01 0:0:0.126500z2018-01-01 12:00:00z2019-01-01 12:00:00r,   )2ns3ns4ns5ns6ns7ns250ns500ns750ns1us19us250us500us750usrU   r^   3s1Dc                 J   [        U5      R                  S5      n[        U5      R                  nUR	                  U5      nUR
                  U-  S:X  d   SU S35       eSUR
                  UR
                  -
  s=::  a  U:  d   S5       e   S5       eUR                  U5      nUR
                  U-  S:X  d   SU S35       eSUR
                  UR
                  -
  s=::  a  U:  d   S5       e   S5       eUR                  U5      nUR
                  U-  S:X  d   SU S35       e[        UR
                  UR
                  -
  5      US	-  ::  d   S
5       eUS	-  S:X  aH  [        UR
                  UR
                  -
  5      US	-  :X  a  UR
                  U-  S	-  S:X  d   S5       eg g g )Nr@   r   zfloor not a z	 multiplezfloor errorzceil not a z
ceil errorzround not a    zround errorzround half to even error)	r	   rn   r   nanosrQ   _valuerS   r   abs)r   r+   r,   r.   rl   r/   s         r   test_round_int64#TestTimestampRound.test_round_int64   s   J y!))$/$$ $}}t#q(HLi*HH(BII-44CmC4CmC4 }}t#q(GKvY*GG(FMMBII-44BlB4BlB4 $}}t#q(HLi*HH(6==299,-:IMI:!8q=S!:;tqyH==D(1,1M3MM1 I=r2   c                    [         R                  R                  S5      n[        SSSSSS5      nX:X  d   e[         R                  R	                  S5      n[         R                  [        S5      -
  nX:X  d   eS	n[        R                  " [        US
9   [         R                  R	                  S5        S S S 5        [        R                  " [        US
9   [         R                  R                  S5        S S S 5        Sn[        R                  " [        US
9   [         R                  R                  S5        S S S 5        [        R                  " [        US
9   [         R                  R                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nr= f! , (       d  f       g = f)Nr'   i  	      r      ,   i2z;Cannot round 1677-09-21 00:12:43.145224193 to freq=<Second>r   z;Cannot round 2262-04-11 23:47:16.854775807 to freq=<Second>)
r	   minrS   maxrQ   r   r   r   r   r   )r   r/   r-   r   s       r    test_round_implementation_bounds3TestTimestampRound.test_round_implementation_bounds  s9   ##C(T1b!R4!!!$$S)==9Y#77!!!K]].c:MM$ ; ]].c:MM$ ; L]].c:MMs# ; ]].c:MM$ ;: ;: ;: ;: ;:s0    F F F$ F5
F
F!$
F25
G   )valc                   ^^^ [         m[        m[        R                  " U5      nT" U5      nUUU4S jnSnU" X5S5        SnU" X5S5        SnU" X5S5        SnU" X5S	5        S
nU" X5S5        SnU" X5S5        SnU" X5S5        g )Nc                   > US:X  a  GO[        U R                  U5      u  p4[        X-
  5      nU R                  U-
  nX`R                  ::  d   eU R                  U-   nXpR                  :  d   eSnUS:X  a  GO*TTR                  L aB  UTR                  R                  :  a'  [
        R                  " TUS9   T" X5        S S S 5        g OTTR                  L aB  UTR                  R                  :  a'  [
        R                  " TUS9   T" X5        S S S 5        g OXE:  aB  UTR                  R                  :  a'  [
        R                  " TUS9   T" X5        S S S 5        g OAUTR                  R                  :  a'  [
        R                  " TUS9   T" X5        S S S 5        g T" X5      n	X-
  n
[        U
R                  5      nXQ:  d   eU	R                  U-  S:X  d   eTTR                  L a  XQS-  ::  d   eg TTR                  L a  X::  d   eg TTR                  L a  X:  d   eg g ! , (       d  f       g = f! , (       d  f       g = f! , (       d  f       g = f! , (       d  f       g = f)Nr   zwithout overflowr   r   r   )divmodr   intrS   r   r   r   rQ   r   r   r   )r   r   rl   divmoddifflbubr   restdclserr_clsrv   s              r   checker5TestTimestampRound.test_round_sanity.<locals>.checker:  s   z!"))U35;'YY_YY&YY%II~%~(!8sxx'CGGNN*#]]7#>"2, ? + syy(CGGNN*#]]7#>"2, ? + [CGGNN*#]]7#>"2, ? + #''..(wc:r( ;"CBryy>D<<::%***"qy(((399$y y388#y y $; ?> ?> ?>::s0   7	H)	H:	I	I)
H7:
I
I
I*r   r@   i  r?   i@B r>   i ʚ;r'   l    Xp7 r   l     qar&   l     "R: r    )r	   r   npint64)r   r   rv   r   r   r   r   r   s     `   @@r   test_round_sanity$TestTimestampRound.test_round_sanity/  s    
 %hhsmX0	!d 4 4 4 3"5!'3,3r2    N)"__name__
__module____qualname____firstlineno__r   r   markparametrizer0   r7   r;   rC   rI   rN   r[   rj   rq   rt   r   r   r   r   r   stintegersr
   r   i8maxr	   r   rQ   rS   r   __static_attributes__r   r2   r   r   r      sS    [[#	
""""$G
 [[-	
.	&/.	& [[$	

 [[Y(BC" D
" [[V%<=* >* [[V%<=* >* [[X'AB[[8	 C
8. [[897	
 [[;	; [[	

 [[	
.N/
DN0%0 r{{4!8SYY/0[[9??IOOY^^DL  1L r2   r   )
hypothesisr   r   r   numpyr   r   r~   pandas._libsr   pandas._libs.tslibsr   r   r   r	   r
   r   pandas._libs.tslibs.dtypesr   pandas._libs.tslibs.periodr   pandas._testing_testingrG   r   r   r2   r   <module>r      s9         7 ; g  g r2   