U
    +if                     @   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r2|r2|dd }n|dkrL|rL|dd }nt|dkrj|rj|rj|dd }nV|dkr|r|dd }n<|dkr|r|dd }n"|dkr|dd }n|dd }|S )	z8Helper to get expected range from a both inclusive ranger   leftNrightr   neitherboth )Zbegin_to_matchZend_to_match
both_rangeZinclusive_endpointsZ
left_matchZright_matchexpected_ranger   r   a/home/mars/bis/venv/lib/python3.8/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   s2   t dddd}|d }tddd}||ks.td S N2009041520090519
US/Easterntzr   r   r   AssertionErrorselfrngstamptsr   r   r   test_date_range_timestamp_equivL   s    z;TestTimestampEquivDateRange.test_date_range_timestamp_equivc                 C   s2   t dddd}|d }tddd}||ks.td S )Nr#   r$   dateutil/US/Easternr&   r   r(   r*   r   r   r   (test_date_range_timestamp_equiv_dateutilS   s    zDTestTimestampEquivDateRange.test_date_range_timestamp_equiv_dateutilc                 C   s>   t ddtdd}|d }tdtdd}||ks:td S r"   )r   pytzr   r   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sBtd S )Nr   )dateutil_gettzr#   r$   r%   r&   )pandas._libs.tslibs.timezonesr4   r   r   r)   )r+   Zgettzr,   r-   r.   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s2td S )N        r   Dperiodsfreqr   )r   r   r   r)   )r+   Zdatetime_instancetimestamp_instancer.   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&td S )Nz
2014-03-05r   r:   r;   r   r(   )r+   r>   r.   r   r   r   2test_date_range_timestamp_equiv_preserve_frequencyt   s    zNTestTimestampEquivDateRange.test_date_range_timestamp_equiv_preserve_frequencyN)__name__
__module____qualname__r/   r1   r3   tdZskip_if_windowsr6   r?   r@   r   r   r   r   r!   F   s   
		r!   c                   @   s  e Zd Zejddddddddg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/d0 Zd1d2 Zejd3d4d5d6ged7d8d8ed7d8d9d6ged4ed5d6ged4d6d:ed5d6d:d6ged4d6d:ed5d6d:d;ggd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZejdFdGdHdI Z dJdK Z!dLdM Z"dNdO Z#dPdQ Z$dRdS Z%ejdTeedUd9dVd6d:eedUd9dWd6d:geedXdYd8d6d:eedXdYdVd6d:ggdZd[ Z&d\d] Z'ejdd^d_d`dadbdgdcdd Z(ejdd^d_d`dadbdgdedf Z)ejdd^d_d`dadbdgdgdh Z*didj Z+dkdl Z,dmdn Z-dodp Z.dqdr Z/dsdt Z0dudv Z1dwdx Z2d;S )yTestDateRangesr=   NULTSHr:   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-01r9   startendr=   c                    s   g | ]}|   qS r   r   ).0nrD   r.   r   r   
<listcomp>   s     z8TestDateRanges.test_date_range_edges.<locals>.<listcomp>r      r=   )r   r   r   r   rangetmassert_index_equal)r+   r=   idxexpr   rR   r   test_date_range_edges|   s4    

z$TestDateRanges.test_date_range_edgesc              	   C   s6   t d}tjtdd ttjd|d W 5 Q R X d S )Nr   Cannot generate range withmatch   rO   r<   r=   )r   pytestraisesr   r   r   min)r+   r=   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 5 Q R X t jt|d ttjddd W 5 Q R X d S )Nz$Neither `start` nor `end` can be NaTr]   
2016-01-01r:   rM   )ra   rb   
ValueErrorr   pdZNaTr+   msgr   r   r   test_date_range_nat   s
    z"TestDateRanges.test_date_range_natc              	   C   sx   t d  tdddd}W 5 Q R X |d tdks8tt|dksHtd}tjt|d tdd	d
