o
    5c^                     @   sD  d Z ddlmZmZmZ ddlZddlZddlZddlmZ ddl	m
Z
 ddlmZmZmZmZmZ ddlmZ ddlm  mZ ddlZddlmZmZmZmZmZmZ ddlm Z! dd	l"m#Z# ed
ddedddZ$Z%dd Z&G dd dZ'G dd dZ(G dd dZ)G dd dZ*G dd dZ+G dd dZ,dd Z-dS )zP
test date_range, bdate_range construction from the convenience range functions
    )datetimetime	timedeltaN)timezone)	timezones)BDayCDay
DateOffsetMonthEndprefix_mapping)OutOfBoundsDatetime)DatetimeIndex	Timedelta	Timestampbdate_range
date_rangeoffsets)generate_range       c                 C   s   | |d k}||d k}|dkr|r|dd }|S |dkr(|r(|dd }|S |dkr8|r8|r8|dd }|S |dkrF|rF|dd }|S |dkrT|rT|dd }|S |dkr`|dd }|S |dd }|S )	z8Helper to get expected range from a both inclusive ranger   leftNrightr   neitherboth )begin_to_matchend_to_match
both_rangeinclusive_endpoints
left_matchright_matchexpected_ranger   r   d/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/indexes/datetimes/test_date_range.py_get_expected_range*   s,   
r%   c                   @   sB   e Zd Zdd Zdd Zdd Zejdd Zd	d
 Z	dd Z
dS )TestTimestampEquivDateRangec                 C   2   t dddd}|d }tddd}||ksJ d S N2009041520090519
US/Easterntzr   r   r   selfrngstamptsr   r   r$   test_date_range_timestamp_equivL      z;TestTimestampEquivDateRange.test_date_range_timestamp_equivc                 C   r'   )Nr)   r*   dateutil/US/Easternr,   r   r.   r/   r   r   r$   (test_date_range_timestamp_equiv_dateutilS   r5   zDTestTimestampEquivDateRange.test_date_range_timestamp_equiv_dateutilc                 C   s>   t ddtdd}|d }tdtdd}||ksJ d S r(   )r   pytzr   r   r/   r   r   r$   -test_date_range_timestamp_equiv_explicit_pytzZ   s   zITestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_pytzc                 C   sF   ddl m} tdd|dd}|d }td|dd}||ks!J d S )Nr   )dateutil_gettzr)   r*   r+   r,   )pandas._libs.tslibs.timezonesr:   r   r   )r0   gettzr1   r2   r3   r   r   r$   1test_date_range_timestamp_equiv_explicit_dateutila   s
   zMTestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_dateutilc                 C   s6   t ddd}t|dddd }t|}||ksJ d S )N        r   Dperiodsfreqr   )r   r   r   )r0   datetime_instancetimestamp_instancer3   r   r   r$   6test_date_range_timestamp_equiv_from_datetime_instancek   s   zRTestTimestampEquivDateRange.test_date_range_timestamp_equiv_from_datetime_instancec                 C   s*   t ddddd }td}||ksJ d S )Nz
2014-03-05r   rA   rB   r   r.   )r0   rF   r3   r   r   r$   2test_date_range_timestamp_equiv_preserve_frequencyt   s   zNTestTimestampEquivDateRange.test_date_range_timestamp_equiv_preserve_frequencyN)__name__
__module____qualname__r4   r7   r9   tdskip_if_windowsr=   rG   rH   r   r   r   r$   r&   F   s    
		r&   c                   @   s  e Zd Zejdg ddd Zdd Zdd Zd	d
 Z	dd Z
dd Zejjdd Zdd Zdd Zejdddgdd Zejdddgdd Zejdddgdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zejd-g d.ed/d0d0ed/d0d1d2ged3ed4d2ged3d2d5ed4d2d5d2ged3d2d5ed4d2d5d6ggd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZejdAdBdCdD Z dEdF Z!dGdH Z"dIdJ Z#dKdL Z$dMdN Z%ejdOeedPd1dQd2d5eedPd1dRd2d5geedSdTd0d2d5eedSdTdQd2d5ggdUdV Z&dWdX Z'ejdg dYdZd[ Z(ejdg dYd\d] Z)ejdg dYd^d_ Z*d`da Z+dbdc Z,ddde Z-dfdg Z.dhdi Z/djdk Z0dldm Z1dndo Z2d6S )pTestDateRangesrD   )NULTSHrA   c                    s   t d|  tdt  d   |d}t fddtddD |d	}t|| td     |d}tg |d	}t|| t    |d}t  g|d	}t|| d S )
N1z
1970-01-01r@   startendrD   c                       g | ]}|   qS r   r   ).0nrL   r3   r   r$   
<listcomp>       z8TestDateRanges.test_date_range_edges.<locals>.<listcomp>r      rD   )r   r   r   r   rangetmassert_index_equal)r0   rD   idxexpr   r\   r$   test_date_range_edges|   s4   

