
    Owg                     h    d dl mZmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ  G d d      Zy)	    )given
strategiesN)lib)iNaT)OutOfBoundsTimedelta)	Timedeltac                   $   e Zd Zej                  j                  dd ed       ed      fd ed       ed      fd ed	       ed
      fd ed       ed      fd ed       ed      fd ed       ed      fd ed       ed      fd ed       ed      fd ed       ed      fd ed       ed      fg
      d         Zd! Zej                  j                  d"        Z
ej                  j                   e ej                  ed#z   ej                   $      %      ej                  j                  d&ej"                  ej$                  ej&                  g      d'                      Zej                  j                  d(g d)      d*        Zy+),TestTimedeltaRoundz
freq,s1,s2ns1 days 02:34:56.789123456-1 days 02:34:56.789123456usz1 days 02:34:56.789123000z-1 days 02:34:56.789123000msz1 days 02:34:56.789000000z-1 days 02:34:56.789000000s1 days 02:34:57z-1 days 02:34:572sz1 days 02:34:56z-1 days 02:34:565sz1 days 02:34:55z-1 days 02:34:55min1 days 02:35:00z-1 days 02:35:0012minz1 days 02:36:00z-1 days 02:36:00hz1 days 03:00:00z-1 days 03:00:00dz1 daysz-1 daysc                     t        d      }t        d      }|j                  |      }||k(  sJ |j                  |      }||k(  sJ y )Nr   r   )r   round)selffreqs1s2t1t2r1r2s           g/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/scalar/timedelta/methods/test_round.py
test_roundzTestTimedeltaRound.test_round   sJ    : 2334XXd^RxxXXd^Rxx    c                     t        d      }dD ]:  \  }}t        j                  t        |      5  |j	                  |       d d d        < y # 1 sw Y   GxY w)Nr   ))YEz,<YearEnd: month=12> is a non-fixed frequency)MEz#<MonthEnd> is a non-fixed frequency)foobarzInvalid frequency: foobarmatch)r   pytestraises
ValueErrorr   )r   r   r   msgs       r#   test_round_invalidz%TestTimedeltaRound.test_round_invalid5   sW    23
 	ID#
 z5  	
 s   AA	c                    t         j                  j                  d      }t         j                  t        d      z   t        d      z
  }||k(  sJ t         j                  j	                  d      }t         j                  t        d      z
  }||k(  sJ d}t        j                  t        |      5  t         j                  j	                  d       d d d        t        j                  t        |      5  t         j                  j                  d       d d d        d}t        j                  t        |      5  t         j                  j                  d       d d d        t        j                  t        |      5  t         j                  j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   y xY w)	Nr      )secondsii2zICannot round -106752 days \+00:12:43.145224193 to freq=s without overflowr*   zFCannot round 106751 days 23:47:16.854775807 to freq=s without overflow)	r   r   ceilmaxfloorr,   r-   r   r   )r   resultexpectedr/   s       r#    test_round_implementation_boundsz3TestTimedeltaRound.test_round_implementation_bounds@   sj    ##C(==9Q#77)I:NN!!!$$S)==9Y#77!!! Y 	 ]]/s; 	%MM$	%]]/s; 	%MM$	% W]]/s; 	$MMs#	$]]/s; 	%MM$	% 	%	% 	%	% 	%	$ 	$	% 	%s0   / F#2 F/7 F;: G#F,/F8;GGr2   )	min_value	max_value)valmethodc                    t         t        t        j                  |      } |      }fd}d} |||d       d} |||d       d} |||d       d} |||d	       d
} |||d       d} |||d       d} |||d       y )Nc                    |dk(  rnt        | j                  |      \  }}t        ||z
        }| j                  |z
  }|| j                  k  sJ | j                  |z   }|| j                  kD  sJ d}|dk(  rn.j                  u rD|j                  j                  kD  rt        j                  |      5   | |       d d d        y j                  u rC|j                  j                  k  rt        j                  |      5   | |       d d d        y ||k\  rC|j                  j                  kD  rmt        j                  |      5   | |       d d d        y |j                  j                  k  r*t        j                  |      5   | |       d d d        y  | |      }	|	| z
  }
t        |
j                        }||k  sJ |	j                  |z  dk(  sJ j                  u r||dz  k  sJ y j                  u r|	| k  sJ y j                  u r|	| k\  sJ y y # 1 sw Y   y xY w# 1 sw Y   y xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nr2   zwithout overflowr   r*      )divmod_valueintr4   r5   r,   r-   r6   r   absr   )tsnanosunitdivmoddifflbubr/   restdclserr_clsr=   s              r#   checkerz5TestTimedeltaRound.test_round_sanity.<locals>.checkerf   s(   z!"))U3S53;'YY_RYY&YY%BII~%~(!8sxx'CGGNN*#]]7#> -"2t,-syy(CGGNN*#]]7#> -"2t,-D[CGGNN*#]]7#> -"2t,-#''..(wc: )r4()T"CrBryy>D%<<::%***"uqy(((399$by y388#by y $;---)s0   8
H+	
H7
I
I+H47I IIr2   r   i  r   i@B r   i ʚ;r   l    Xp7 r   l     qar   l     "R: D)r   r   npint64)r   r<   r=   rN   rQ   rF   rO   rP   s     `   @@r#   test_round_sanityz$TestTimedeltaRound.test_round_sanityZ   s     &hhsmX0	!d E4 E4 E4 E3"E5!'E3,E3r%   rG   )r   r   r   r   c                    t        d      j                  |      }|j                  d      }|t        d      k(  sJ |j                  |j                  k(  sJ |j	                  d      }|t        d      k(  sJ |j                  |j                  k(  sJ |j                  d      }|t        d      k(  sJ |j                  |j                  k(  sJ y )Nr   r   r   z1 days 02:34:00)r   as_unitr   _cresor6   r4   )r   rG   rN   rM   s       r#   test_round_non_nanoz&TestTimedeltaRound.test_round_non_nano   s    ()11$7hhuoi 12222zzRYY&&&hhuoi 12222zzRYY&&&ggeni 12222zzRYY&&&r%   N)__name__
__module____qualname__r,   markparametrizer   r$   r0   
skip_ubsanr9   r   stintegersr   r   i8maxr   r6   r4   rU   rY    r%   r#   r
   r
      s   [[ 5667 5667 5667
 )-.	:L0MN9./;M1NO9./;M1NOI/0)<N2OPi 12I>P4QR)-.	:L0MN)H%y';</	
898	 [[% %2 [[
{r{{TAXCD[[9??IOOY^^DL  E 
L \ [[V%<=' >'r%   r
   )
hypothesisr   r   r`   numpyrS   r,   pandas._libsr   pandas._libs.tslibsr   pandas.errorsr   pandasr   r
   rc   r%   r#   <module>rj      s*       $ . l' l'r%   