
    I j1                         S SK JrJ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                      \ 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S rS r\R                  R                  S/ SQ5      S 5       r\R                  R                  S/ SQ/ SQ/ SQ/5      S 5       r\R                  R                  S/ SQ5      \R                  R                  S/ S Q5      S! 5       5       rS" r\R                  R,                  \" \R2                  " \S#-   \R8                  5      S$9\R                  R                  S\R<                  \R>                  \R@                  /5      S% 5       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      ځ/root/GenerationalWealth/GenerationalWealth/venv/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_tzaware1   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_subsecondB   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_freqT   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_argX   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   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   unitr.   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	   rm   rQ   rn   ro   s        r   
test_floorTestTimestampRound.test_floor   sQ    *+33D9#Z(!!!}}		)))r2   method)rS   r   rQ   c                 Z   [        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                  " [        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_convertrm   rW   rn   r   valuer   r   r   r   )r   rv   rp   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:}}%]]:S1Bw7 211s   D
D*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                  " [        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	   rm   rW   rn   r   r}   r   r   r   r   )	r   rv   ts_strr,   rp   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=}}#]]:S1B': 211s   B88
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	   rm   r   nanosrQ   _valuerS   r   abs)r   r+   r,   r.   rp   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   rp   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   slowr   stintegersr
   r   i8maxr	   r   rQ   rS   r   __static_attributes__r   r2   r   r   r      s    [[#	
""""$G
 [[-	
.	&/.	& [[$	

 [[Y(BC" D
"** [[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   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      s6        7 ; ]  ] r2   