
    Eg                     `    d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	m
Z  G d d          ZdS )    N)	to_offset)INVALID_FREQ_ERR_MSG)DatetimeIndex	Timestamp
date_rangec                      e Zd Zd Zej                            dg d          d             Zd Zd Z	d Z
d Zd	 Zej                            d
dgdddgfdgdddgfdgdddgfdgdddgfdgdddgfdgdddgfdgdddgfdgdddgfdgdddgfdgdddgfddg          d             Zej                            dddg          ej                            d g d!          d"                         Zd#S )$TestDatetimeIndexRoundc                    t          dd          }|                    d          }t          dd          }t          j        ||           |                    d                              d          }|                    d          }t          dd                              d          }t          j        ||           |                    d          }t          j        ||           d S )	N20130101 09:10:11   periodsD20130101UTC
US/Easterns)r   roundtmassert_index_equaltz_localize
tz_convert)selfdtiresultexpecteds       f/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/indexes/datetimes/methods/test_round.pytest_round_dailyz'TestDatetimeIndexRound.test_round_daily   s    ,a8883j!444
fh///ooe$$//==3j!444@@NN
fh///3
fc*****    zfreq, error_msg))YEz,<YearEnd: month=12> is a non-fixed frequency)ME#<MonthEnd> is a non-fixed frequency)foobarzInvalid frequency: foobarc                 
   t          dd          }|                    d                              d          }t          j        t
          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   match)r   r   r   pytestraises
ValueErrorr   )r   freq	error_msgr   s       r   test_round_invalidz)TestDatetimeIndexRound.test_round_invalid   s     ,a888ooe$$//==]:Y777 	 	IIdOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A88A<?A<c           
          |}t          ddd||          }|d         }t          t          d|          t          d|          t          d|          t          d	|          t          d	|          g                              |          }|d         }|                    d
          }t          j        ||           |                    d
          |k    sJ t          }	t          j	        t          |	          5  |                    d           d d d            n# 1 swxY w Y   t          j	        t          |	          5  |                    d           d d d            n# 1 swxY w Y   d}	t          j	        t          |	          5  |                    d           d d d            n# 1 swxY w Y   t          j	        t          |	          5  |                    d           d d d            d S # 1 swxY w Y   d S )N
2016-01-01r   30Min)startr   r*   tzunit   2016-01-01 00:00:00r1   z2016-01-01 01:00:00z2016-01-01 02:00:00hr*   r%   foor"   r!   )r   r   r   as_unitr   r   r   r   r'   r(   r)   )
r   tz_naive_fixturer2   r1   rngeltexpected_rngexpected_eltr   msgs
             r   
test_roundz!TestDatetimeIndexRound.test_round+   s   |QWRVWWW!f$/B777/B777/B777/B777/B777
 
 '$-- 	 $A$$
fl333yycy""l2222"]:S111 	" 	"II5I!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"]:S111 	" 	"II5I!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 4]:S111 	! 	!II4I   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!]:S111 	! 	!II4I   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!sH   D%%D),D)E..E25E2F99F= F=HH
Hc                 L   |}t          dg|                              d          }|                    d          }t          dg|                              d          }t          j        ||           dD ]*}t          j        ||                    |                     +d S )Nz2016-10-17 12:00:00.0015r5   nsmsz2016-10-17 12:00:00.002000)usrB   r   r9   r   r   r   )r   r:   r1   indexr   r   r*   s          r   test_round2z"TestDatetimeIndexRound.test_round2K   s    9:rBBBJJ4PPT"" ">!?BGGGOOPTUU
fh///  	< 	<D!%T):):;;;;	< 	<r   c                     |}t          dg|                              d          }|                    d          }t          dg|                              d          }t          j        ||           d S )Nz2016-10-17 12:00:00.00149r5   rB   rC   z2016-10-17 12:00:00.001000rE   )r   r:   r1   rF   r   r   s         r   test_round3z"TestDatetimeIndexRound.test_round3V   sz    :;CCCKKDQQT"" ">!?BGGGOOPTUU
fh/////r   c                 N   t          dgd          }|                    d          }t          dgd          }t          j        ||           d}t          |gd          }t          j        d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nz2016-10-17 12:00:00.001501031zM8[ns])dtype10nsz2016-10-17 12:00:00.001501030F1010ns)r   r   r   r   assert_produces_warning)r   r:   rF   r   r   tsr   s          r   test_round4z"TestDatetimeIndexRound.test_round4]   s    >?xPPPV$$ "A!B(SSS
fh///,RD111'.. 	  	 IIh	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   7BB!Bc           
      j   |}t          ddd|          }t          t          d|          t          d|          t          d|          t          d	|          t          d
|          g                              d          }|                    d          }t          j        ||           d S )Nr.   r   2Min)r0   r   r*   r1   r4   r5   z2016-01-01 00:02:00z2016-01-01 00:04:00z2016-01-01 00:06:00z2016-01-01 00:08:00rB   2minr7   )r   r   r   r9   r   r   r   )r   r:   r1   r;   r=   r   s         r   test_no_rounding_occursz.TestDatetimeIndexRound.test_no_rounding_occursh   s    |QVKKK$/B777/B777/B777/B777/B777
 
 '$-- 	 ''
fl33333r   z#test_input, rounder, freq, expectedz2117-01-01 00:00:45floor15sceilz2117-01-01 00:00:45.000000012rL   z2117-01-01 00:00:45.000000010z1823-01-01 00:00:01.000000012z1823-01-01 00:00:01.0000000201823-01-01 00:00:011sz2018-01-01 00:15:0015minz1823-01-01 03:00:003h)NaTrX   rU   rY   r\   )r\   rW   rY   r\   c                     t          t          |                    }t          ||          } ||          }t          t          |                    }|                    |          sJ d S )N)r   listgetattrequals)r   
test_inputrounderr*   r   dtfuncr   s           r   test_ceil_floor_edgez+TestDatetimeIndexRound.test_ceil_floor_edgez   sg    L 4
++,,r7##d h00v&&&&&&&r   zstart, index_freq, periods)z
2018-01-0112h   )z2018-01-01 0:0:0.1249991nsi  
round_freq)2ns3ns4ns5ns6ns7ns250ns500ns750ns1us19us250us500us750usrY   2s3srg   1Dc                    t          |||          }t          |          j        }|                    |          }|j        |j        z
  }|j        |z  }	|	dk                                    sJ d| d            d|k                                    r||k                                     s
J d            |                    |          }|j        |j        z
  }|j        |z  }	|	dk                                    sJ d| d            d|k                                    r||k                                     s
J d            |                    |          }t          |j        |j        z
            }|j        |z  }	|	dk                                    sJ d| d            ||d	z  k                                    s
J d
            |d	z  dk    r7|j        ||d	z  k             d	z  dk                                    sJ d            d S d S )N)r0   r*   r   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   r   nanosrU   asi8allrW   r   abs)
r   r0   
index_freqr   rj   rd   r2   r   diffmods
             r   test_round_int64z'TestDatetimeIndexRound.test_round_int64   s8   : e*gFFF$$* *%%w$kD q~~EE!E
!E!E!EEEET	  GdTk%6%6%8%8GG-GGG $${RW$kD q~~DD!Dz!D!D!DDDDT	  FdTk%6%6%8%8FF,FFF *%%6;())kD q~~EE!E
!E!E!EEEE	!&&((77-777!8q==DDAI-.2a7cee0 0/0 0 0 =0 0r   N)__name__
__module____qualname__r   r'   markparametrizer,   r@   rG   rI   rP   rT   rf   r    r   r   r	   r	      s/       + + + [	
 	
 	
   ! ! !@	< 	< 	<0 0 0	  	  	 4 4 4$ [-#$gu7L6MN#$fe6K5LM0101	 1101	 $$gt6K5LM#$fd5J4KL#$fg8M7NO#$gw9N8OP#$fd5J4KL#$gt6K5LM7!	
$ $J' 'K$ $J' [$	"$LM  [	
 	
 	
 00 01 	 80 0 0r   r	   )r'   pandas._libs.tslibsr   pandas._libs.tslibs.offsetsr   pandasr   r   r   pandas._testing_testingr   r	   r   r   r   <module>r      s     ) ) ) ) ) ) < < < < < <         
      O0 O0 O0 O0 O0 O0 O0 O0 O0 O0r   