z$TestDateRanges.test_date_range_edgesc                 C   sL   t d}tjtdd ttjd|d W d    d S 1 sw   Y  d S )Nr   Cannot generate range withmatch   rX   rC   rD   )r   pytestraisesr   r   r   min)r0   rD   r   r   r$   )test_date_range_near_implementation_bound   s   "z8TestDateRanges.test_date_range_near_implementation_boundc                 C   s   d}t jt|d tdtjdd W d    n1 sw   Y  t jt|d ttjddd W d    d S 1 s<w   Y  d S )Nz$Neither `start` nor `end` can be NaTrh   
2016-01-01rA   rV   )rl   rm   
ValueErrorr   pdNaTr0   msgr   r   r$   test_date_range_nat   s   "z"TestDateRanges.test_date_range_natc                 C   s   t d  tdddd}W d    n1 sw   Y  |d tdks&J t|dks.J d}tjt|d tdd	d
d W d    d S 1 sJw   Y  d S )N
1677-09-22iA rA   rW   rC   rD   r   rg   rh   z
1969-05-04i 30000DrB   )rb   assert_produces_warningr   r   lenrl   rm   r   )r0   dtiru   r   r   r$   'test_date_range_multiplication_overflow   s   "z6TestDateRanges.test_date_range_multiplication_overflowc                 C   sZ   t dddd}t |d t|dd}||sJ t |d t|dd}||s+J d S )	Nrw   z
2262-04-11rA   rV   r   rx   r   rk   )r   r{   equals)r0   r|   dti2dti3r   r   r$   *test_date_range_unsigned_overflow_handling   s
   z9TestDateRanges.test_date_range_unsigned_overflow_handlingc                 C      d}t jt|d tdddd W d    n1 sw   Y  t jt|d tdddd W d    d S 1 s:w   Y  d S )	Nrg   rh   
1970-02-01i ' rT   rx   
1969-11-14rk   rl   rm   r   r   rt   r   r   r$   .test_date_range_int64_overflow_non_recoverable   s   "z=TestDateRanges.test_date_range_int64_overflow_non_recoverablec           	      C   s   t d}t d}t||dd}|d |ksJ |d |ksJ t|t|dd}t|| t d}t d	}t||dd}|d |ksEJ |d |ksMJ t|t|dd
}t|| d S )Nz
2262-02-23r   z-1HrV   r   r   rk   r   z
1677-10-22rx   )r   r   r{   rb   rc   )	r0   rW   rX   expectedr|   start2end2	expected2r   r   r   r$   >test_date_range_int64_overflow_stride_endpoint_different_signs   s   zMTestDateRanges.test_date_range_int64_overflow_stride_endpoint_different_signsc                 C   r   )	NzCannot generate rangerh   rp   i rA   rB   z
1763-10-12rk   r   rt   r   r   r$   test_date_range_out_of_bounds   s   "z,TestDateRanges.test_date_range_out_of_boundsc                 C   s"   t dddd}t|dksJ d S )Nz1/1/2000 00:00z1/1/2000 00:185minr`   r@   r   r{   r0   r1   r   r   r$   test_date_range_gen_error   s   z(TestDateRanges.test_date_range_gen_errorASYSc                 C   .   t dd|d}tg d|d}t|| d S )N1/1/20137/1/2017r`   )
2013-01-01z
2014-01-01z
2015-01-01rp   
2017-01-01r   r   rb   rc   r0   rD   r1   re   r   r   r$   test_begin_year_alias   s   z$TestDateRanges.test_begin_year_aliasAYc                 C   r   )Nr   r   r`   )
2013-12-31
2014-12-31
2015-12-31z
2016-12-31r   r   r   r   r$   test_end_year_alias  
   z"TestDateRanges.test_end_year_aliasBABYc                 C   r   )Nr   r   r`   )r   r   r   z
