U
    f/eP                     @   s<  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%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                   @   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ts r%   R/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/indexes/datetimes/test_date_range.pytest_date_range_timestamp_equiv0   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_dateutil7   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_pytz>   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.timezonesr,   r   r   r   )r!   Zgettzr"   r#   r$   r%   r%   r&   1test_date_range_timestamp_equiv_explicit_dateutilE   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_instanceO   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   r2   r3   r   r   )r!   r6   r$   r%   r%   r&   2test_date_range_timestamp_equiv_preserve_frequencyX   s    zNTestTimestampEquivDateRange.test_date_range_timestamp_equiv_preserve_frequencyN)__name__
__module____qualname__r'   r)   r+   tdZskip_if_windows_python_3r.   r7   r8   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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*d+d,d-ged.d/d/ed.d/d0d-ged+ed,d-ged+d-d1ed,d-d1d-ged+d-d1ed,d-d1d2ggd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zej	d=d>d?d@ ZdAdB Z dCdD Z!dEdF Z"dGdH Z#dIdJ Z$ej	dKeedLd0dMd-d1eedLd0dNd-d1geedOdPd/d-d1eedOdPdMd-d1ggdQdR Z%dSdT Z&ej	ddUdVdWdXdYdgdZd[ Z'd\d] Z(ej	d^d_d`d2gdadb Z)dcdd Z*dedf Z+dgdh Z,didj Z-dkdl Z.dmdn Z/d2S )oTestDateRangesc              	   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   endr4   r5   )r   pytestraisesr   r   r   min)r!   r5   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-01r2   startrC   r5   )rD   rE   
ValueErrorr   pdZNaTr!   msgr%   r%   r&   test_date_range_natg   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 r2   rJ   r4   r5   r   r>   r?   z
1969-05-04i Z30000Dr3   )	tmZassert_produces_warningr   r   r   lenrD   rE   r   )r!   dtirN   r%   r%   r&   'test_date_range_multiplication_overflowo   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 )	NrP   z
2262-04-11r2   rI   r   rQ   rB   )r   rS   equalsr   )r!   rT   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 ' HrQ   
1969-11-14rB   rD   rE   r   r   rM   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-23r\   z-1HrI   r   rV   rB   rZ   z
1677-10-22rQ   )r   r   r   rS   rR   assert_index_equal)	r!   rJ   rC   expectedrT   Zstart2Zend2	expected2rX   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?   rH   i r2   r3   z
1763-10-12rB   r]   rM   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5minr5   r1   r   rS   r   r!   r"   r%   r%   r&   test_date_range_gen_error   s    z(TestDateRanges.test_date_range_gen_errorr5   Z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/2017rd   
2013-01-01z
2014-01-01z
2015-01-01rH   
2017-01-01r   r   rR   r_   r!   r5   r"   expr%   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 )Nrh   ri   rd   
2013-12-31
2014-12-31
2015-12-31z
2016-12-31rl   rm   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 )Nrh   ri   rd   rr   rs   rt   z
2016-12-30rl   rm   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-2Ar0   )r5   r4   z
2009-12-31z
2007-12-31rd   z
2011-01-31z-2Mz
2010-11-30z
2010-09-30)r   r   rR   r_   r5   r   )r!   r"   rn   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BMSr3   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)r4   	normalizer5   rA   c                    s   g | ]}|   qS r%   r%   .0ioffsetZsnapr%   r&   
<listcomp>   s     z<TestDateRanges.test_date_range_normalize.<locals>.<listcomp>rd   z1/1/2000 08:15B      )
r   todayr   r   r   rangerR   r_   r   r   )r!   nr"   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 )Nrj   rA   r   r0   Znearest)ZstartingMonthweekdayZ	variationrQ   r   z
2013-01-31z
2014-01-30)r   r   ZFY5253r   r   r!   drr%   r%   r&   test_date_range_fy5252   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      r0   (   r   	   VOf the four parameters: start, end, periods, and freq, exactly three must be specifiedr?   ry   sr3   )r   rD   rE   rK   r   r!   rJ   rC   rN   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-27r0   r4   z2018-04-24 00:00:00z2018-04-25 12:00:00z2018-04-27 00:00:00rd   z2018-04-01 01:00:00z2018-04-01 04:00:00zAustralia/Sydney)r   r4   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   rR   r_   r   r!   resultr`   r%   r%   r&   #test_date_range_convenience_periods  s&    


z2TestDateRanges.test_date_range_convenience_periodszstart,end,result_tz20180101Z20180103r   i  r   r0   r   Nc                 C   s0   t ||d|d}t ddddd}t|| d S )Nr0   r4   r   r   r2   r   r4   r5   r   r   rR   r_   )r!   rJ   rC   Z	result_tzr   r`   r%   r%   r&   test_date_range_linspacing_tz'  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BHrd   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   rR   r_   )r!   idxr"   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?   rx   )rJ   )rC   ry   r   r[   )rJ   r5   )rC   r5   r3   )rD   rE   rK   r   rM   r%   r%   r&   test_range_misspecifiedt  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-JANr3   )r   r   rS   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 )	Nr   )minutez4Offset <DateOffset: minute=5> did not increment dater?   r         rd   )r   r	   rD   rE   rK   r   r   )r!   r   rN   r%   r%   r&   test_catch_infinite_loop  s    z'TestDateRanges.test_catch_infinite_loopr4   )r   rA   c                 C   s"   t d|dd}t||kstd S )NZ20110101zWOM-1MONrQ   re   )r!   r4   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   r[   rd   z	2010-11-7r0   )rJ   r4   r5   r   )r   Ztz_localizer   r   rR   r_   )r!   Zpre_dstZpst_dstZ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:00r[   rd   z2013-01-01 01:00:00+09:00z2013-01-01 02:00:00+09:00)r   r   r   rR   r_   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?   rx   z1/1/2001r   rd   )rD   rE   rK   r   r
   rM   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 )Nr0   )months2011-1-1z	2012-1-31rd   r   r   c                    s   g | ]}|   qS r%   r%   r}   r   rJ   r%   r&   r     s     z1TestDateRanges.test_range_bug.<locals>.<listcomp>r   )r	   r   r   r   r   rR   r_   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   r0   rJ   r4   r   rA   rC   r4   rJ   rC   )r   Zlocalizer   r   r   zoner   r!   r   rJ   rC   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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 )Nr2   rd   r   rV   r   r5   r   tzinfo)r   r   npallhourreplace)r!   rJ   rC   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>      z7TestDateRanges.test_range_tz_dateutil.<locals>.<lambda>r   r   r   r   r0   r   rA   r   r   )r-   r   r   r   r   r   r   r%   r   r&   test_range_tz_dateutil  s     z%TestDateRanges.test_range_tz_dateutil1D3D2M7W3Hc           	      C   s   t ddd}t ddd}t||d |d}t||d|d}t||d|d}|}|}||d krh|d d }||d kr|dd  }t|| t|| d S )	Nr   r   r/   closedr5   leftrightrV   r   )r   r   rR   r_   )	r!   r5   beginrC   r   r   r   expected_leftexpected_rightr%   r%   r&   test_range_closed"  s    z TestDateRanges.test_range_closedc                 C   sb  t ddd}t ddd}dD ]}t||d |d}t||d|d}t||d|d}|}|}||d	 krp|d d	 }||d
 kr|dd  }t|| t|| qt d}t d}t ddd}	t ddd}
dD ]}t||d |dd}t||d|dd}t||d|dd}|}|}|
|d	 kr*|d d	 }|	|d
 krD|dd  }t|| t|| qd S )Nz2011/1/1r   r   z2014/1/1)r   r   r   r   r   rp   r   r   r   rV   r   r   )r   r5   r   )r   r   rR   r_   )r!   r   rC   r5   r   r   r   r   r   ZbegintzZendtzr%   r%   r&   )test_range_closed_with_tz_aware_start_end5  s<    z8TestDateRanges.test_range_closed_with_tz_aware_start_endr   r   r   c                 C   s   t ddd|d}t ddd|d}t ddd|d}| } }}|dkrP|dd  }|dkrd|d d	 }|d kr|dd  }|d d	 }t|| t|| t|| d S )
Nz
2015-09-12z
2015-12-01zQS-MARr5   r   z
2015-09-01r   r   r   rV   r   )r!   r   Zright_boundaryZleft_boundaryZboth_boundaryr   r   Zexpected_bothr%   r%   r&   test_range_closed_boundary]  s:             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Mrd   r   r/   r      rV   r   )r   r   r   r   r%   r%   r&   test_years_onlyw  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345minrd   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dtyper5   r   z2005-01-13 10:00:00z2005-01-13 15:45:00rl   )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   )hoursr3   r   r   r   r   r   )r   r	   rS   r   r   rf   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   rA   r   )r   r   rS   r   )r!   rJ   r   r%   r%   r&   test_timezone_comparaison_bug  s    z,TestDateRanges.test_timezone_comparaison_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?   rA   zEurope/Berlinr   )r   rD   rE   r   r   )r!   rJ   rN   r%   r%   r&    test_timezone_comparaison_assert  s    z/TestDateRanges.test_timezone_comparaison_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)rJ   rC   r5   r   Z1MS)rC   rJ   r5   r   rV   r   )r!   Ztz_aware_fixturer   r   r`   r%   r%   r&   1test_negative_non_tick_frequency_descending_dates  s    z@TestDateRanges.test_negative_non_tick_frequency_descending_dates)0r9   r:   r;   rG   rO   rU   rY   r^   rD   markZslowrb   rc   rg   parametrizero   ru   rv   rw   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=   _   s   

	

	