d W 5 Q R X d S )N
1677-09-22iA r:   rN   r<   r=   r   r\   r]   z
1969-05-04i Z30000Dr;   )	rW   Zassert_produces_warningr   r   r)   lenra   rb   r   )r+   dtiri   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}||s2tt |d t|dd}||sVtd S )	Nrk   z
2262-04-11r:   rM   r   rl   r   r`   )r   rm   equalsr)   )r+   rn   dti2Zdti3r   r   r   *test_date_range_unsigned_overflow_handling   s
    z9TestDateRanges.test_date_range_unsigned_overflow_handlingc              	   C   sX   d}t jt|d tdddd W 5 Q R X t jt|d tdddd W 5 Q R X d S )	Nr\   r]   
1970-02-01i ' rK   rl   
1969-11-14r`   ra   rb   r   r   rh   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.t|d |ks>tt|t|dd}t|| t d}t d	}t||dd}|d |kst|d |kstt|t|dd
}t|| d S )Nz
2262-02-23rt   z-1HrM   r   r   r`   rs   z
1677-10-22rl   )r   r   r)   rm   rW   rX   )	r+   rN   rO   expectedrn   Zstart2Zend2	expected2rq   r   r   r   >test_date_range_int64_overflow_stride_endpoint_different_signs   s    zMTestDateRanges.test_date_range_int64_overflow_stride_endpoint_different_signsc              	   C   sX   d}t jt|d tdddd W 5 Q R X t jt|d tdddd W 5 Q R X d S )	NzCannot generate ranger]   re   i r:   r;   z
1763-10-12r`   ru   rh   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td S )Nz1/1/2000 00:00z1/1/2000 00:18Z5minrU   r9   r   rm   r)   r+   r,   r   r   r   test_date_range_gen_error   s    z(TestDateRanges.test_date_range_gen_errorZASZYSc                 C   s4   t dd|d}tdddddg|d}t|| d S )	N1/1/20137/1/2017rU   
2013-01-01z
2014-01-01z
2015-01-01re   
2017-01-01r   r   rW   rX   r+   r=   r,   rZ   r   r   r   test_begin_year_alias   s    z$TestDateRanges.test_begin_year_aliasAYc                 C   s2   t dd|d}tddddg|d}t|| d S )Nr~   r   rU   
2013-12-31
2014-12-31
2015-12-31z
2016-12-31r   r   r   r   r   test_end_year_alias  s    
 z"TestDateRanges.test_end_year_aliasZBAZBYc                 C   s2   t dd|d}tddddg|d}t|| d S )Nr~   r   rU   r   r   r   z
2016-12-30r   r   r   r   r   test_business_end_year_alias  s    
 z+TestDateRanges.test_business_end_year_aliasc                 C   sx   t dddd}tdddgdd}t|| |jdks:tt dd	dd}tdd
dgd	d}t|| |jd	ksttd S )Nz
2011-12-31z-2Ar8   )r=   r<   z
2009-12-31z
2007-12-31rU   z
2011-01-31z-2Mz
2010-11-30z
2010-09-30)r   r   rW   rX   r=   r)   )r+   r,   rZ   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&td S )N1/1/2000
   ZBMSr;   z
2000-01-03r   r(   )r+   r,   Z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snt	qnd S )N2   FZ2D)r<   	normalizer=   r_   c                    s   g | ]}|   qS r   r   rP   ioffsetZsnapr   r   rS   .  s     z<TestDateRanges.test_date_range_normalize.<locals>.<listcomp>rU   z1/1/2000 08:15B      )
r   todayr   r   r   rV   rW   rX   r   r)   )r+   rQ   r,   valuesZ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.t|d td
ksBtd S )Nr   r_   r   r8   Znearest)ZstartingMonthweekdayZ	variationrl   r   z
2013-01-31z
2014-01-30)r   r   ZFY5253r   r)   r+   drr   r   r   test_date_range_fy52527  s    z%TestDateRanges.test_date_range_fy5252c              	   C   sV   t dddddd}t dddddd}d}tjt|d	 t||d
dd W 5 Q R X d S )N  r   rT   r8   (   r   	   VOf the four parameters: start, end, periods, and freq, exactly three must be specifiedr]   r   sr;   )r   ra   rb   rf   r   r+   rN   rO   ri   r   r   r   #test_date_range_ambiguous_arguments@  s    z2TestDateRanges.test_date_range_ambiguous_argumentsc                 C   sr   t dddd}tdddg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-27r8   r<   z2018-04-24 00:00:00z2018-04-25 12:00:00z2018-04-27 00:00:00rU   z2018-04-01 01:00:00z2018-04-01 04:00:00zAustralia/Sydney)r'   r<   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   rW   rX   r   r+   resultrw   r   r   r   #test_date_range_convenience_periodsL  s&    


