
    Eg                     p    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dS )	    )given
strategiesN)lib)iNaT)OutOfBoundsTimedelta)	Timedeltac                   n   e Zd Ze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                            d&ej        ej        ej        g          d'                                     Zej                            d(g d)          d*             Zd+S ),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          }|                    |          }||k    sJ |                    |          }||k    sJ d S )Nr   r   )r   round)selffreqs1s2t1t2r1r2s           e/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/scalar/timedelta/methods/test_round.py
test_roundzTestTimedeltaRound.test_round   s\    : 233344XXd^^RxxxxXXd^^Rxxxxxx    c                     t          d          }dD ]M\  }}t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   Nd S )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   s    233
 	 	ID#
 z555                	 	s   AA	A	c                    t           j                            d          }t           j        t          d          z   t          d          z
  }||k    sJ t           j                            d          }t           j        t          d          z
  }||k    sJ d}t          j        t          |          5  t           j                            d           d d d            n# 1 swxY w Y   t          j        t          |          5  t           j                            d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t           j                            d           d d d            n# 1 swxY w Y   t          j        t          |          5  t           j                            d           d d d            d S # 1 swxY w Y   d S )	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@   s    ##C((=9Q#7#7#77)I:N:NN!!!!$$S))=9Y#7#77!!!! Y 	 ]/s;;; 	% 	%M$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]/s;;; 	% 	%M$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% W]/s;;; 	$ 	$Ms###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$]/s;;; 	% 	%M$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%sH   5 C!!C%(C% D33D7:D7 FFF- GG!Gr2   )	min_value	max_value)valmethodc                 F   t           t          t          j        |          } |          }fd}d} |||d           d} |||d           d} |||d           d} |||d	           d
} |||d           d} |||d           d} |||d           d S )Nc                 d   |dk    rnt          | j        |          \  }}t          ||z
            }| j        |z
  }|| j        k    sJ | j        |z   }|| j        k    sJ d}|dk    rnKj        u rM|j        j        k    r<t          j        |          5   | |           d d d            n# 1 swxY w Y   d S nj        u rM|j        j        k     r<t          j        |          5   | |           d d d            n# 1 swxY w Y   d S n||k    rM|j        j        k    r<t          j        |          5   | |           d d d            n# 1 swxY w Y   d S nL|j        j        k     r<t          j        |          5   | |           d d d            n# 1 swxY w Y   d S  | |          }	|	| z
  }
t          |
j                  }||k     sJ |	j        |z  dk    sJ j
        u r||dz  k    sJ d S j        u r
|	| k    sJ d S j        u r|	| k    sJ d S d S )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   zz!")U33S53;''Y_RYY%BI~~~~(!88sx''CGN**#]7#>>> - -"F2t,,,- - - - - - - - - - - - - - - + sy((CGN**#]7#>>> - -"F2t,,,- - - - - - - - - - - - - - - + D[[CGN**#]7#>>> - -"F2t,,,- - - - - - - - - - - - - - - + #'.((wc::: ) )r4((() ) ) ) ) ) ) ) ) ) ) ) ) ) )F&T""CrBry>>D%<<<<:%****""uqy((((((39$$byyyyyy38##byyyy $# ysH   B44B8;B81D

DDEE!$E!F**F.1F.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    &hsmmSXX0	! 0	! 0	! 0	! 0	! 0	! 0	!d E4   E4   E4   E3"E5!!!'E3,E3r%   rG   )r   r   r   r   c                    t          d                              |          }|                    d          }|t          d          k    sJ |j        |j        k    sJ |                    d          }|t          d          k    sJ |j        |j        k    sJ |                    d          }|t          d          k    sJ |j        |j        k    sJ d S )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7hhuooi 1222222zRY&&&&hhuooi 1222222zRY&&&&ggenni 1222222zRY&&&&&&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	677 	566	677 	566	677
 ))-..		:L0M0MN99.//;M1N1NO99.//;M1N1NOII/00))<N2O2OPii 122II>P4Q4QR))-..		:L0M0MN))H%%yy';';</	
 8 9 8	 	 	 [% % %2 [
U{r{TAXCCCDDD[9?IOY^D L  L   ED 
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' l' l' l' l' l' l' l' l'r%   