5
	

(
r=   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-10r2   ZHongkongr   )r   r   r   r%   r%   r&   test_hongkong_tz_convert  s    z(TestDateRangeTZ.test_hongkong_tz_converttzstrr   r(   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-02ry   r   )r   r   r   r   rL   IndexrR   r_   )r!   r   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 )Nrx   ry   r   )r   r   r   rR   r_   )r!   r   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sVtt||g}||jksrtd S )
Nr   )fixed_off_no_namei  r0   r   r   r   r   r   )Z-pandas.tests.indexes.datetimes.test_timezonesr   r   r   r   r   rL   r   )r!   r   offrJ   rC   r"   r   r%   r%   r&   'test_date_range_with_fixedoffset_noname  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   r   z3/11/2012 04:00ry   r[   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)r9   r:   r;   __doc__r   rD   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_generate  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_cday  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   r0      rA   r      r   r   r   r   r!   r"   r`   r%   r%   r&   test_1  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   r0   r   rA   r   r   r%   r%   r&   test_2  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   r   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QrI   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-SUNrl   )r!   Zresult1Zresult2Zexpected1_listZexpected2_listZ	expected1ra   r%   r%   r&    test_precision_finer_than_offset  sP              z7TestGenRangeGeneration.test_precision_finer_than_offset)rk   rk   )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?   rd   )rD   rE   	TypeErrorr   r   r   r%   r%   r&   test_mismatching_tz_raises_err!  s
    z5TestGenRangeGeneration.test_mismatching_tz_raises_errN)r9   r:   r;   r   r   r  r  r  r  Zdt1Zdt2Ztz1Ztz2rD   r   r   r   r	  r%   r%   r%   r&   r     s"   #	r   c                   @   sV   e Zd Zdd Zdd Zdd Zdd Zej	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 )Nrd      r3   rB   zperiods must be a number, got Br?   r   2012-1-1r   z>freq must be specified for bdate_range; use date_range insteadry   )r   r   r   r   rD   rE   r  r   rM   r%   r%   r&   test_constructor4  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   r      r  r      r   rV   )r   r   r   rS   r   r!   rC   r   Z	firstDater%   r%   r&   	test_miscD  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?   ry   r   r   )rD   rE   rK   r   r   )r!   Zbadly_formed_daterN   r%   r%   r&   test_date_parse_failureM  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   _datar5   r   r   union
isinstancer   r!   r   r   r   r%   r%   r&   test_daterange_bug_456]  s
    


z,TestBusinessDateRange.test_daterange_bug_456r   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-27r2   rd   r   )r!   r   rJ   rC   r   Z
bday_startZbday_endr`   r%   r%   r&   test_bdays_and_open_boundariesf  s    z4TestBusinessDateRange.test_bdays_and_open_boundariesc                 C   s>   t jd }t|d ddd}t|gdd}t|| d S )Nr2   r   r   rB   rd   )r   maxfloorto_pydatetimer   r   rR   r_   )r!   rJ   r"   r`   r%   r%   r&   test_bday_near_overflows  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 timestampr2   r?   rA   r   r3   )r   r  r  r  rD   rE   r   r   )r!   rN   rJ   r%   r%   r&   test_bday_overflow_errorz  s    z.TestBusinessDateRange.test_bday_overflow_errorN)r9   r:   r;   r  r  r  r  rD   r   r   r  r  r  r%   r%   r%   r&   r
  3  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 )
