a
    Pf                     @   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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m Z m!Z! ddl"m#Z$ dd	l%m&Z' dd
l(m)Z)m*Z* ddl+m,Z, edddeddd Z-Z.dd Z/G dd dZ0G dd dZ1G dd dZ2G dd dZ3G dd dZ4G dd dZ5G dd dZ6G dd  d Z7d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)	DataFrameDatetimeIndexSeries	Timedelta	Timestampbdate_range
date_rangeoffsets)_generate_range)FixedOffsetfixed_off_no_name)USFederalHolidayCalendar       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!   g/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/indexes/datetimes/test_date_range.py_get_expected_range3   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.J d S N2009041520090519
US/Easterntzr   r   r   selfrngstamptsr!   r!   r$   test_date_range_timestamp_equivU   s    z;TestTimestampEquivDateRange.test_date_range_timestamp_equivc                 C   s2   t dddd}|d }tddd}||ks.J d S )Nr(   r)   dateutil/US/Easternr+   r   r-   r.   r!   r!   r$   (test_date_range_timestamp_equiv_dateutil\   s    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_pytzc   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sBJ d S )Nr   )dateutil_gettzr(   r)   r*   r+   )pandas._libs.tslibs.timezonesr8   r   r   )r/   Zgettzr0   r1   r2   r!   r!   r$   1test_date_range_timestamp_equiv_explicit_dateutilj   s
    zMTestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_dateutilc                 C   s6   t ddd}t|dddd }t|}||ks2J d S )N        r   Dperiodsfreqr   )r   r   r   )r/   Zdatetime_instancetimestamp_instancer2   r!   r!   r$   6test_date_range_timestamp_equiv_from_datetime_instancet   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   r>   r?   r   r-   )r/   rB   r2   r!   r!   r$   2test_date_range_timestamp_equiv_preserve_frequency}   s    zNTestTimestampEquivDateRange.test_date_range_timestamp_equiv_preserve_frequencyN)__name__
__module____qualname__r3   r5   r7   tdZskip_if_windowsr:   rC   rD   r!   r!   r!   r$   r&   O   s   
		r&   c                   @   s  e Zd Zdd Zdd Zdd Zejdg dd	d
 Z	d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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.d/d/ed.d/d0d1ged2ed3d1ged2d1d4ed3d1d4d1ged2d1d4ed3d1d4d5ggd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA Z dBdC Z!dDdE Z"dFdG Z#dHdI Z$ejdJeedKd0dLd1d4eedKd0dMd1d4geedNdOd/d1d4eedNdOdLd1d4ggdPdQ Z%dRdS Z&ejdg dTejdUd5d1gdVdW Z'ejdg dTdXdY Z(dZd[ Z)d\d] Z*d^d_ Z+d`da Z,dbdc Z-ddde Z.dfdg Z/dhdi Z0djdk Z1ejdg dldmdn Z2ejdg dodpdq Z3d5drdsdtZ4dudv Z5d5S )wTestDateRangesc                 C   s"   t ddddd}|jdksJ d S )Nz
2000-01-01r   YETEST)startr@   rA   name)r   rM   )r/   idxr!   r!   r$   test_date_range_name   s    z#TestDateRanges.test_date_range_namec                 C   sD   d}t jt|d tdddd W d    n1 s60    Y  d S )Nz!periods must be a number, got foomatch1/1/2000Zfoor>   rL   r@   rA   )pytestraises	TypeErrorr   r/   msgr!   r!   r$   test_date_range_invalid_periods   s    z.TestDateRanges.test_date_range_invalid_periodsc                 C   sZ   d}t jt|d tddd}W d    n1 s40    Y  tddd}t || d S )Nz:Non-integer 'periods' in pd.date_range, pd.timedelta_rangerP   rR   g      %@r@   
   )tmassert_produces_warningFutureWarningr   assert_index_equal)r/   rX   r0   expr!   r!   r$   !test_date_range_fractional_period   s
    *z0TestDateRanges.test_date_range_fractional_periodzfreq,freq_depr))2MEZ2M)Z2SMEZ2SM)Z2BQEZ2BQ)Z2BYEZ2BYc                 C   s   d|dd   d}d|dd   d t dd|d}tjt|d	 t dd|d}W d    n1 sh0    Y  t|| d S )