2016-12-30r   r   r   r   r$   test_business_end_year_alias  r   z+TestDateRanges.test_business_end_year_aliasc                 C   st   t dddd}tg ddd}t|| |jdksJ t dddd}tg d	dd}t|| |jdks8J d S )
N
2011-12-31z-2Ar?   )rD   rC   )r   z
2009-12-31z
2007-12-31r`   
2011-01-31z-2M)r   z
2010-11-30z
2010-09-30)r   r   rb   rc   rD   )r0   r1   re   r   r   r$   test_date_range_negative_freq  s   z,TestDateRanges.test_date_range_negative_freqc                 C   s*   t dddd}td}|d |ksJ d S )N1/1/2000
   BMSrB   z
2000-01-03r   r.   )r0   r1   ex_firstr   r   r$   test_date_range_bms_bug   s   z&TestDateRanges.test_date_range_bms_bugc                    s   t  d}t|ddd}td t fddt|D  d}t|| td	|dd
d}tdd}|D ]
}| |ksAJ q7d S )N2   F2D)rC   	normalizerD   rj   c                    rY   r   r   rZ   ioffsetsnapr   r$   r]   .  r^   z<TestDateRanges.test_date_range_normalize.<locals>.<listcomp>r`   z1/1/2000 08:15B      )	r   todayr   r   r   ra   rb   rc   r   )r0   r[   r1   valuesthe_timevalr   r   r$   test_date_range_normalize'  s    
z(TestDateRanges.test_date_range_normalizec                 C   sF   t ddtjddddd}|d td	ksJ |d td
ks!J d S )Nr   rj   r   r?   nearest)startingMonthweekday	variationrx   r   z
2013-01-31z
2014-01-30)r   r   FY5253r   r0   drr   r   r$   test_date_range_fy52527  s   z%TestDateRanges.test_date_range_fy5252c                 C   sl   t dddddd}t dddddd}d}tjt|d	 t||d
dd W d    d S 1 s/w   Y  d S )N  r   r_   r?   (   r   	   VOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrh   r   srB   )r   rl   rm   rq   r   r0   rW   rX   ru   r   r   r$   #test_date_range_ambiguous_arguments@  s   "z2TestDateRanges.test_date_range_ambiguous_argumentsc                 C   sp   t dddd}tg dd d}t|| t ddd	dd
}ttdd	dtdd	dtdd	dg}t|| d S )Nz
2018-04-24z
2018-04-27r?   rC   )z2018-04-24 00:00:00z2018-04-25 12:00:00z2018-04-27 00:00:00r`   z2018-04-01 01:00:00z2018-04-01 04:00:00zAustralia/Sydney)r-   rC   z2018-04-01 01:00:00+1100r,   z2018-04-01 02:00:00+1000z2018-04-01 04:00:00+1000)r   r   rb   rc   r   r0   resultr   r   r   r$   #test_date_range_convenience_periodsL  s&   


z2TestDateRanges.test_date_range_convenience_periodszstart,end,result_tz)2018010120180103r+   i  r   r?   r+   r   r   r,   Nc                 C   s0   t ||d|d}t ddddd}t|| d S )Nr?   rC   r-   r   rA   r+   rC   rD   r-   r   rb   rc   )r0   rW   rX   	result_tzr   r   r   r   r$   test_date_range_linspacing_tzf  s   z,TestDateRanges.test_date_range_linspacing_tzc                 C   s   t g ddd}tdddd}t|| t ddgdd}tdddd}t|| t g ddd}tdddd}t|| d S )	N)2014-07-04 09:002014-07-04 10:002014-07-04 11:002014-07-04 12:002014-07-04 13:002014-07-04 14:002014-07-04 15:002014-07-04 16:00BHr`   r   r   2014-07-07 09:00)r   r   r   r   r   r   r   r   r   z2014-07-07 10:00z2014-07-07 11:00z2014-07-07 12:00z2014-07-07 13:00z2014-07-07 14:00z2014-07-07 15:00z2014-07-07 16:00z2014-07-08 09:00z2014-07-08 10:00z2014-07-08 11:00z2014-07-08 12:00z2014-07-08 13:00z2014-07-08 14:00z2014-07-08 15:002014-07-08 16:00r   )r   r   rb   rc   )r0   rd   r1   r   r   r$   test_date_range_businesshour~  s   
z+TestDateRanges.test_date_range_businesshourc                 C   s  d}t jt|d tdd W d    n1 sw   Y  t jt|d tdd W d    n1 s5w   Y  t jt|d tdd W d    n1 sQw   Y  t jt|d tddd	 W d    n1 snw   Y  t jt|d tddd
 W d    n1 sw   Y  t jt|d tddd W d    n1 sw   Y  t jt|d t  W d    d S 1 sw   Y  d S )Nr   rh   r   )rW   )rX   r   r   rT   )rW   rD   )rX   rD   rB   )rl   rm   rq   r   rt   r   r   r$   test_range_misspecified  s.   "z&TestDateRanges.test_range_misspecifiedc                 C   s&   t tdddd}t|dksJ d S )Nz1960-04-01 00:00:00L   zQS-JANrB   )r   r   r{   )r0   r   r   r   r$   test_compat_replace  s   z"TestDateRanges.test_compat_replacec                 C   sb   t jdd}d}tjt|d ttdddtddd|d W d    d S 1 s*w   Y  d S )	Nr_   )minutez4Offset <DateOffset: minute=5> did not increment daterh   r         r`   )r   r	   rl   rm   rq   r   r   )r0   r   ru   r   r   r$   test_catch_infinite_loop  s
    "z'TestDateRanges.test_catch_infinite_looprC   )r   rj   c                 C   s"   t d|dd}t||ksJ d S )N20110101zWOM-1MONrx   r   )r0   rC   resr   r   r$   test_wom_len  s   zTestDateRanges.test_wom_lenc                 C   sb   t djddd}t djddd}t ddd||g}t|dd	}td
dddd}t|| d S )Nz2010-11-07 01:00:00z
US/PacificT)	ambiguousFz2010-11-07 00:00:00r,   rT   r`   z	2010-11-7r?   )rW   rC   rD   r-   )r   tz_localizer   r   rb   rc   )r0   pre_dstpst_dstexpect_datar   r   r   r   r$   test_construct_over_dst  s   
z&TestDateRanges.test_construct_over_dstc                 C   s<   t dddd}ttdtdtdgdd}t|| d S )Nz2013-01-01 00:00:00+09:00z2013/01/01 02:00:00+09:00rT   r`   z2013-01-01 01:00:00+09:00z2013-01-01 02:00:00+09:00)r   r   r   rb   rc   r   r   r   r$   5test_construct_with_different_start_end_string_format  s   zDTestDateRanges.test_construct_with_different_start_end_string_formatc                 C   sJ   d}t jt|d tddtdd W d    d S 1 sw   Y  d S )Nz.Offset <0 \* MonthEnds> did not increment daterh   r   z1/1/2001r   r`   )rl   rm   rq   r   r
   rt   r   r   r$   test_error_with_zero_monthends  s   "z-TestDateRanges.test_error_with_zero_monthendsc                    sT   t dd tdd d}tdddt fdd	td