z2TestDateRanges.test_date_range_convenience_periodszstart,end,result_tz20180101Z20180103r%   i  r   r8   r&   Nc                 C   s0   t ||d|d}t ddddd}t|| d S )Nr8   r<   r'   r   r:   r%   r<   r=   r'   r   rW   rX   )r+   rN   rO   Z	result_tzr   rw   r   r   r   test_date_range_linspacing_tzf  s    z,TestDateRanges.test_date_range_linspacing_tzc                 C   s   t ddddddddgd	d
}tddd	d
}t|| t ddgd	d
}tddd	d
}t|| t ddddddddddddddddddddddddgd	d
}tddd	d
}t|| d S )Nz2014-07-04 09:00z2014-07-04 10:00z2014-07-04 11:00z2014-07-04 12:00z2014-07-04 13:00z2014-07-04 14:00z2014-07-04 15:00z2014-07-04 16:00ZBHrU   z2014-07-07 09:00z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:00z2014-07-08 16:00)r   r   rW   rX   )r+   rY   r,   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 5 Q R X t jt|d tdd W 5 Q R X t jt|d tdd W 5 Q R X t jt|d tddd	 W 5 Q R X t jt|d tddd
 W 5 Q R X t jt|d tddd W 5 Q R X t jt|d t  W 5 Q R X d S )Nr   r]   r   )rN   )rO   r   r   rK   )rN   r=   )rO   r=   r;   )ra   rb   rf   r   rh   r   r   r   test_range_misspecified  s     z&TestDateRanges.test_range_misspecifiedc                 C   s&   t tdddd}t|dks"td S )Nz1960-04-01 00:00:00L   zQS-JANr;   )r   r   rm   r)   )r+   r   r   r   r   test_compat_replace  s    z"TestDateRanges.test_compat_replacec              	   C   sL   t jdd}d}tjt|d$ ttdddtddd|d W 5 Q R X d S )	NrT   )minutez4Offset <DateOffset: minute=5> did not increment dater]   r         rU   )r   r	   ra   rb   rf   r   r   )r+   r   ri   r   r   r   test_catch_infinite_loop  s    z'TestDateRanges.test_catch_infinite_loopr<   )r   r_   c                 C   s"   t d|dd}t||kstd S )NZ20110101zWOM-1MONrl   r{   )r+   r<   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)Z	ambiguousFz2010-11-07 00:00:00r&   rK   rU   z	2010-11-7r8   )rN   r<   r=   r'   )r   Ztz_localizer   r   rW   rX   )r+   Zpre_dstZpst_dstZexpect_datarw   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:00rK   rU   z2013-01-01 01:00:00+09:00z2013-01-01 02:00:00+09:00)r   r   r   rW   rX   r   r   r   r   5test_construct_with_different_start_end_string_format  s      zDTestDateRanges.test_construct_with_different_start_end_string_formatc              	   C   s4   d}t jt|d tddtdd W 5 Q R X d S )Nz.Offset <0 \* MonthEnds> did not increment dater]   r   z1/1/2001r   rU   )ra   rb   rf   r   r
   rh   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 )Nr8   )months2011-1-1z	2012-1-31rU   r   r   c                    s   g | ]}|   qS r   r   r   r   rN   r   r   rS     s     z1TestDateRanges.test_range_bug.<locals>.<listcomp>rT   )r	   r   r   r   rV   rW   rX   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sJt|d |ksZt|d |ksjtt|dd}|jj|jkst|d |kst|d |kstt||d	}|jj|jkst|d |kst|d |kstd S )