N'r   $' is deprecated and will be removed !in a future version, please use '
' instead.rR   r=   r?   rP   )r   r\   r]   r^   r_   )r/   rA   	freq_deprZdepr_msgexpectedresultr!   r!   r$   /test_date_range_frequency_M_SM_BQ_BY_deprecated   s    ,z>TestDateRanges.test_date_range_frequency_M_SM_BQ_BY_deprecatedc                 C   sL   t ddd}tjtdd t|ddd W d    n1 s>0    Y  d S )N  r   zpass as a string insteadrP   )r>         )endrA   r@   )r   rT   rU   rV   r   )r/   edater!   r!   r$   !test_date_range_tuple_freq_raises   s    z0TestDateRanges.test_date_range_tuple_freq_raisesrA   )nsusmsminshr>   c                    s   t d|  tdt  d   |d}t fddtddD d	|d
}t|| td     |d}tg d	|d
}t|| t    |d}t  gd	|d
}t|| d S )N1z
1970-01-01r=   rL   rn   rA   c                    s   g | ]}|   qS r!   r!   ).0nrH   r2   r!   r$   
<listcomp>       z8TestDateRanges.test_date_range_edges.<locals>.<listcomp>r   rl   M8[ns]dtyperA   )r   r   r   r   ranger\   r_   )r/   rA   rN   r`   r!   r{   r$   test_date_range_edges   s6    

z$TestDateRanges.test_date_range_edgesc                 C   sJ   t d}tjtdd  ttjd|d W d    n1 s<0    Y  d S )Nr   Cannot generate range withrP      rn   r@   rA   )r   rT   rU   r   r   r   rt   )r/   rA   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 s80    Y  t jt|d  ttjddd W d    n1 sv0    Y  d S )Nz$Neither `start` nor `end` can be NaTrP   
2016-01-01r>   rx   )rT   rU   
ValueErrorr   pdZNaTrW   r!   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.0    Y  |d tdksLJ t|dks\J d}tjt|d tdd	d
d W d    n1 s0    Y  d S )N
1677-09-22iA r>   rS   r   r   rP   z
1969-05-04i Z30000Dr?   )r\   r]   r   r   lenrT   rU   r   )r/   dtirX   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}||s2J t |d t|dd}||sVJ d S )	Nr   z
2262-04-11r>   rx   r   rS   r   r   )r   r   equals)r/   r   Zdti2Zdti3r!   r!   r$   *test_date_range_unsigned_overflow_handling   s
    z9TestDateRanges.test_date_range_unsigned_overflow_handlingc                 C   s   d}t jt|d tdddd W d    n1 s60    Y  t jt|d tdddd W d    n1 sr0    Y  d S )	Nr   rP   
1970-02-01i ' rv   rS   
1969-11-14r   rT   rU   r   r   rW   r!   r!   r$   .test_date_range_int64_overflow_non_recoverable   s
    ,z=TestDateRanges.test_date_range_int64_overflow_non_recoverablez
s_ts, e_ts)z
2262-02-23r   )r   z
1677-10-22c                 C   s`   t |}t |}t||dd}|d |ks.J |d |ks>J t|t|dd}t|| d S )Nz-1hrx   r   r   r   )r   r   r   r\   r_   )r/   Zs_tsZe_tsrL   rn   rh   r   r!   r!   r$   >test_date_range_int64_overflow_stride_endpoint_different_signs  s    	zMTestDateRanges.test_date_range_int64_overflow_stride_endpoint_different_signsc                 C   s   d}t jt|d tdddd W d    n1 s60    Y  t jt|d tdddd W d    n1 sr0    Y  d S )	NzCannot generate rangerP   r   i r>   r?   z
1763-10-12r   r   rW   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:18Z5minrA   r=   )r   r   r/   r0   r!   r!   r$   test_date_range_gen_error"  s    z(TestDateRanges.test_date_range_gen_errorc                    s   t  d}t|ddd}td t fddt|D d d	}t|| td
|ddd}tdd}|D ]}| |kspJ qpd S )N2   FZ2D)r@   	normalizerA   r   c                    s   g | ]}|   qS r!   r!   ry   ioffsetZsnapr!   r$   r|   .  r}   z<TestDateRanges.test_date_range_normalize.<locals>.<listcomp>r~   r   z1/1/2000 08:15B      )	r   todayr   r   r   r   r\   r_   r   )r/   rz   r0   rh   Zthe_timevalr!   r   r$   test_date_range_normalize&  s    
z(TestDateRanges.test_date_range_normalizec                 C   sj   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    n1 s\0    Y  d S )N  r   rl   r<   (   r   	   VOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrP   r[   ru   r?   )r   rT   rU   r   r   r/   rL   rn   rX   r!   r!   r$   #test_date_range_ambiguous_arguments8  s    z2TestDateRanges.test_date_range_ambiguous_argumentsc                 C   s   t ddd|d}tg dd| 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<   r@   unit)z2018-04-24 00:00:00z2018-04-25 12:00:00z2018-04-27 00:00:00M8[]r   z2018-04-01 01:00:00z2018-04-01 04:00:00zAustralia/Sydney)r,   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   r\   r_   r   as_unitr/   r   ri   rh   r!   r!   r$   #test_date_range_convenience_periodsD  s.    



z2TestDateRanges.test_date_range_convenience_periodsc                 C   s.  t dddd}t| }t| gj}t|gj}tjt	dd ||k W d    n1 sf0    Y  tjt	dd ||k W d    n1 s0    Y  t
g d}||k}t|| tg ddd	}|d |d d df k}t|| tg d
g dg dg}||k}t|| d S )N
2011-01-01r<   r*   r@   r,   zUnable to coerce to SeriesrP   )TTTr   rM   )TFF)FTF)FFT)r   r   Zto_framenparrayZto_listTrT   rU   r   r   r\   Zassert_frame_equalZassert_series_equalassert_numpy_array_equal)r/   r0   ZdfZarrZarr2rh   resultsr!   r!   r$    test_date_range_index_comparison`  s&    &&z/TestDateRanges.test_date_range_index_comparisonz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<   r   r   r>   r*   r@   rA   r,   r   r\   r_   )r/   rL   rn   Z	result_tzri   rh   r!   r!   r$   test_date_range_linspacing_tz|  s    z,TestDateRanges.test_date_range_linspacing_tzc                 C   s:   d}d}t ||dd}t ||tddd}t|| d S )N
2020-01-01z
2020-01-113Dr   r<   )days)r   r   r\   r_   )r/   rL   rn   rng1rng2r!   r!   r$   test_date_range_timedelta  s
    z(TestDateRanges.test_date_range_timedeltac                 C   s  d}t jt|d tdd W d    n1 s20    Y  t jt|d tdd W d    n1 sj0    Y  t jt|d tdd W d    n1 s0    Y  t jt|d tddd	 W d    n1 s0    Y  t jt|d tddd
 W d    n1 s0    Y  t jt|d tddd W d    n1 sT0    Y  t jt|d t  W d    n1 s0    Y  d S )Nr   rP   rR   )rL   )rn   r[   rZ   rv   )rL   rA   )rn   rA   r?   rT   rU   r   r   rW   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-JANr?   )r   r   r   )r/   ri   r!   r!   r$   test_compat_replace  s    z"TestDateRanges.test_compat_replacec                 C   s`   t jdd}d}tjt|d. ttdddtddd|d W d    n1 sR0    Y  d S )	Nrl   )minutez4Offset <DateOffset: minute=5> did not increment daterP   r         r   )r   r	   rT   rU   r   r   r   )r/   r   rX   r!   r!   r$   test_catch_infinite_loop  s    z'TestDateRanges.test_catch_infinite_loopc                 C   sj   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:00