D  d}t|| d S )Nr?   )months2011-1-1z	2012-1-31r`   r   r   c                    rY   r   r   r   r   rW   r   r$   r]     r^   z1TestDateRanges.test_range_bug.<locals>.<listcomp>r_   )r	   r   r   r   ra   rb   rc   r   r   r   r$   test_range_bug  s
   
 zTestDateRanges.test_range_bugc                 C   s   t d}|tddd}|tddd}t|dd}|jj|jks%J |d |ks-J |d |ks5J t|dd}|jj|jksDJ |d |ksLJ |d |ksTJ t||d	}|jj|jkscJ |d |kskJ |d |kssJ d S )
Nr+   r   r   r?   rW   rC   r   rj   rX   rC   rW   rX   )r   localizer   r   r-   zoner0   r-   rW   rX   r   r   r   r$   test_range_tz_pytz  s   z!TestDateRanges.test_range_tz_pytzz
start, endr>      r   i  r   c                 C   s   t ||dd}|d |ksJ |d |ksJ t|jdks!J t ||ddd}|d |ks1J |d |ks9J t|jdksCJ t |jd d|jd dddd}|d |ks[J |d |kscJ t|jdksmJ d S )NrA   r`   r   r   r+   rD   r-   tzinfo)r   npallhourreplace)r0   rW   rX   r   r   r   r$   test_range_tz_dst_straddle_pytz%  s"   

