o
    ŀg                     @   sb   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 dZdS )	    )given
strategiesN)lib)iNaT)OutOfBoundsTimedelta)	Timedeltac                   @   s8  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 d! Zd"d# Zejj	d$d% Z
ejj	eejed& ejd'd(ejd)ejejejgd*d+ Zejd,g d-d.d/ Zd0S )1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                 C   s@   t d}t d}||}||ksJ ||}||ksJ d S )Nr
   r   )r   round)selffreqs1s2t1t2r1r2 r    d/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/scalar/timedelta/methods/test_round.py
test_round   s   

zTestTimedeltaRound.test_roundc              	   C   sR   t d}dD ] \}}tjt|d || W d    n1 s!w   Y  qd 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   msgr    r    r!   test_round_invalid5   s   z%TestTimedeltaRound.test_round_invalidc                 C   sL  t jd}t jt dd t d }||ksJ t jd}t jt d }||ks+J d}tjt|d t jd W d    n1 sEw   Y  tjt|d t jd W d    n1 sbw   Y  d}tjt|d t jd W d    n1 sw   Y  tjt|d t jd W d    d S 1 sw   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+   r    r    r!    test_round_implementation_bounds@   s*   "z3TestTimedeltaRound.test_round_implementation_boundsr-   )	min_value	max_value)valmethodc                    s   t  tt|} |} fdd}d}|||d d}|||d d}|||d d	}|||d
 d}|||d d}|||d d}|||d d S )Nc                    sJ  |dkrnt | j|\}}t|| }| j| }|| jksJ | j| }|| jks+J d}|dkr2n ju r]| jjkr\tj|d | | W d    d S 1 sUw   Y  d S nz ju r| jjk rtj|d | | W d    d S 1 sw   Y  d S nO||kr| jjkrtj|d | | W d    d S 1 sw   Y  d S n%| jjk rtj|d | | W d    d S 1 sw   Y  d S | |}	|	|  }
t	|
j}||k sJ |	j| dksJ  j
u r||d ksJ d S  ju r|	| ksJ d S  ju r!|	| ks#J d S d S )Nr-   zwithout overflowr   r&      )divmod_valueintr/   r0   r(   r)   r1   r   absr   )tsnanosunitdivmoddifflbubr+   restdclserr_clsr8   r    r!   checkerf   st   









z5TestTimedeltaRound.test_round_sanity.<locals>.checkerr-   r	   i  r   i@B r   i ʚ;r   l    Xp7 r   l     qar   l     "R: D)r   r   npint64)r   r7   r8   rG   rK   r?   r    rH   r!   test_round_sanityZ   s&   
2z$TestTimedeltaRound.test_round_sanityr@   )r	   r   r   r   c                 C   s   t d|}|d}|t dksJ |j|jksJ |d}|t dks)J |j|jks1J |d}|t dks>J |j|jksFJ d S )Nr   r   r   z1 days 02:34:00)r   as_unitr   _cresor1   r/   )r   r@   rG   rF   r    r    r!   test_round_non_nano   s   


z&TestTimedeltaRound.test_round_non_nanoN)__name__
__module____qualname__r(   markparametrizer   r"   r,   
skip_ubsanr4   r   stintegersr   r   i8maxr   r1   r/   rO   rR   r    r    r    r!   r      sH    
	
Nr   )
hypothesisr   r   rY   numpyrM   r(   pandas._libsr   pandas._libs.tslibsr   pandas.errorsr   pandasr   r   r    r    r    r!   <module>   s    