US/PacificT)	ambiguousFz2010-11-07 00:00:00r+   rv   r   z	2010-11-7r<   )rL   r@   rA   r,   r   )r   Ztz_localizer   r   r   r\   r_   )r/   r   Zpre_dstZpst_dstZexpect_datarh   ri   r!   r!   r$   test_construct_over_dst  s    

z&TestDateRanges.test_construct_over_dstc                 C   sD   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:00rv   rA   r   z2013-01-01 01:00:00+09:00z2013-01-01 02:00:00+09:00r   )r   r   r   r   r\   r_   r   r!   r!   r$   5test_construct_with_different_start_end_string_format  s     zDTestDateRanges.test_construct_with_different_start_end_string_formatc                 C   sH   d}t jt|d" tddtdd W d    n1 s:0    Y  d S )Nz.Offset <0 \* MonthEnds> did not increment daterP   rR   z1/1/2001r   r   )rT   rU   r   r   r
   rW   r!   r!   r$   test_error_with_zero_monthends  s    z-TestDateRanges.test_error_with_zero_monthendsc                    s`   t dd tdd |d}tdddt fdd	td
D d| d d}t|| d S )Nr<   )months2011-1-1z	2012-1-31r   r   r   c                    s   g | ]}|   qS r!   r!   r   r   rL   r!   r$   r|     r}   z1TestDateRanges.test_range_bug.<locals>.<listcomp>rl   r   r   r   )r	   r   r   r   r   r\   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sJJ |d |ksZJ |d |ksjJ t|dd}|jj|jksJ |d |ksJ |d |ksJ t||d	}|jj|jksJ |d |ksJ |d |ksJ d S )
Nr*   r   r   r<   rL   r@   r   r   rn   r@   rL   rn   )r   Zlocalizer   r   r,   zoner/   r,   rL   rn   drr!   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sBJ t ||ddd}|d |ksbJ |d |ksrJ t|jdksJ t |jd d|jd dddd}|d |ksJ |d |ksJ t|jdksJ d S )Nr>   r   r   r   r*   rA   r,   tzinfo)r   r   allhourreplace)r/   rL   rn   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snJ |d |ks~J t|d	d}|j|dksJ |d |ksJ |d |ksJ t||d}|j|dksJ |d |ksJ |d |ksJ d S )Nr   maybe_get_tzc                    s    d|  S )Nz	dateutil/r!   )xr   r!   r$   <lambda>6  r}   z7TestDateRanges.test_range_tz_dateutil.<locals>.<lambda>r   r   r*   r   r<   r   r   r   r   )r9   r   r   r   r,   r   r!   r   r$   test_range_tz_dateutil0  s     z%TestDateRanges.test_range_tz_dateutil)Z1Dr   rb   Z7WZ3hrJ   r,   c           	      C   sV   t d|d}t d|d}t||||d}t||d|d}t||||}t|| d S )N2011/1/1r+   2014/1/1)	inclusiverA   r    r   r   r%   r\   r_   )	r/   rA   r,   inclusive_endpoints_fixturebeginrn   result_ranger"   r#   r!   r!   r$   test_range_closedJ  s    z TestDateRanges.test_range_closedc           
      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   rA   r,   r    r   )
r/   rA   r   r   rn   ZbegintzZ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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rA   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_boundaryx  sN    z)TestDateRanges.test_range_closed_boundaryc                 C   s   |}t ddd|d}t ddd|d}t|| t ddd|d}t dd	d|d}t|| t dd
d|d}t ddd|d}t|| t dd
d|d}	t ddd|d}
t|	|
 d S )NZ2014Z2015MEr   z
2014-01-31
2014-12-31ZMS
2014-01-01
2015-01-01Z2020rJ   z
2019-12-31YSr   r   )r/   Ztz_naive_fixturer,   r   	expected1r   	expected2rng3Z	expected3Zrng4	expected4r!   r!   r$   test_date_range_years_only  s    z)TestDateRanges.test_date_range_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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]r   rA   r,   z2005-01-13 10:00:00z2005-01-13 15:45:00r   r   r\   r_   )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$J |d tddd	d
ks>J d S )Nz2010-09-01 05:00:00r   r   hoursr?   r   r   r   r   rl   )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+   r   r   )r   r   r   )r/   rL   ri   r!   r!   r$   test_timezone_comparison_bug  s    z+TestDateRanges.test_timezone_comparison_bugc                 C   sP   t ddd}d}tjt|d t|ddd W d    n1 sB0    Y  d S )	Nr	  r*   r+   z0Inferred time zone not equal to passed time zonerP   r   zEurope/Berlinr   )r   rT   rU   AssertionErrorr   )r/   rL   rX   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-01r   z-1MS)rL   rn   rA   r,   Z1MS)rn   rL   rA   r,   r   r   )r/   Ztz_aware_fixturer,   ri   rh   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 rR|d d  }t|| d S )	Nz
2021-09-02r>   )rL   rn   rA   r   r    r   r   r   )r   r   r    r   )r/   r   rL   rn   ri   r"   rh   r!   r!   r$    test_range_where_start_equal_end  s    z/TestDateRanges.test_range_where_start_equal_endc                 C   s>   t dddd}tdd|dd}tg ddd	}t|| d S )
Nr[   9   r<   )r  r   nanosecondsz1970-01-01 00:00:00a)rn   r@   rA   rM   )
z1968-08-02T05:59:59.999999973z1968-09-28T15:59:59.999999976z1968-11-25T01:59:59.999999979z1969-01-21T11:59:59.999999982z1969-03-19T21:59:59.999999985z1969-05-16T07:59:59.999999988z1969-07-12T17:59:59.999999991z1969-09-08T03:59:59.999999994z1969-11-04T13:59:59.999999997z1970-01-01T00:00:00.000000000r   )r	   r   r   r\   r_   )r/   rA   ri   rh   r!   r!   r$   .test_freq_dateoffset_with_relateivedelta_nanos  s    z=TestDateRanges.test_freq_dateoffset_with_relateivedelta_nanos))rv   H)Z2minZ2T)Z1sZ1S)Z2msZ2L)Z1usZ1U)Z2nsZ2Nc                 C   s   t jd|ddd }t jd|ddd }d| d}d| d tdd	|d
}tjt|d tdd	|d
}W d    n1 s0    Y  t|| d S )N[0-9]*r   maxsplitrc   z9' is deprecated and will be removed in a future version, zplease use 'z	' insteadrR   r   r?   rP   resplitr   r\   r]   r^   r_   r/   rA   rg   Zfreq_msgZfreq_depr_msgrX   rh   ri   r!   r!   r$   'test_frequencies_H_T_S_L_U_N_deprecated  s    
,z6TestDateRanges.test_frequencies_H_T_S_L_U_N_deprecated))Z200YEZ200A)rJ   Y)z2YE-MAYz2A-MAY)zYE-MAYzY-MAYc                 C   s   t jd|ddd }t jd|ddd }d| d}d| d tdd	|d
}tjt|d tdd	|d
}W d    n1 s0    Y  t|| d S )Nr  r   r  rc   rd   re   rf   rR   r   r?   rP   r  r  r!   r!   r$   'test_frequencies_A_deprecated_Y_renamed$  s    ,z6TestDateRanges.test_frequencies_A_deprecated_Y_renamed)returnc                 C   s`   d}t jt|d tdddd}W d    n1 s60    Y  tddgd	d
}t || d S )NzS'm' is deprecated and will be removed in a future version, please use 'ME' instead.rP   z
2010-01-01r   mr?   z
2010-01-31z
2010-02-28r   r   )r\   r]   r^   r   r   r_   )r/   rX   ri   rh   r!   r!   r$   -test_to_offset_with_lowercase_deprecated_freq9  s    ,z<TestDateRanges.test_to_offset_with_lowercase_deprecated_freqc                 C   sX   t ddd}t|ddd}t|dks*J |d |dt   ksFJ |jdksTJ d S )	N  r      Z1Brm   )rL   rA   r@   r   r   )r   r   r   r   r   rA   )r/   sdaterN   r!   r!   r$   test_date_range_bdayD  s
    z#TestDateRanges.test_date_range_bday)6rE   rF   rG   rO   rY   ra   rT   markparametrizerj   rp   r   r   r   r   r   r   Z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  r  r  r   r$  r!   r!   r!   r$   rI      s   	