Nr%   r   r   r8   rN   r<   r   r_   rO   r<   rN   rO   )r   Zlocalizer   r   r'   zoner)   r+   r'   rN   rO   r   r   r   r   test_range_tz_pytz  s    z!TestDateRanges.test_range_tz_pytzz
start, endr7      r   i  r   c                 C   s   t ||dd}|d |kst|d |ks.tt|jdksBtt ||ddd}|d |ksbt|d |ksrtt|jdkstt |jd d|jd dddd}|d |kst|d |kstt|jdkstd S )Nr:   rU   r   r   r%   r=   r'   tzinfo)r   r)   npallhourreplace)r+   rN   rO   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^t|d |ksnt|d |ks~tt|d	d}|j|dkst|d |kst|d |kstt||d}|j|dkst|d |kst|d |kstd S )Nr   maybe_get_tzc                    s    d|  S )Nz	dateutil/r   )xr   r   r   <lambda>M      z7TestDateRanges.test_range_tz_dateutil.<locals>.<lambda>r   r   r%   r   r8   r   r_   r   r   )r5   r   r   r   r'   r)   r   r   r   r   test_range_tz_dateutilG  s     z%TestDateRanges.test_range_tz_dateutilZ1DZ3DZ2MZ7WZ3Hc                 C   sV   t ddd}t ddd}t||||d}t||d|d}t||||}t|| d S )Nr   r   r7   	inclusiver=   r   )r   r   r    rW   rX   r+   r=   inclusive_endpoints_fixturebeginrO   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    rW   rX   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   r=   r'   r   r   )
r+   r=   r   r   rO   ZbegintzZendtzr   r   r   r   r   r   1test_range_with_tz_closed_with_tz_aware_start_end  s2        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rb|dd  }n6|d	krx|d d
 }n |dkr|dd  }|d d
 }|dd
 }	t|| t|| t|| t||	 d S )Nz
2015-09-12z
2015-12-01zQS-MARr=   r   z
2015-09-01z
2015-09-11r   r   r   r   r   r   )
r+   r   Zright_boundaryZleft_boundaryZboth_boundaryZneither_boundaryZexpected_rightZexpected_leftZexpected_bothZ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&t|d	 tdd
dks>td S )NZ2014Z2015MrU   r   r7   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:00Z345minrU   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]Z345TZdtyper=   r'   z2005-01-13 10:00:00z2005-01-13 15:45:00r   )r+   Zresult_1Zresult_2Z
expected_1Z
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$t|d tddd	d
ks>td S )Nz2010-09-01 05:00:00r   r   )hoursr;   r   r   r   r   rT   )r   r	   rm   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*td S )N20130220 10:00r%   r&   r_   r   )r   r   rm   r)   )r+   rN   r   r   r   r   test_timezone_comparison_bug  s    z+TestDateRanges.test_timezone_comparison_bugc              	   C   s<   t ddd}d}tjt|d t|ddd W 5 Q R X d S )	Nr   r%   r&   z0Inferred time zone not equal to passed time zoner]   r_   zEurope/Berlinr   )r   ra   rb   r)   r   )r+   rN   ri   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)rN   rO   r=   r'   Z1MS)rO   rN   r=   r'   r   r   )r+   Ztz_aware_fixturer'   r   rw   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krR|d d  }t|| d S )	Nz
2021-09-02r:   )rN   rO   r=   r   r   r   r   r   )r   r   r   r   )r+   r   rN   rO   r   r   rw   r   r   r    test_range_where_start_equal_end  s       z/TestDateRanges.test_range_where_start_equal_end)3rA   rB   rC   ra   markparametrizer[   rd   rj   ro   rr   rv   Zslowry   rz   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   r   r   r   r   r   r   r   r   r   rE   {   s   
"

	

	




5
	



.	rE   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-10r:   ZHongkongr   )r   r   r   r   r   r   test_hongkong_tz_convert  s    z(TestDateRangeTZ.test_hongkong_tz_converttzstrr%   r0   c                 C   sV   t ddddd}|jdk s"t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   r)   rg   IndexrW   rX   )r+   r   r   r   rw   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   rW   rX   )r+   r   r'   r   rw   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sVtt||g}||jksrtd S )
Nr   )fixed_off_no_namei  r8   r   rT   r   r   r   )Z-pandas.tests.indexes.datetimes.test_timezonesr   r   r   r'   r)   rg   r   )r+   r   offrN   rO   r,   rY   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ttddd|d}||d ks:td S )	Nz3/11/2012 05:00r&   rT   z3/11/2012 04:00r   rK   r   r   )r   r   r)   r   )r+   r   r-   r,   r   r   r   test_date_range_with_tz?  s    z'TestDateRangeTZ.test_date_range_with_tzN)rA   rB   rC   __doc__r   ra   r   r   r   r   r   r   r   r   r   r   r     s   