z.TestDateRanges.test_range_tz_dst_straddle_pytzc                    s   ddl m   fdd}tddd|dd}tddd	|dd}t|d	d
}|j|dks/J |d |ks7J |d |ks?J t|d	d}|j|dksNJ |d |ksVJ |d |ks^J t||d}|j|dksmJ |d |ksuJ |d |ks}J d S )Nr   maybe_get_tzc                    s    d|  S )Nz	dateutil/r   )xr	  r   r$   <lambda>M  s    z7TestDateRanges.test_range_tz_dateutil.<locals>.<lambda>r   r   r+   r  r?   r   rj   r   r   )r;   r
  r   r   r-   r   r   r	  r$   test_range_tz_dateutilG  s    z%TestDateRanges.test_range_tz_dateutil)1D3D2M7W3Hr   c                 C   sV   t ddd}t ddd}t||||d}t||d|d}t||||}t|| d S )Nr   r   r>   	inclusiverD   r   )r   r   r%   rb   rc   r0   rD   inclusive_endpoints_fixturebeginrX   result_ranger   r#   r   r   r$   test_range_closeda  s   z TestDateRanges.test_range_closedc                 C   sV   t ddd}t ddd}t||||d}t||d|d}t||||}t|| d S )N2011/1/1r+   r,   2014/1/1r  r   r   r   r%   rb   rc   r  r   r   r$   )test_range_closed_with_tz_aware_start_endp  s   z8TestDateRanges.test_range_closed_with_tz_aware_start_endc           
      C   sj   t d}t d}t ddd}t ddd}t||||dd}t||d|dd}t||||}	t|	| d S )Nr  r  r+   r,   )r  rD   r-   r   r  )
r0   rD   r  r  rX   begintzendtzr  r   r#   r   r   r$   1test_range_with_tz_closed_with_tz_aware_start_end  s*   
z@TestDateRanges.test_range_with_tz_closed_with_tz_aware_start_endc           
      C   s   t ddd|d}t ddd|d}t ddd|d}t ddd|d}|}|}|}|dkr1|dd  }n|d	kr<|d d
 }n|dkrL|dd  }|d d
 }|dd
 }	t|| t|| t|| t||	 d S )Nz