#






.	
	
rI   c                   @   s   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
dd Zejdddgdd Zejdddgdd Zejdg dg dg dg ddedddg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!   r$   test_hongkong_tz_convertO  s    z(TestDateRangeTZ.test_hongkong_tz_converttzstrr*   r4   c                 C   sZ   t ddddd}|jdk s"J t dd|d	}|j}tjdgd d
d}t|| d S )Nz03/06/2012 00:00   zW-FRIr*   r   r   z
2012-11-02r[   r   Zint32r   )r   r   r   r   Indexr\   r_   )r/   r)  r   ri   rh   r!   r!   r$   #test_date_range_span_dst_transitionV  s    z3TestDateRangeTZ.test_date_range_span_dst_transitionc                 C   s6   t |}tdd|d}tdd|d}t|| d S )NrR   r[   r   )r   r   r   r\   r_   )r/   r)  r,   ri   rh   r!   r!   r$   %test_date_range_timezone_str_argumentd  s    
z5TestDateRangeTZ.test_date_range_timezone_str_argumentc              	   C   s   t dd}tdddddd|d}tdd	dddd|d}t||d
}||jksPJ t|t||d}t|| tdd}|j|jk sJ d S )Ni  z+07:00  r<   r   rl   r   r   r   r   r   z3/11/2012 05:00:00+07:00z6/11/2012 05:00:00+07:00)	r   r   r   r,   r   r\   r_   valuesr   )r/   offrL   rn   r0   r   r   r!   r!   r$   test_date_range_with_fixed_tzl  s    