Nrd   r  r3   rB   zperiods must be a number, got Cr?   r   r  r   )r   r   r   r   rD   rE   r  r   rM   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   r   r  r  r   rB   r  r   rV   )r   r   r   rS   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   rd   r  )r   r  r5   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-01r0   r   r3   
2013-05-02
2013-05-03rd   )r   r   rR   r_   r5   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!  r0   r   Sun Mon Tue Wed Thu)r4   r5   weekmaskr"  
2013-05-05rd   [a custom frequency string is required when holidays or weekmask are passed, got frequency Br?   )r4   r&  	r   r   r5   rR   r_   r   rD   rE   rK   r!   r   r`   rN   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!  r0   r   )r4   r5   holidaysr"  r#  
2013-05-06rd   r(  r?   )r4   r,  r)  r*  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!  r0   r   r%  )r4   r5   r&  r,  r"  r'  r-  rd   r(  r?   )r4   r&  r,  r)  r*  r%   r%   r&   %test_cdaterange_weekmask_and_holidays  s,     z9TestCustomDateRange.test_cdaterange_weekmask_and_holidaysr5   c                 C   s   g | ]}| d r|qS )r   )
startswith)r~   r5   r%   r%   r&   r     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)r5   r&  r,  ZFOOz!invalid custom frequency string: r?   rd   )r   r   r   rD   rE   rK   )r!   r5   Zbad_freqrN   r%   r%   r&   test_all_custom_freq  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 )NrA   r   )rJ   rC   r4   r   rl   )r!   r2  rJ   rC   r   r`   r%   r%   r&   &test_range_with_millisecond_resolution  s    

z:TestCustomDateRange.test_range_with_millisecond_resolutionN)r9   r:   r;   r  r  r  r$  r+  r.  r/  rD   r   r   r   r1  r3  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)rJ   r,  z2020-11-25 15:00r1   rQ   z2020-11-25 15:00:00z2020-11-25 16:00:00z2020-11-27 15:00:00z2020-11-27 16:00:00rd   )r   ZCustomBusinessHourr   r   rR   r_   )r5   r   r`   r%   r%   r&   $test_date_range_with_custom_holidays  s    	r4  )-r   r   r   r   Znumpyr   rD   r*   r   Zpandas._libs.tslibsr   Zpandas._libs.tslibs.offsetsr   r   r	   r
   r   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr<   ZpandasrL   r   r   r   r   r   r   Zpandas._testingZ_testingrR   Zpandas.core.arrays.datetimesr   r   r   r   r=   r   r   r
  r   r4  r%   r%   r%   r&   <module>   s4    5    P6RO 