r   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   s6   t tttt d}t tttdd}||ks2td S )Nr   r   )listr   STARTENDr   r)   r+   rng1rng2r   r   r   test_generateJ  s    z$TestGenRangeGeneration.test_generatec                 C   s6   t tttt d}t tttdd}||ks2td S )Nr  C)r  r   r  r  r   r)   r  r   r   r   test_generate_cdayO  s    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<td S )Nr   r8      r_   r      r  r   r   r)   r+   r,   rw   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sNtd S )N  r   r8   r   r_   r  r  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s0td S )Nr  r   rT   r   r   r  r  r   r   r   test_3^  s     zTestGenRangeGeneration.test_3c              
   C   s|   t dddd}t dddd}ddd	d
g}ddddddddddg
}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QrM   z2015-06-22 00:00:04Wz2015-06-30 00:00:03z2015-09-30 00:00:03z2015-12-31 00:00:03z2016-03-31 00:00:03z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:03r   zQ-DECr   zW-SUNr   )r+   Zresult1Zresult2Zexpected1_listZexpected2_listZ	expected1rx   r   r   r    test_precision_finer_than_offsetc  sP              z7TestGenRangeGeneration.test_precision_finer_than_offset)r   r   )r%   zEurope/Londonz	start,endr&   c              	   C   sV   d}t jt|d t|| W 5 Q R X t jt|d t||t d W 5 Q R X d S )Nz>Start and end cannot both be tz-aware with different timezonesr]   rU   )ra   rb   	TypeErrorr   r   r   r   r   r   test_mismatching_tz_raises_err  s
    z5TestGenRangeGeneration.test_mismatching_tz_raises_errN)rA   rB   rC   r  r
  r  r  r  r  Zdt1Zdt2Ztz1Ztz2ra   r   r   r   r  r   r   r   r   r   I  s"   #	r   c                   @   sZ   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dddg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 5 Q R X tjt|d t ddd	 W 5 Q R X d
}tjt|d t ttdd d W 5 Q R X d S )NrU      r;   r`   zperiods must be a number, got Br]   r   2012-1-1r   z>freq must be specified for bdate_range; use date_range insteadr   )r   r  r  r   ra   rb   r  r   rh   r   r   r   test_constructor  s    z&TestBusinessDateRange.test_constructorc                 C   sZ   t ddd}t|dd}|dt   }t|dks6t|d |ksFt|d |ksVtd S )	Nr   rT      r  r      r   r   )r   r   r   rm   r)   r+   rO   r   Z	firstDater   r   r   	test_misc  s    zTestBusinessDateRange.test_miscc              	   C   s   d}d}t jt|d t| W 5 Q R X t jt|d t|dd W 5 Q R X t jt|d t|dd W 5 Q R X t jt|d t|| W 5 Q R X d S )Nz
2007/100/1z%could not convert string to Timestampr]   r   r   r   )ra   rb   rf   r   r   )r+   Zbadly_formed_dateri   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&t||}t|ts>td S )N	12/5/2011	12/2/2011)r   _datar=   r   r)   union
isinstancer   r+   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-27r:   rU   r   )r+   r   rN   rO   r   Z
bday_startZbday_endrw   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 )Nr:   r   r   r`   rU   )r   maxfloorto_pydatetimer   r   rW   rX   )r+   rN   r,   rw   r   r   r   test_bday_near_overflow  s    z-TestBusinessDateRange.test_bday_near_overflowc              	   C   s@   d}t jd }tjt|d t|ddd W 5 Q R X d S )Nz"Out of bounds nanosecond timestampr:   r]   r_   r   r;   )r   r)  r*  r+  ra   rb   r   r   )r+   ri   rN   r   r   r   test_bday_overflow_error  s    z.TestBusinessDateRange.test_bday_overflow_errorN)rA   rB   rC   r  r  r   r'  ra   r   r   r(  r,  r-  r   r   r   r   r    s   		
r  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ddd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 5 Q R X tjt|d t ddd	 W 5 Q R X d S )
NrU   r  r;   r`   zperiods must be a number, got Cr]   r   r  r	  )r   r  r  r   ra   rb   r  r   rh   r   r   r   r    s    z$TestCustomDateRange.test_constructorc                 C   s\   t ddd}t|ddd}|dt   }t|dks8t|d |ksHt|d	 |ksXtd S )
Nr   rT   r  r  r	  r`   r  r   r   )r   r   r   rm   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.t||}t|tsFtd S )Nr!  r	  rU   r"  )r   r#  r=   r   r)   r$  r%  r   r&  r   r   r   r'     s
    