z-TestDateRangeTZ.test_date_range_with_fixed_tzc              	   C   sj   t }tdddddd|d}tdddddd|d}t||d}||jksJJ t||g}||jksfJ d S )	Nr/  r<   r   rl   r   r   r   r   )r   r   r   r,   r   r,  )r/   r1  rL   rn   r0   rN   r!   r!   r$   'test_date_range_with_fixedoffset_nonamey  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+   rl   z3/11/2012 04:00r[   rv   r   r   )r   r   r   )r/   r)  r1   r0   r!   r!   r$   test_date_range_with_tz  s    z'TestDateRangeTZ.test_date_range_with_tzr,   Europe/Londonzdateutil/Europe/Londonc                 C   s   t jtjdd  tddddd W d    n1 s60    Y  tddd|dd	}|d
 td|dksjJ |d td|dksJ d S )NzCannot infer dst timerP   z2013-10-26 23:00z2013-10-27 01:00r5  rv   r,   rA   Zinfer)rA   r,   r   r   r+   r   z2013-10-27 01:00:00+0000)rT   rU   r6   ZAmbiguousTimeErrorr   r   )r/   r,   timesr!   r!   r$   "test_date_range_ambiguous_endpoint  s    $
z2TestDateRangeTZ.test_date_range_ambiguous_endpointztz, option, expected)r   shift_forward2019-03-10 03:00)dateutil/US/Pacificr9  r:  )r   shift_backward2019-03-10 01:00)r;  r<  r=  r   r   r  r:  c                 C   sn   t jtjdd  tddddd W d    n1 s60    Y  tddd||d}|d	 t||d
ksjJ d S )Nz2019-03-10 02:00:00rP   z2019-03-10 00:00z2019-03-10 02:00r   rv   r6  )rA   r,   Znonexistentr   r+   )rT   rU   r6   ZNonExistentTimeErrorr   r   )r/   r,   optionrh   r7  r!   r!   r$   $test_date_range_nonexistent_endpoint  s    $
z4TestDateRangeTZ.test_date_range_nonexistent_endpointN)rE   rF   rG   __doc__r(  rT   r%  r&  r-  r.  r2  r3  r4  r8  r   r?  r!   r!   r!   r$   r'  L  s,   





r'  c                   @   s   e Zd Zejdde fde fg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 )TestGenRangeGenerationfreqstr,offsetr   Cc                 C   s<   t tttd |dd}t tttd |dd}||ks8J d S )Nrq   )r@   r   r   )listgenerate_rangeSTARTEND)r/   freqstrr   r   r   r!   r!   r$   test_generate  s    z$TestGenRangeGeneration.test_generatec                 C   sH   t ttdddd dt dd}tdddtdddg}||ksDJ d S )Nr   r<   r"  r   rq   rL   rn   r@   r   r      rD  rE  r   r   r/   r0   rh   r!   r!   r$   test_1  s    
	zTestGenRangeGeneration.test_1c                 C   sZ   t ttdddtdddd t dd}tdddtdddtdddg}||ksVJ d S )N  r   r<   rq   rJ  r   rL  rM  r!   r!   r$   test_2  s    

	"zTestGenRangeGeneration.test_2c                 C   s<   t ttdddtdddd t dd}g }||ks8J d S )NrO  r   rl   r   rq   rJ  rL  rM  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:00ZQErx   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:03r  zQE-DECr  W-SUNr  )r/   Zresult1result2Zexpected1_listZexpected2_listr   r   r!   r!   r$    test_precision_finer_than_offset  s     z7TestGenRangeGeneration.test_precision_finer_than_offset)
2017-01-01rV  )r*   r5  z	start,endr+   c                 C   s~   d}t jt|d t|| W d    n1 s20    Y  t jt|d  t||t d W d    n1 sp0    Y  d S )Nz>Start and end cannot both be tz-aware with different timezonesrP   r   )rT   rU   rV   r   r   r   r!   r!   r$   test_mismatching_tz_raises_err  s
    (z5TestGenRangeGeneration.test_mismatching_tz_raises_errN)rE   rF   rG   rT   r%  r&  r   r   rI  rN  rP  rQ  rU  Zdt1Zdt2Ztz1Ztz2r   rW  r!   r!   r!   r$   rA    s,   
#	rA  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 sd0    Y  tjt|d t ddd	 W d    n1 s0    Y  d
}tjt|d  t ttdd d W d    n1 s0    Y  d S )Nr   rm   r?   r   zperiods must be a number, got BrP   r   2012-1-1r   z>freq must be specified for bdate_range; use date_range insteadr[   )r   rF  rG  r   rT   rU   rV   r   rW   r!   r!   r$   test_constructor!  s    **z&TestBusinessDateRange.test_constructorc                 C   sZ   t ddd}t|dd}|dt   }t|dks6J |d |ksFJ |d |ksVJ d S )	Nr   rl      rm   r      r   r   )r   r   r   r   r/   rn   r   Z	firstDater!   r!   r$   	test_misc1  s    zTestBusinessDateRange.test_miscc                 C   s   d}d}t jt|d t| W d    n1 s40    Y  t jt|d t|dd W d    n1 sn0    Y  t jt|d t|dd W d    n1 s0    Y  t jt|d t|| W d    n1 s0    Y  d S )Nz
2007/100/1z;Unknown datetime string format, unable to parse: 2007/100/1rP   r[   r   r   )rT   rU   r   r   r   )r/   Zbadly_formed_daterX   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   _datarA   r   union
isinstancer   r/   r   r   ri   r!   r!   r$   test_daterange_bug_456J  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>   r   r   )r/   r   rL   rn   ri   Z
bday_startZbday_endrh   r!   r!   r$   test_bdays_and_open_boundariesS  s    z4TestBusinessDateRange.test_bdays_and_open_boundariesc                 C   sD   t jd }t|d ddd}t|gddd}t|| d S )Nr>   r   r   r   r   rq   )	r   maxfloorto_pydatetimer   r   r   r\   r_   )r/   rL   r0   rh   r!   r!   r$   test_bday_near_overflow`  s    z-TestBusinessDateRange.test_bday_near_overflowc                 C   sT   d}t jd }tjt|d t|ddd W d    n1 sF0    Y  d S )Nz"Out of bounds nanosecond timestampr>   rP   r   r   r?   )r   rh  ri  rj  rT   rU   r   r   )r/   rX   rL   r!   r!   r$   test_bday_overflow_errorg  s    z.TestBusinessDateRange.test_bday_overflow_errorN)rE   rF   rG   rZ  r^  r_  rf  rT   r%  r&  rg  rk  rl  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	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 sd0    Y  tjt|d t ddd	 W d    n1 s0    Y  d S )
Nr   rm   r?   r   zperiods must be a number, got CrP   r   rY  rC  )r   rF  rG  r   rT   rU   rV   r   rW   r!   r!   r$   rZ  p  s    *z$TestCustomDateRange.test_constructorc                 C   s\   t ddd}t|ddd}|dt   }t|dks8J |d |ksHJ |d	 |ksXJ d S )
Nr   rl   r[  rm   rC  r   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sFJ d S )Nr`  rC  r   ra  )r   rb  rA   r   rc  rd  r   re  r!   r!   r$   rf    s
    
