o
    5cr1                     @   s   d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	 ddl
Zddl
mZmZmZ ddlmZ ddlmZ G dd	 d	ZG d
d dZdS )zL
Tests for DatetimeIndex methods behaving like their Timestamp counterparts
    )datetimeN)OutOfBoundsDatetime	to_offset)INVALID_FREQ_ERR_MSG)DatetimeIndex	Timestamp
date_range)Float64Indexc                   @   s  e Zd Zdd Zdd Zejddgedddggd	d
 Z	ejdg ddd Z
dd Zdd Zdd Zejdg ddd Zdd Zd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/d0 Zejd1d2d3gejd4g d5d6d7 Zd8d9 Zd:d; Zd<S )=TestDatetimeIndexOpsc                 C   <   t dddd}t|j}dd |D }||k sJ d S )N1/1/200012min
   freqperiodsc                 S      g | ]}|  qS  )time.0tr   r   g/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/indexes/datetimes/test_scalar_compat.py
<listcomp>       z6TestDatetimeIndexOps.test_dti_time.<locals>.<listcomp>)r   pdIndexr   allselfrngresultexpectedr   r   r   test_dti_time      z"TestDatetimeIndexOps.test_dti_timec                 C   r   )Nr   12Hr   r   c                 S   r   r   )dater   r   r   r   r   #   r   z6TestDatetimeIndexOps.test_dti_date.<locals>.<listcomp>)r   r   r   r&   r   r   r   r   r   test_dti_date    r$   z"TestDatetimeIndexOps.test_dti_datedataz
1400-01-01ix     c                 C   s@   d}t jt|d t| W d    d S 1 sw   Y  d S )Nz&Out of bounds .* present at position 0match)pytestraisesr   r   )r   r(   msgr   r   r   test_dti_date_out_of_range&   s   
"z/TestDatetimeIndexOps.test_dti_date_out_of_rangefield)	dayofweekday_of_week	dayofyearday_of_yearquarterdays_in_monthis_month_startis_month_endis_quarter_startis_quarter_endis_year_startis_year_endc                 C   sz   t d}t||d }|drtnd }t j|dd tt|d |}W d    n1 s0w   Y  ||ks;J d S )Nd   is_Timestamp.freq is deprecatedr*   )tmmakeDateIndexgetattr
startswithFutureWarningassert_produces_warningr   )r   r0   idxr"   warnr!   r   r   r   test_dti_timestamp_fields-   s   
z.TestDatetimeIndexOps.test_dti_timestamp_fieldsc                 C   s<   t d}t| jd  }|d  }||ksJ d S )Nr=   r>   )rA   rB   tupleisocalendarilocto_list)r   rG   r"   r!   r   r   r   %test_dti_timestamp_isocalendar_fieldsH   s   
z:TestDatetimeIndexOps.test_dti_timestamp_isocalendar_fieldsc                 C   s   t d}d}t jt|d t|d |j}W d    n1 s!w   Y  d}t jt|d |j|jks8J W d    n1 sBw   Y  d}t jt|d |j|jksYJ W d    d S 1 sdw   Y  d S )Nr=   z.The 'freq' argument in Timestamp is deprecatedr*   r>   r@   zTimestamp.freqstr is deprecated)rA   rB   rF   rE   r   r   freqstr)r   rG   r.   tsmsg2msg3r   r   r   test_dti_timestamp_freq_fieldsN   s   
"z3TestDatetimeIndexOps.test_dti_timestamp_freq_fieldsc                 C   s   t ddd}|d}t ddd}t|| |dd}|d}t dddd}t|| |d}t|| d S )	N20130101 09:10:11   r   D20130101UTC
US/Easterns)r   roundrA   assert_index_equaltz_localize
tz_convertr   dtir!   r"   r   r   r   test_round_dailya   s   


z%TestDatetimeIndexOps.test_round_dailyzfreq, error_msg))Yz,<YearEnd: month=12> is a non-fixed frequency)M#<MonthEnd> is a non-fixed frequency)foobarzInvalid frequency: foobarc                 C   sZ   t ddd}|dd}tjt|d || W d    d S 1 s&w   Y  d S )NrT   rU   rV   rY   rZ   r*   )r   r^   r_   r,   r-   
ValueErrorr\   )r   r   	error_msgra   r   r   r   test_round_invalido   s
   	"z'TestDatetimeIndexOps.test_round_invalidc              	   C   sf  |}t ddd|d}|d }ttd|dtd|dtd|dtd	|dtd	|dg}|d }t|jd
d| |jd
d|ksCJ t}tjt	|d |jdd W d    n1 s]w   Y  tjt	|d |jdd W d    n1 szw   Y  d}tjt	|d |jdd W d    n1 sw   Y  tjt	|d |jdd W d    n1 sw   Y  tdg|d}|d}	tdg|d}
t|	|
 dD ]}t||| qtdg|d}|d}	tdg|d}
t|	|
 tdg}|d}	tdg}
t|	|
 t
d d}t|gd W d    d S 1 s,w   Y  d S )N
2016-01-01rU   30Minstartr   r   tzr)   2016-01-01 00:00:00rn   z2016-01-01 01:00:00z2016-01-01 02:00:00Hr   r*   foore   rd   z2016-10-17 12:00:00.0015msz2016-10-17 12:00:00.002000)usnsz2016-10-17 12:00:00.00149z2016-10-17 12:00:00.001000z2016-10-17 12:00:00.00150103110nsz2016-10-17 12:00:00.001501030F1010ns)r   r   r   rA   r]   r\   r   r,   r-   rg   rF   )r   tz_naive_fixturern   r    eltexpected_rngexpected_eltr.   indexr!   r"   r   rP   r   r   r   
test_round}   s\   




	