2015-09-12z
2015-12-01zQS-MARrD   r  z
2015-09-01z
2015-09-11r   r   r   r   r   r   )
r0   r  right_boundaryleft_boundaryboth_boundaryneither_boundaryexpected_rightexpected_leftexpected_bothexpected_neitherr   r   r$   test_range_closed_boundary  sN   z)TestDateRanges.test_range_closed_boundaryc                 C   sB   t dddd}|d tdddksJ |d	 tdd
dksJ d S )N20142015Mr`   r   r>   r      r   r   )r   r   r   r   r   r$   test_years_only  s   zTestDateRanges.test_years_onlyc                 C   s`   t dddd}t dddd}tddgd	d
d d}tddgd	d
d d}t|| t|| d S )Nz2005-01-12 10:00z2005-01-12 16:00345minr`   z2005-01-13 10:00z2005-01-13 16:00z2005-01-12 10:00:00z2005-01-12 15:45:00datetime64[ns]345TdtyperD   r-   z2005-01-13 10:00:00z2005-01-13 15:45:00r   )r0   result_1result_2
expected_1
expected_2r   r   r$   test_freq_divides_end_in_nanos  s    z-TestDateRanges.test_freq_divides_end_in_nanosc                 C   sB   t ddtddd}t|dksJ |d tddd	d
ksJ d S )Nz2010-09-01 05:00:00r   r   )hoursrB   r   r   r   r   r_   )r   r	   r{   r   r   r   r   r$   test_cached_range_bug  s   z$TestDateRanges.test_cached_range_bugc                 C   s.   t ddd}t|ddd}t|dksJ d S )N20130220 10:00r+   r,   rj   r   )r   r   r{   )r0   rW   r   r   r   r$   test_timezone_comparison_bug  s   z+TestDateRanges.test_timezone_comparison_bugc                 C   sR   t ddd}d}tjt|d t|ddd W d    d S 1 s"w   Y  d S )	Nr<  r+   r,   z0Inferred time zone not equal to passed time zonerh   rj   zEurope/Berlinr   )r   rl   rm   AssertionErrorr   )r0   rW   ru   r   r   r$   test_timezone_comparison_assert  s
   "z.TestDateRanges.test_timezone_comparison_assertc                 C   s>   |}t ddd|d}t ddd|dd d d }t|| d S )Nz
2011-06-01z
2011-01-01z-1MS)rW   rX   rD   r-   1MS)rX   rW   rD   r-   r   r   )r0   tz_aware_fixturer-   r   r   r   r   r$   1test_negative_non_tick_frequency_descending_dates  s   z@TestDateRanges.test_negative_non_tick_frequency_descending_datesc                 C   sb   d}d}t ||d|d}t ||ddd}|dkr|dd }n
|dv r)|d d  }t|| d S )	Nz
2021-09-02rA   )rW   rX   rD   r  r   r   r   r   )r   r   r   r   )r0   r  rW   rX   r   r   r   r   r   r$    test_range_where_start_equal_end  s   z/TestDateRanges.test_range_where_start_equal_end)3rI   rJ   rK   rl   markparametrizerf   ro   rv   r}   r   r   slowr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r*  r/  r9  r;  r=  r?  rB  rC  r   r   r   r$   rN   {   s    
"

	

	




5
	



.	rN   c                   @   sn   e Zd ZdZdd Zejdddgdd Zejdddgd	d
 Z	dd Z
ejdddgdd ZdS )TestDateRangeTZz#Tests for date_range with timezonesc                 C   s   t ddddd}|j d S )Nz
2012-01-01z
2012-01-10rA   Hongkongr  )r   r  r   r   r   r$   test_hongkong_tz_convert  s   
z(TestDateRangeTZ.test_hongkong_tz_converttzstrr+   r6   c                 C   sV   t ddddd}|jdk sJ t dd|d	}|j}tdgd }t|| d S )
Nz03/06/2012 00:00   zW-FRIr+   r   r   z
2012-11-02r   r   )r   r  r  rr   Indexrb   rc   )r0   rJ  r   r   r   r   r   r$   #test_date_range_span_dst_transition  s   z3TestDateRangeTZ.test_date_range_span_dst_transitionc                 C   s6   t |}tdd|d}tdd|d}t|| d S )Nr   r   r   )r   r
  r   rb   rc   )r0   rJ  r-   r   r   r   r   r$   %test_date_range_timezone_str_argument+  s   
z5TestDateRangeTZ.test_date_range_timezone_str_argumentc              	   C   sv   ddl m} |}tdddddd|d}tdddddd|d}t||d	}||jks+J t||g}||jks9J d S )
Nr   )fixed_off_no_namei  r?   r   r_   r  r   r   )-pandas.tests.indexes.datetimes.test_timezonesrO  r   r   r-   rr   rL  )r0   rO  offrW   rX   r1   rd   r   r   r$   'test_date_range_with_fixedoffset_noname3  s   z7TestDateRangeTZ.test_date_range_with_fixedoffset_nonamec                 C   s>   t d|d}|jdksJ tddd|d}||d ksJ d S )	Nz3/11/2012 05:00r,   r_   z3/11/2012 04:00r   rT   r   r   )r   r  r   )r0   rJ  r2   r1   r   r   r$   test_date_range_with_tz?  s   z'TestDateRangeTZ.test_date_range_with_tzN)rI   rJ   rK   __doc__rI  rl   rD  rE  rM  rN  rR  rS  r   r   r   r$   rG    s    

rG  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zd\Z	Z
d\ZZejdee	edee
fee	ee
edfee	edee
edfee	edee
edfgdd ZdS )TestGenRangeGenerationc                 C   6   t tttt d}t tttdd}||ksJ d S )Nr   r   )listr   STARTENDr   r0   rng1rng2r   r   r$   test_generateJ     z$TestGenRangeGeneration.test_generatec                 C   rV  )NrW  C)rX  r   rY  rZ  r   r[  r   r   r$   test_generate_cdayO  r_  z)TestGenRangeGeneration.test_generate_cdayc                 C   s@   t ttddddd}tdddtdddg}||ksJ d S )Nr   r?      rj   r      rX  r   r   r0   r1   r   r   r   r$   test_1T  s   zTestGenRangeGeneration.test_1c                 C   sR   t ttdddtdddd}tdddtdddtdddg}||ks'J d S )N  r   r?   r   rj   rd  re  r   r   r$   test_2Y  s    "zTestGenRangeGeneration.test_2c                 C   s4   t ttdddtdddd}g }||ksJ d S )Nrg  r   r_   r   r   rd  re  r   r   r$   test_3^  s    zTestGenRangeGeneration.test_3c                 C   sh   t dddd}t dddd}g d}g d}t|d	d
d d}t|d	dd d}t|| t|| d S )Nz2015-04-15 00:00:03z2016-04-22 00:00:00QrV   z2015-06-22 00:00:04W)z2015-06-30 00:00:03z2015-09-30 00:00:03z2015-12-31 00:00:03z2016-03-31 00:00:03)
z2015-04-19 00:00:03z2015-04-26 00:00:03z2015-05-03 00:00:03z2015-05-10 00:00:03z2015-05-17 00:00:03z2015-05-24 00:00:03z2015-05-31 00:00:03z2015-06-07 00:00:03z2015-06-14 00:00:03z2015-06-21 00:00:03r1  zQ-DECr3  zW-SUNr   )r0   result1result2expected1_listexpected2_list	expected1r   r   r   r$    test_precision_finer_than_offsetc  s    z7TestGenRangeGeneration.test_precision_finer_than_offset)r   r   )r+   zEurope/Londonz	start,endr,   c                 C   s   d}t jt|d t|| W d    n1 sw   Y  t jt|d t||t d W d    d S 1 s9w   Y  d S )Nz>Start and end cannot both be tz-aware with different timezonesrh   r`   )rl   rm   	TypeErrorr   r   r   r   r   r$   test_mismatching_tz_raises_err  s   "z5TestGenRangeGeneration.test_mismatching_tz_raises_errN)rI   rJ   rK   r^  ra  rf  rh  ri  rq  dt1dt2tz1tz2rl   rD  rE  r   rs  r   r   r   r$   rU  I  s$    #	rU  c                   @   sV   e Zd Z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dS )TestBusinessDateRangec                 C   s   t ttt d t tdt d t tdt d d}tjt|d tddd	 W d    n1 s2w   Y  tjt|d t ddd	 W d    n1 sOw   Y  d
}tjt|d t ttdd d W d    d S 1 sqw   Y  d S )Nr`      rB   rk   zperiods must be a number, got Brh   r   2012-1-1r   z>freq must be specified for bdate_range; use date_range insteadr   )r   rY  rZ  r   rl   rm   rr  r   rt   r   r   r$   test_constructor  s   "z&TestBusinessDateRange.test_constructorc                 C   sZ   t ddd}t|dd}|dt   }t|dksJ |d |ks#J |d |ks+J d S )	Nr   r_      ry  r      r   r   )r   r   r   r{   r0   rX   r   	firstDater   r   r$   	test_misc  s   zTestBusinessDateRange.test_miscc                 C   s   d}d}t jt|d t| W d    n1 sw   Y  t jt|d t|dd W d    n1 s7w   Y  t jt|d t|dd W d    n1 sTw   Y  t jt|d t|| W d    d S 1 sqw   Y  d S )Nz
2007/100/1z%could not convert string to Timestamprh   r   r   r   )rl   rm   rq   r   r   )r0   badly_formed_dateru   r   r   r$   test_date_parse_failure  s   
"z-TestBusinessDateRange.test_date_parse_failurec                 C   sB   t dd}t dd}|jjt ksJ ||}t|tsJ d S )N	12/5/2011	12/2/2011)r   _datarD   r   union
isinstancer   r0   r\  r]  r   r   r   r$   test_daterange_bug_456  s
   


z,TestBusinessDateRange.test_daterange_bug_456r  )r   r   r   r   c                 C   s>   d}d}t ||d|d}d}d}t ||dd}t|| d S )	Nz
2018-07-21z
2018-07-29r   r!  z
2018-07-23z
2018-07-27rA   r`   r   )r0   r  rW   rX   r   
bday_startbday_endr   r   r   r$   test_bdays_and_open_boundaries  s   z4TestBusinessDateRange.test_bdays_and_open_boundariesc                 C   s>   t jd }t|d ddd}t|gdd}t|| d S )NrA   r   r   rk   r`   )r   maxfloorto_pydatetimer   r   rb   rc   )r0   rW   r1   r   r   r   r$   test_bday_near_overflow  s   z-TestBusinessDateRange.test_bday_near_overflowc                 C   sV   d}t jd }tjt|d t|ddd W d    d S 1 s$w   Y  d S )Nz"Out of bounds nanosecond timestamprA   rh   rj   r   rB   )r   r  r  r  rl   rm   r   r   )r0   ru   rW   r   r   r$   test_bday_overflow_error  s
   "z.TestBusinessDateRange.test_bday_overflow_errorN)rI   rJ   rK   r{  r  r  r  rl   rD  rE  r  r  r  r   r   r   r$   rx    s    		
rx  c                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jddd eD dd Ze
jdg ddd Ze
jddddgfdddgfddddgfgdd Zd S )!TestCustomDateRangec                 C   s   t ttt d t tdt d t tdt d d}tjt|d tddd	 W d    n1 s2w   Y  tjt|d t ddd	 W d    d S 1 sPw   Y  d S )
Nr`   ry  rB   rk   zperiods must be a number, got Crh   r   rz  r`  )r   rY  rZ  r   rl   rm   rr  r   rt   r   r   r$   r{    s   "z$TestCustomDateRange.test_constructorc                 C   s\   t ddd}t|ddd}|dt   }t|dksJ |d |ks$J |d	 |ks,J d S )
Nr   r_   r|  ry  r`  rk   r}  r   r   )r   r   r   r{   r~  r   r   r$   r    s   zTestCustomDateRange.test_miscc                 C   sJ   t dddd}t dddd}|jjt ksJ ||}t|ts#J d S )Nr  r`  r`   r  )r   r  rD   r   r  r  r   r  r   r   r$   r     s
   