z*TestCustomDateRange.test_daterange_bug_456c                 C   sJ   t ddd|d}tg dd| ddd}t|| |j|jksFJ d S )	N
2013-05-01r<   rC  r@   rA   r   )rn  
2013-05-02
2013-05-03r   r   r   )r   r   r\   r_   rA   r   r!   r!   r$   test_cdaterange  s    z#TestCustomDateRange.test_cdaterangec                 C   s   t dddd|d}tg dd| d|jd	}t|| |j|jksJJ d
}tjt|d t dddd W d    n1 s0    Y  d S )Nrn  r<   rC  Sun Mon Tue Wed Thu)r@   rA   weekmaskr   )rn  rp  
2013-05-05r   r   r   [a custom frequency string is required when holidays or weekmask are passed, got frequency BrP   )r@   rt  r   r   rA   r\   r_   rT   rU   r   r/   r   ri   rh   rX   r!   r!   r$   test_cdaterange_weekmask  s    

z,TestCustomDateRange.test_cdaterange_weekmaskc                 C   s   t ddddg|d}tg dd| d|jd}t|| |j|jksLJ d	}tjt|d
  t dddgd W d    n1 s0    Y  d S )Nrn  r<   rC  )r@   rA   holidaysr   )rp  rq  
2013-05-06r   r   r   rv  rP   )r@   rz  rw  rx  r!   r!   r$   test_cdaterange_holidays  s    
z,TestCustomDateRange.test_cdaterange_holidaysc                 C   sR   t dddddg|d}tg dd| d|jd	}t|| |j|jksNJ d S )
Nrn  r<   rC  rs  )r@   rA   rt  rz  r   )rp  ru  r{  r   r   r   )r   r   rA   r\   r_   r   r!   r!   r$   %test_cdaterange_weekmask_and_holidays  s    
z9TestCustomDateRange.test_cdaterange_weekmask_and_holidaysc                 C   sH   d}t jt|d" tddddgd W d    n1 s:0    Y  d S )Nrv  rP   rn  r<   rs  )r@   rt  rz  )rT   rU   r   r   rW   r!   r!   r$   2test_cdaterange_holidays_weekmask_requires_freqstr  s    zFTestCustomDateRange.test_cdaterange_holidays_weekmask_requires_freqstrrA   c                 C   s   g | ]}| d r|qS )rC  )
startswith)ry   rA   r!   r!   r$   r|     r}   zTestCustomDateRange.<listcomp>c                 C   sf   t tt|ddgd |d }d| }tjt|d t tt|d W d    n1 sX0    Y  d S )NzMon Wed Friz
2009-03-14)rA   rt  rz  ZFOOz!invalid custom frequency string: rP   r   )r   rF  rG  rT   rU   r   )r/   rA   Zbad_freqrX   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   s6   |\}}t ||ddd}t|gdd}t|| d S )Nr   r   )rL   rn   r@   r   zM8[ns, UTC]r+  r  )r/   r  rL   rn   ri   rh   r!   r!   r$   &test_range_with_millisecond_resolution  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:00r   c                 C   s,   t ||dd}t|d}t|| d S )NrC  rS   rq   )r   r   r   r\   r_   )r/   rL   Zperiodrh   ri   r!   r!   r$   .test_range_with_timezone_and_custombusinessday  s    zBTestCustomDateRange.test_range_with_timezone_and_custombusinessdayN)rE   rF   rG   rZ  r^  rf  rr  ry  r|  r}  r~  rT   r%  r&  r   r  r  r  r!   r!   r!   r$   rm  o  s8   		