$zTestDatetimeIndexOps.test_roundc              	   C   sf   |}t ddd|d}ttd|dtd|dtd|dtd	|dtd
|dg}t|jdd| d S )Nrj   rU   2Minrl   ro   rp   z2016-01-01 00:02:00z2016-01-01 00:04:00z2016-01-01 00:06:00z2016-01-01 00:08:002Trr   )r   r   r   rA   r]   r\   )r   ry   rn   r    r{   r   r   r   test_no_rounding_occurs   s   





z,TestDatetimeIndexOps.test_no_rounding_occursz#test_input, rounder, freq, expectedz2117-01-01 00:00:45floor15sceilz2117-01-01 00:00:45.000000012rw   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15Tz1823-01-01 03:00:003H)NaTr   r   r   r   )r   r   r   r   c                 C   s<   t t|}t||}||}t t|}||sJ d S )N)r   listrC   equals)r   
test_inputrounderr   r"   dtfuncr!   r   r   r   test_ceil_floor_edge   s
   &
z)TestDatetimeIndexOps.test_ceil_floor_edgezstart, index_freq, periods)
2018-01-01r%      )z2018-01-01 0:0:0.1249991nsi  
round_freq)2ns3ns4ns5ns6ns7ns250ns500ns750ns1us19us250us500us750usr   2s3sr%   1Dc           
      C   sb  t |||d}t|j}||}|j|j }|j| }	|	dk s*J d| dd|k r6||k  s:J d||}|j|j }|j| }	|	dk sXJ d| dd|k rd||k  shJ d||}t|j|j }|j| }	|	dk sJ d| d||d	 k sJ d
|d	 dkr|j||d	 k d	 dk sJ dd S d S )N)rm   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   nanosr   asi8r   r   r\   abs)
r   rm   
index_freqr   r   r   unitr!   diffmodr   r   r   test_round_int64   s2   


 

 

z%TestDatetimeIndexOps.test_round_int64c                 C   s   t dddd}| }t dddd}t|| tddgd}t|}| }td	d	gd}t|}t|| |jsCJ |jrHJ d S )
Nz1/1/2000 9:30r   rW   )r   r   r   l   j(=MF l   Ow{2MF zdatetime64[ns]l     
<'MF )	r   	normalizerA   r]   nparrayastyper   is_normalized)r   r    r!   r"   arr_nsrng_nsrng_ns_normalizedr   r   r   test_normalize,  s    
z#TestDatetimeIndexOps.test_normalizec                 C   s<   t tjtdg}| }t tjtdg}t|| d S )Nz2018-01-01 01:00:00r   )r   r   r   r   r   rA   r]   r`   r   r   r   test_normalize_natB  s   z'TestDatetimeIndexOps.test_normalize_natN)__name__
__module____qualname__r#   r'   r,   markparametrizer   r/   rI   rN   rS   rb   ri   r~   r   r   r   r   r   r   r   r   r   r
      sp    



6
% r
   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestDateTimeIndexToJulianDatec                 C   L   t tdddd}tdd |D }| }t|tsJ t|| d S )Nz
1710-10-01rU   rW   rm   r   r   c                 S   r   r   to_julian_dater   xr   r   r   r   L  r   z;TestDateTimeIndexToJulianDate.test_1700.<locals>.<listcomp>	r   r   r   r   r   
isinstancer	   rA   r]   r   drr1r2r   r   r   	test_1700J  
   z'TestDateTimeIndexToJulianDate.test_1700c                 C   r   )N
2000-02-27rU   rW   r   c                 S   r   r   r   r   r   r   r   r   S  r   z;TestDateTimeIndexToJulianDate.test_2000.<locals>.<listcomp>r   r   r   r   r   	test_2000Q  r   z'TestDateTimeIndexToJulianDate.test_2000c                 C   r   )Nr   rU   rq   r   c                 S   r   r   r   r   r   r   r   r   Z  r   z;TestDateTimeIndexToJulianDate.test_hour.<locals>.<listcomp>r   r   r   r   r   	test_hourX  r   z'TestDateTimeIndexToJulianDate.test_hourc                 C   r   )Nr   rU   Tr   c                 S   r   r   r   r   r   r   r   r   a  r   z=TestDateTimeIndexToJulianDate.test_minute.<locals>.<listcomp>r   r   r   r   r   test_minute_  r   z)TestDateTimeIndexToJulianDate.test_minutec                 C   r   )Nr   rU   Sr   c                 S   r   r   r   r   r   r   r   r   h  r   z=TestDateTimeIndexToJulianDate.test_second.<locals>.<listcomp>r   r   r   r   r   test_secondf  r   z)TestDateTimeIndexToJulianDate.test_secondN)r   r   r   r   r   r   r   r   r   r   r   r   r   I  s    r   )__doc__r   numpyr   r,   pandas._libs.tslibsr   r   pandas._libs.tslibs.offsetsr   pandasr   r   r   r   pandas._testing_testingrA   pandas.core.apir	   r
   r   r   r   r   r   <module>   s      2