z*TestCustomDateRange.test_daterange_bug_456c                 C   s>   t dddd}tg ddd}t|| |j|jksJ d S )N
2013-05-01r?   r`  rB   )r  
2013-05-02
2013-05-03r`   )r   r   rb   rc   rD   r   r   r   r$   test_cdaterange	  s   z#TestCustomDateRange.test_cdaterangec                 C   s   t ddddd}tg d|jd}t|| |j|jksJ d}tjt|d	 t dddd
 W d    d S 1 s;w   Y  d S )Nr  r?   r`  Sun Mon Tue Wed Thu)rC   rD   weekmask)r  r  
2013-05-05r`   [a custom frequency string is required when holidays or weekmask are passed, got frequency Brh   )rC   r  r   r   rD   rb   rc   rl   rm   rq   r0   r   r   ru   r   r   r$   test_cdaterange_weekmask  s   
"z,TestCustomDateRange.test_cdaterange_weekmaskc                 C   s   t ddddgd}tg d|jd}t|| |j|jks J d}tjt|d t dddgd	 W d    d S 1 s=w   Y  d S )
Nr  r?   r`  )rC   rD   holidays)r  r  
2013-05-06r`   r  rh   )rC   r  r  r  r   r   r$   test_cdaterange_holidays!  s   
"z,TestCustomDateRange.test_cdaterange_holidaysc                 C   s   t dddddgd}tg d|jd}t|| |j|jks!J d}tjt|d	 t ddddgd
 W d    d S 1 s?w   Y  d S )Nr  r?   r`  r  )rC   rD   r  r  )r  r  r  r`   r  rh   )rC   r  r  r  r  r   r   r$   %test_cdaterange_weekmask_and_holidays1  s,   