rm  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestDateRangeNonNanoc                 C   sF   d}t jt|d  tddddd W d    n1 s80    Y  d S )Nz+'unit' must be one of 's', 'ms', 'us', 'ns'rP   r   z
2016-03-04r<   rv   r   r   rW   r!   r!   r$   test_date_range_reso_validation  s    z4TestDateRangeNonNano.test_date_range_reso_validationc                 C   sF   d}t jt|d  tddddd W d    n1 s80    Y  d S )Nz)Use a lower freq or a higher unit insteadrP   r   z
2016-01-02rq   rs   r   r   rW   r!   r!   r$   %test_date_range_freq_higher_than_reso  s    z:TestDateRangeNonNano.test_date_range_freq_higher_than_resoc                 C   s   t ddddd}tjddtjd}t|ddd	}t|| t ddd
d
d}tjddtjd}t|dd
d	}t|| t ddddd}tjddtjd}t|ddd	}t|| d S )Nr   z2016-01-01 00:00:01rs   r   l    \tGl   _tGr+  zM8[ms]r   rr   l    `g ) l   A"g ) M8[us]z2016-01-01 00:00:00.001rq   l     ^cQ)! l   AB|cQ)! r~   )r   r   arangeint64r   viewr\   r_   )r/   r   r0   rh   r!   r!   r$   !test_date_range_freq_matches_reso  s    z6TestDateRangeNonNano.test_date_range_freq_matches_resoc                 C   s   t d}t d}tjtdd  t||ddd W d    n1 sD0    Y  t||dd	d}tj|d	j|d	jgtj	d
}t
|d}t|| d S )Nz2022-10-19 11:50:44.719781z2022-10-19 11:50:47.066458zCannot losslessly convert unitsrP   r<   ru   r   r   rr   r+  r  )r   rT   rU   r   r   r   r   r   _valuer  r   r  r\   r_   )r/   rL   rn   r   r0   rh   r!   r!   r$   )test_date_range_freq_lower_than_endpoints-  s    .z>TestDateRangeNonNano.test_date_range_freq_lower_than_endpointsc                 C   s   t d}t d}t||ddd}|jdks2J |jdks@J t |dd|d ddd	d}t	|
 | d S )
Nz
1066-10-14z
2305-07-13r>   ru   r   zM8[s]i8r   iQ )r   Z
datetime64r   rA   r   r  Zastyper  r\   r   Zto_numpy)r/   rL   rn   r   r`   r!   r!   r$   test_date_range_non_nano>  s    

z-TestDateRangeNonNano.test_date_range_non_nanoN)rE   rF   rG   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	dd Z
dd Zd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$ejd%d&fd'ejd(d&fd)ejd*d+fgd,d- Zd.S )/TestDateRangeNonTickFreqc                    sf   t  }tj|d tdd |d}t fdd|D s<J tg dd| d	 d
}t|| d S )Ncalendar2012010120130101rL   rn   rA   r   c                 3   s   | ]}  |V  qd S NZis_on_offsetry   r   r   r!   r$   	<genexpr>V  r}   zWTestDateRangeNonTickFreq.test_date_range_custom_business_month_begin.<locals>.<genexpr>)z
2012-01-03z
2012-02-01z
2012-03-01z
2012-04-02z
2012-05-01z
2012-06-01z
2012-07-02z
2012-08-01z
2012-09-04z
2012-10-01z
2012-11-01z
2012-12-03r   r   r   )r   r   ZCBMonthBeginr   r   r   r\   r_   r/   r   Zhcalr   rh   r!   r   r$   +test_date_range_custom_business_month_beginR  s    
zDTestDateRangeNonTickFreq.test_date_range_custom_business_month_beginc                    sf   t  }tj|d tdd |d}t fdd|D s<J tg dd| d	 d
}t|| d S )Nr  r  r  r  c                 3   s   | ]}  |V  qd S r  r  r  r   r!   r$   r  p  r}   zUTestDateRangeNonTickFreq.test_date_range_custom_business_month_end.<locals>.<genexpr>)z
2012-01-31z
2012-02-29z
2012-03-30z
2012-04-30z
2012-05-31z
2012-06-29z
2012-07-31z
2012-08-31z
2012-09-28z
2012-10-31z
2012-11-30z
2012-12-31r   r   r   )r   r   Z
CBMonthEndr   r   r   r\   r_   r  r!   r   r$   )test_date_range_custom_business_month_endl  s    
zBTestDateRangeNonTickFreq.test_date_range_custom_business_month_endc                 C   sJ   t jddgd}tdd||d}tg dd| d	|d
}t|| d S )Nz15:00z
2020-11-26)rL   rz  z2020-11-25 15:00r=   rL   r@   rA   r   )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   r   )r   ZCustomBusinessHourr   r   r\   r_   )r/   r   rA   ri   rh   r!   r!   r$   $test_date_range_with_custom_holidays  s    

z=TestDateRangeNonTickFreq.test_date_range_with_custom_holidaysc                 C   s   t g dd| ddd}tddd|d}t|| t dd	gd| ddd}tdd	d|d}t|| t g d
d| 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:00r   r   bhr   r  r  r   2014-07-07 09:00)r  r  r  r  r  r  r  r  r  2014-07-07 10:002014-07-07 11:002014-07-07 12:002014-07-07 13:002014-07-07 14:002014-07-07 15:002014-07-07 16:002014-07-08 09:00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   r\   r_   )r/   r   rN   r0   r!   r!   r$   test_date_range_businesshour  s&    


z5TestDateRangeNonTickFreq.test_date_range_businesshourc           
      C   s   t ddd|d}t ddd|d}t ddd|d}tg dd	| d