z*TestCustomDateRange.test_daterange_bug_456c                 C   s@   t dddd}tdddgdd}t|| |j|jks<td S )N
2013-05-01r8   r	  r;   
2013-05-02
2013-05-03rU   )r   r   rW   rX   r=   r)   r   r   r   r   test_cdaterange	  s    z#TestCustomDateRange.test_cdaterangec              	   C   sp   t ddddd}tdddg|jd}t|| |j|jks@td	}tjt|d
 t dddd W 5 Q R X d S )Nr/  r8   r	  Sun Mon Tue Wed Thu)r<   r=   weekmaskr0  
2013-05-05rU   [a custom frequency string is required when holidays or weekmask are passed, got frequency Br]   )r<   r4  	r   r   r=   rW   rX   r)   ra   rb   rf   r+   r   rw   ri   r   r   r   test_cdaterange_weekmask  s         z,TestCustomDateRange.test_cdaterange_weekmaskc              	   C   st   t ddddgd}tdddg|jd}t|| |j|jksBtd	}tjt|d
 t dddgd W 5 Q R X d S )Nr/  r8   r	  )r<   r=   holidaysr0  r1  
2013-05-06rU   r6  r]   )r<   r:  r7  r8  r   r   r   test_cdaterange_holidays!  s     z,TestCustomDateRange.test_cdaterange_holidaysc              	   C   sx   t dddddgd}tdddg|jd	}t|| |j|jksDtd
}tjt|d t ddddgd W 5 Q R X d S )Nr/  r8   r	  r3  )r<   r=   r4  r:  r0  r5  r;  rU   r6  r]   )r<   r4  r:  r7  r8  r   r   r   %test_cdaterange_weekmask_and_holidays1  s,     z9TestCustomDateRange.test_cdaterange_weekmask_and_holidaysr=   c                 C   s   g | ]}| d r|qS )r	  )
startswith)rP   r=   r   r   r   rS   M  s     
 zTestCustomDateRange.<listcomp>c              	   C   sR   t tt|ddgd |d }d| }tjt|d t tt|d W 5 Q R X d S )NzMon Wed Friz
2009-03-14)r=   r4  r:  ZFOOz!invalid custom frequency string: r]   rU   )r   r  r  ra   rb   rf   )r+   r=   Zbad_freqri   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 )Nr_   r   )rN   rO   r<   r   r   )r+   r@  rN   rO   r   rw   r   r   r   &test_range_with_millisecond_resolutionZ  s    

z:TestCustomDateRange.test_range_with_millisecond_resolutionN)rA   rB   rC   r  r  r'  r2  r9  r<  r=  ra   r   r   r   r?  rA  r   r   r   r   r.    s(   		 
r.  c                  C   sB   t jddgd} tdd| d}tddd	d
g| d}t|| d S )Nz15:00z
2020-11-26)rN   r:  z2020-11-25 15:00r9   rl   z2020-11-25 15:00:00z2020-11-25 16:00:00z2020-11-27 15:00:00z2020-11-27 16:00:00rU   )r   ZCustomBusinessHourr   r   rW   rX   )r=   r   rw   r   r   r   $test_date_range_with_custom_holidaysj  s    	rB  ).r   r   r   r   numpyr   ra   r2   r   Zpandas._libs.tslibsr   Zpandas._libs.tslibs.offsetsr   r   r	   r
   r   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsrD   Zpandasrg   r   r   r   r   r   r   Zpandas._testingZ_testingrW   Zpandas.core.arrays.datetimesr   r  r  r    r!   rE   r   r   r  r.  rB  r   r   r   r   <module>   s8    5     6RO 