"z9TestCustomDateRange.test_cdaterange_weekmask_and_holidaysrD   c                 C   s   g | ]	}| d r|qS )r`  )
startswith)rZ   rD   r   r   r$   r]   M  s    zTestCustomDateRange.<listcomp>c                 C   sh   t tt|ddgd |d }d| }tjt|d t tt|d W d    d S 1 s-w   Y  d S )NzMon Wed Friz
2009-03-14)rD   r  r  FOOz!invalid custom frequency string: rh   r`   )r   rY  rZ  rl   rm   rq   )r0   rD   bad_freqru   r   r   r$   test_all_custom_freqL  s   
"z(TestCustomDateRange.test_all_custom_freq	start_end))z2018-01-01T00:00:01.000Zz2018-01-03T00:00:01.000Z)z2018-01-01T00:00:00.010Zz2018-01-03T00:00:00.010Z)z2001-01-01T00:00:00.010Zz2001-01-03T00:00:00.010Zc                 C   s2   |\}}t ||ddd}t|g}t|| d S )Nrj   r   )rW   rX   rC   r  r   )r0   r  rW   rX   r   r   r   r   r$   &test_range_with_millisecond_resolutionZ  s   

z:TestCustomDateRange.test_range_with_millisecond_resolutionzstart,period,expectedz2022-07-23 00:00:00+02:00r   z2022-07-25 00:00:00+02:00z2022-07-22 00:00:00+02:00rj   c                 C   s&   t ||dd}t|}t|| d S )Nr`  rx   r   )r0   rW   periodr   r   r   r   r$   .test_range_with_timezone_and_custombusinessdayi  s   zBTestCustomDateRange.test_range_with_timezone_and_custombusinessdayN)rI   rJ   rK   r{  r  r  r  r  r  r  rl   rD  rE  r   r  r  r  r   r   r   r$   r    s8    		



r  c                  C   s>   t jddgd} tdd| d}tg d| d}t|| d S )	Nz15:00z
2020-11-26)rW   r  z2020-11-25 15:00r@   rx   )z2020-11-25 15:00:00z2020-11-25 16:00:00z2020-11-27 15:00:00z2020-11-27 16:00:00r`   )r   CustomBusinessHourr   r   rb   rc   )rD   r   r   r   r   r$   $test_date_range_with_custom_holidays|  s   	r  ).rT  r   r   r   numpyr  rl   r8   r   pandas._libs.tslibsr   pandas._libs.tslibs.offsetsr   r   r	   r
   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsrL   pandasrr   r   r   r   r   r   r   pandas._testing_testingrb   pandas.core.arrays.datetimesr   rY  rZ  r%   r&   rN   rG  rU  rx  r  r  r   r   r   r$   <module>   s:     5     6RO 