dd}t|| t|| t|| t ddd|d}t ddd|d}t ddd|d}|tdd| }	d|	_t||	 t||	 t||	 d S )Nr  r  r  r  r   r  )rn   r@   rA   r   )r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   z2014-07-04 15:45z2014-07-08 10:45-   )minutes)r   r   r\   r_   r   r   rA   )
r/   r   idx1idx2Zidx3rh   idx4Zidx5Zidx6r   r!   r!   r$   test_date_range_business_hour2  s.    
z7TestDateRangeNonTickFreq.test_date_range_business_hour2c                 C   s8   t ddd|d}tdgd| ddd}t|| d S )Nz2014-07-01 10:00r  r   )rL   rA   r@   r   r   r   r   r  )r/   r   r  r   r!   r!   r$   #test_date_range_business_hour_short  s    z<TestDateRangeNonTickFreq.test_date_range_business_hour_shortc                 C   s:   t ddd|d}tg dd| ddd}t|| d S )	N1/1/20137/1/2017r   r   )
2013-01-01r   r   r   rV  r   r   r   r  r/   r   r0   r`   r!   r!   r$   test_date_range_year_start  s    
z3TestDateRangeNonTickFreq.test_date_range_year_startc                 C   s:   t ddd|d}tg dd| ddd}t|| d S )	Nr  r  rJ   r   )
2013-12-31r   
2015-12-31z
2016-12-31r   r   r   r  r  r!   r!   r$   test_date_range_year_end  s    
z1TestDateRangeNonTickFreq.test_date_range_year_endc                 C   sH   t ddd|d}tg dd| ddd}t|| |jdksDJ d S )	N
2011-12-31z-2YEr<   rA   r@   r   )r  z
2009-12-31z
2007-12-31r   r   r   r   r   r\   r_   rA   r  r!   r!   r$   &test_date_range_negative_freq_year_end  s    z?TestDateRangeNonTickFreq.test_date_range_negative_freq_year_endc                 C   s:   t ddd|d}tg dd| ddd}t|| d S )	Nr  r  ZBYEr   )r  r   r  z
2016-12-30r   r   r   r  r  r!   r!   r$   &test_date_range_business_year_end_year  s    
z?TestDateRangeNonTickFreq.test_date_range_business_year_end_yearc                 C   s:   t ddd|d}tg dd| ddd}t|| d S )	NrR   r[   ZBMSro  )
z
2000-01-03z
2000-02-01z
2000-03-01z
2000-04-03z
2000-05-01z
2000-06-01z
2000-07-03z
2000-08-01z
2000-09-01z
2000-10-02r   r   r   r  r   r!   r!   r$   test_date_range_bms$  s    
z,TestDateRangeNonTickFreq.test_date_range_bmsc                 C   s<  t dddt dddt dddt dddt dddt dddt dddt dddt dddt dd	dt dd	dt dd
dt dd
dt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddg}t|d |d d|d}t|d| ddd}t|| d S )N  r   r   rO  r   r   r<   r=   rl   r      r   r   r[   r   r   r   ZSMSr  r   r   r   r   r   r   r\   r_   r/   r   datesri   r`   r!   r!   r$    test_date_range_semi_month_begin:  s:    
























z9TestDateRangeNonTickFreq.test_date_range_semi_month_beginc                 C   s<  t dddt dddt dddt dddt dddt dd	dt dd	dt dd
dt dd
dt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddt dddg}t|d |d d|d}t|d| ddd}t|| d S )Nr  r      rO  r   r   r      r<   r=      rl   r   r  r   r   r[   r   r   r   ZSMEr  r   r   r   r  r  r!   r!   r$   test_date_range_semi_month_end[  s:    
























z7TestDateRangeNonTickFreq.test_date_range_semi_month_endc                 C   sn   t ddd|d}tdgd| ddd}t|| t dd	d|d}tdd
gd| ddd}t|| d S )NZ20110101r   zWOM-1MONr  z
2011-01-03r   r   r   r   z
2011-02-07r  )r/   r   ri   rh   rT  r   r!   r!   r$   test_date_range_week_of_month|  s    z6TestDateRangeNonTickFreq.test_date_range_week_of_monthc                 C   s:   t ddd|d}tg dd| ddd}t|| d S )	Nz2013-1-1r=   zWOM-1SATro  )z
2013-01-05z
2013-02-02z
2013-03-02z
2013-04-06r   r   r   r  r   r!   r!   r$   test_date_range_week_of_month2  s    
z7TestDateRangeNonTickFreq.test_date_range_week_of_month2c                 C   sH   t ddd|d}tg dd| ddd}t|| |jdksDJ d S )	N
2011-01-31z-2MEr<   r  )r  z
2010-11-30z
2010-09-30r   r   r   r  r  r!   r!   r$   'test_date_range_negative_freq_month_end  s    z@TestDateRangeNonTickFreq.test_date_range_negative_freq_month_endc                 C   sJ   t jdddd}tdd||d}tdd	gd
| d|d}t|| d S )Nr   r<   Znearest)startingMonthweekdayZ	variationr  r   r  z
2013-01-31z
2014-01-30r   r   r   )r   ZFY5253r   r   r\   r_   )r/   r   rA   r   rh   r!   r!   r$   test_date_range_fy5253  s    z/TestDateRangeNonTickFreq.test_date_range_fy5253rB  ZQSr   )r  ZBQEr   rS  r   )r  c                 C   s\   t ddd}t ddd}t|||d}t|||d}t|t|ksHJ |j|jksXJ d S )Nr!  r   r"  rk   r   rx   )r   r   r   rA   )r/   rH  r   r#  ro   r  r  r!   r!   r$   &test_date_range_freqstr_matches_offset  s    	z?TestDateRangeNonTickFreq.test_date_range_freqstr_matches_offsetN)rE   rF   rG   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rT   r%  r&  r   ZQuarterBeginZBQuarterEndZWeekr  r!   r!   r!   r$   r  O  s2   9(

	
!!
	r  )8r@  r   r   r   r  numpyr   rT   r6   r   Zpandas._libs.tslibsr   Zpandas._libs.tslibs.offsetsr   r   r	   r
   r   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsrH   Zpandasr   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr\   Zpandas.core.arrays.datetimesr   rE  Z-pandas.tests.indexes.datetimes.test_timezonesr   r   Zpandas.tseries.holidayr   rF  rG  r%   r&   rI   r'  rA  rX  rm  r  r  r!   r!   r!   r$   <module>   s@   (
5     MhlO B