o
    ŀg                     @   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r|r|dd }|S |dkr(|r(|dd }|S |dkr8|r8|r8|dd }|S |dkrF|rF|dd }|S |dkrT|rT|dd }|S |dkr`|dd }|S |dd }|S )	z8Helper to get expected range from a both inclusive ranger   leftNrightr   neitherboth )begin_to_matchend_to_match
both_rangeinclusive_endpoints
left_matchright_matchexpected_ranger!   r!   b/var/www/html/myenv/lib/python3.10/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   2   t dddd}|d }tddd}||ksJ d S N2009041520090519
US/Easterntzr   r   r   selfrngstamptsr!   r!   r)   test_date_range_timestamp_equivU      z;TestTimestampEquivDateRange.test_date_range_timestamp_equivc                 C   r,   )Nr.   r/   dateutil/US/Easternr1   r   r3   r4   r!   r!   r)   (test_date_range_timestamp_equiv_dateutil\   r:   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   r4   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s!J d S )Nr   )dateutil_gettzr.   r/   r0   r1   )pandas._libs.tslibs.timezonesr?   r   r   )r5   gettzr6   r7   r8   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sJ d S )N        r   Dperiodsfreqr   )r   r   r   )r5   datetime_instancetimestamp_instancer8   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   rF   rG   r   r3   )r5   rK   r8   r!   r!   r)   2test_date_range_timestamp_equiv_preserve_frequency}   s   zNTestTimestampEquivDateRange.test_date_range_timestamp_equiv_preserve_frequencyN)__name__
__module____qualname__r9   r<   r>   tdskip_if_windowsrB   rL   rM   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 Z3dwdsdtZ4dudv Z5d5S )xTestDateRangesc                 C   s"   t ddddd}|jdksJ d S )Nz
2000-01-01r   YETEST)startrH   rI   name)r   rW   )r5   idxr!   r!   r)   test_date_range_name   s   z#TestDateRanges.test_date_range_namec                 C   sF   d}t jt|d tdddd W d    d S 1 sw   Y  d S )Nz!periods must be a number, got foomatch1/1/2000foorF   rV   rH   rI   )pytestraises	TypeErrorr   r5   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 sw   Y  tddd}t || d S )Nz:Non-integer 'periods' in pd.date_range, pd.timedelta_rangerZ   r\   g      %@rH   
   )tmassert_produces_warningFutureWarningr   assert_index_equal)r5   rc   r6   expr!   r!   r)   !test_date_range_fractional_period   s   z0TestDateRanges.test_date_range_fractional_periodzfreq,freq_depr))2ME2M)2SME2SM)2BQE2BQ)2BYE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 s4w   Y  t|| d S )
N'r   $' is deprecated and will be removed !in a future version, please use '
' instead.r\   rE   rG   rZ   )r   rg   rh   ri   rj   )r5   rI   	freq_depr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   sN   t ddd}tjtdd t|ddd W d    d S 1 s w   Y  d S )N  r   zpass as a string insteadrZ   )rF         )endrI   rH   )r   r_   r`   ra   r   )r5   edater!   r!   r)   !test_date_range_tuple_freq_raises   s   "z0TestDateRanges.test_date_range_tuple_freq_raisesrI   )nsusmsminshrF   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-01rE   rV   r   rI   c                       g | ]}|   qS r!   r!   ).0nrQ   r8   r!   r)   
<listcomp>       z8TestDateRanges.test_date_range_edges.<locals>.<listcomp>r   r   M8[ns]dtyperI   )r   r   r   r   rangerg   rj   )r5   rI   rX   rk   r!   r   r)   test_date_range_edges   s6   

z$TestDateRanges.test_date_range_edgesc                 C   sL   t d}tjtdd ttjd|d W d    d S 1 sw   Y  d S )Nr   Cannot generate range withrZ      r   rH   rI   )r   r_   r`   r   r   r   r   )r5   rI   r!   r!   r)   )test_date_range_near_implementation_bound   s   "z8TestDateRanges.test_date_range_near_implementation_boundc                 C   s   d}t jt|d tdtjdd W d    n1 sw   Y  t jt|d ttjddd W d    d S 1 s<w   Y  d S )Nz$Neither `start` nor `end` can be NaTrZ   
2016-01-01rF   r   )r_   r`   
ValueErrorr   pdNaTrb   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w   Y  |d tdks&J t|dks.J d}tjt|d tdd	d
d W d    d S 1 sJw   Y  d S )N
1677-09-22iA rF   r^   r   r   rZ   z
1969-05-04i 30000DrG   )rg   rh   r   r   lenr_   r`   r   )r5   dtirc   r!   r!   r)   'test_date_range_multiplication_overflow   s   "z6TestDateRanges.test_date_range_multiplication_overflowc                 C   sZ   t dddd}t |d t|dd}||sJ t |d t|dd}||s+J d S )	Nr   z
2262-04-11rF   r   r   r^   r   r   )r   r   equals)r5   r   dti2dti3r!   r!   r)   *test_date_range_unsigned_overflow_handling   s
   z9TestDateRanges.test_date_range_unsigned_overflow_handlingc                 C      d}t jt|d tdddd W d    n1 sw   Y  t jt|d tdddd W d    d S 1 s:w   Y  d S )	Nr   rZ   
1970-02-01i ' r   r^   
1969-11-14r   r_   r`   r   r   rb   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-1hr   r   r   r   )r   r   r   rg   rj   )r5   s_tse_tsrV   r   r{   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   r   )	NzCannot generate rangerZ   r   i rF   rG   z
1763-10-12r   r   rb   r!   r!   r)   test_date_range_out_of_bounds  s   "z,TestDateRanges.test_date_range_out_of_boundsc                 C   s"   t dddd}t|dksJ d S )Nz1/1/2000 00:00z1/1/2000 00:185minrI   rE   )r   r   r5   r6   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sBJ q8d S )N2   F2D)rH   	normalizerI   r   c                    r   r!   r!   r   ioffset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   rg   rj   r   )r5   r   r6   r{   the_timevalr!   r   r)   test_date_range_normalize&  s   
z(TestDateRanges.test_date_range_normalizec                 C   sl   t dddddd}t dddddd}d}tjt|d	 t||d
dd W d    d S 1 s/w   Y  d S )N  r   r   rD   (   r   	   VOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrZ   rf   r   rG   )r   r_   r`   r   r   r5   rV   r   rc   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-27rD   rH   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)r2   rH   r   z2018-04-01 01:00:00+1100r1   z2018-04-01 02:00:00+1000z2018-04-01 04:00:00+1000)r   r   rg   rj   r   as_unitr5   r   r|   r{   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 s3w   Y  tjt	dd ||k W d    n1 sNw   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-01rD   r0   rH   r2   zUnable to coerce to SeriesrZ   )TTTr   rW   )TFF)FTF)FFT)r   r   to_framenparrayto_listTr_   r`   r   r   rg   assert_frame_equalassert_series_equalassert_numpy_array_equal)r5   r6   dfarrarr2r{   resultsr!   r!   r)    test_date_range_index_comparison`  s*   

z/TestDateRanges.test_date_range_index_comparisonzstart,end,result_tz)2018010120180103r0   i  r   rD   r0   r   r   r1   Nc                 C   s0   t ||d|d}t ddddd}t|| d S )NrD   r   r   rF   r0   rH   rI   r2   r   rg   rj   )r5   rV   r   	result_tzr|   r{   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   rD   )days)r   r   rg   rj   )r5   rV   r   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 sw   Y  t jt|d tdd W d    n1 s5w   Y  t jt|d tdd W d    n1 sQw   Y  t jt|d tddd	 W d    n1 snw   Y  t jt|d tddd
 W d    n1 sw   Y  t jt|d tddd W d    n1 sw   Y  t jt|d t  W d    d S 1 sw   Y  d S )Nr   rZ   r\   )rV   )r   rf   re   r   )rV   rI   )r   rI   rG   r_   r`   r   r   rb   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-JANrG   )r   r   r   )r5   r|   r!   r!   r)   test_compat_replace  s   z"TestDateRanges.test_compat_replacec                 C   sb   t jdd}d}tjt|d ttdddtddd|d W d    d S 1 s*w   Y  d S )	Nr   )minutez4Offset <DateOffset: minute=5> did not increment daterZ   r         r   )r   r	   r_   r`   r   r   r   )r5   r   rc   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:00r1   r   r   z	2010-11-7rD   )rV   rH   rI   r2   r   )r   tz_localizer   r   r   rg   rj   )r5   r   pre_dstpst_dstexpect_datar{   r|   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:00r   rI   r   z2013-01-01 01:00:00+09:00z2013-01-01 02:00:00+09:00r   )r   r   r   r   rg   rj   r   r!   r!   r)   5test_construct_with_different_start_end_string_format  s    zDTestDateRanges.test_construct_with_different_start_end_string_formatc                 C   sJ   d}t jt|d tddtdd W d    d S 1 sw   Y  d S )Nz.Offset <0 \* MonthEnds> did not increment daterZ   r\   z1/1/2001r   r   )r_   r`   r   r   r
   rb   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 )NrD   )months2011-1-1z	2012-1-31r   r   r   c                    r   r!   r!   r   r   rV   r!   r)   r     r   z1TestDateRanges.test_range_bug.<locals>.<listcomp>r   r   r   r   )r	   r   r   r   r   rg   rj   r   r!   r  r)   test_range_bug  s   
"zTestDateRanges.test_range_bugc                 C   s   t d}|tddd}|tddd}t|dd}|jj|jks%J |d |ks-J |d |ks5J t|dd}|jj|jksDJ |d |ksLJ |d |ksTJ t||d	}|jj|jkscJ |d |kskJ |d |kssJ d S )
Nr0   r   r   rD   rV   rH   r   r   r   rH   rV   r   )r   localizer   r   r2   zoner5   r2   rV   r   drr!   r!   r)   test_range_tz_pytz  s   z!TestDateRanges.test_range_tz_pytzz
start, endrC      r   i  r   c                 C   s   t ||dd}|d |ksJ |d |ksJ t|jdks!J t ||ddd}|d |ks1J |d |ks9J t|jdksCJ t |jd d|jd dddd}|d |ks[J |d |kscJ t|jdksmJ d S )NrF   r   r   r   r0   rI   r2   tzinfo)r   r   allhourreplace)r5   rV   r   r
  r!   r!   r)   test_range_tz_dst_straddle_pytz  s"   

z.TestDateRanges.test_range_tz_dst_straddle_pytzc                    s   ddl m   fdd}tddd|dd}tddd	|dd}t|d	d
}|j|dks/J |d |ks7J |d |ks?J t|d	d}|j|dksNJ |d |ksVJ |d |ks^J t||d}|j|dksmJ |d |ksuJ |d |ks}J d S )Nr   maybe_get_tzc                    s    d|  S )Nz	dateutil/r!   )xr  r!   r)   <lambda>6  s    z7TestDateRanges.test_range_tz_dateutil.<locals>.<lambda>r   r   r0   r  rD   r  r   r  r  )r@   r  r   r   r2   r	  r!   r  r)   test_range_tz_dateutil0  s    z%TestDateRanges.test_range_tz_dateutil)1Dr   rm   7W3hrT   r2   c           	      C   sV   t d|d}t d|d}t||||d}t||d|d}t||||}t|| d S )N2011/1/1r1   2014/1/1)	inclusiverI   r    r   r   r*   rg   rj   )	r5   rI   r2   inclusive_endpoints_fixturebeginr   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  r0   r1   )r  rI   r2   r    r  )
r5   rI   r   r!  r   begintzendtzr"  r$   r(   r!   r!   r)   1test_range_with_tz_closed_with_tz_aware_start_end\  s*   
z@TestDateRanges.test_range_with_tz_closed_with_tz_aware_start_endc           
      C   s   t ddd|d}t ddd|d}t ddd|d}t ddd|d}|}|}|}|dkr1|dd  }n|d	kr<|d d
 }n|dkrL|dd  }|d d
 }|dd
 }	t|| t|| t|| t||	 d S )Nz
2015-09-12z
2015-12-01zQS-MARrI   r  z
2015-09-01z
2015-09-11r   r   r   r   r    r   )
r5   r   right_boundaryleft_boundaryboth_boundaryneither_boundaryexpected_rightexpected_leftexpected_both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 )N20142015MEr  z
2014-01-31
2014-12-31MS
2014-01-01
2015-01-012020rT   z
2019-12-31YSr   r   )r5   tz_naive_fixturer2   r   	expected1r   	expected2rng3	expected3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:00345minr   z2005-01-13 10:00z2005-01-13 16:00z2005-01-12 10:00:00z2005-01-12 15:45:00datetime64[ns]r   rI   r2   z2005-01-13 10:00:00z2005-01-13 15:45:00r   r   rg   rj   )r5   result_1result_2
expected_1
expected_2r!   r!   r)   test_freq_divides_end_in_nanos  s    z-TestDateRanges.test_freq_divides_end_in_nanosc                 C   sB   t ddtddd}t|dksJ |d tddd	d
ksJ d S )Nz2010-09-01 05:00:00r   r  hoursrG   r   r   r   r   r   )r   r	   r   r   r   r!   r!   r)   test_cached_range_bug  s   z$TestDateRanges.test_cached_range_bugc                 C   s.   t ddd}t|ddd}t|dksJ d S )N20130220 10:00r0   r1   r   r   )r   r   r   )r5   rV   r|   r!   r!   r)   test_timezone_comparison_bug  s   z+TestDateRanges.test_timezone_comparison_bugc                 C   sR   t ddd}d}tjt|d t|ddd W d    d S 1 s"w   Y  d S )	NrN  r0   r1   z0Inferred time zone not equal to passed time zonerZ   r   zEurope/Berlinr   )r   r_   r`   AssertionErrorr   )r5   rV   rc   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)rV   r   rI   r2   1MS)r   rV   rI   r2   r   r   )r5   tz_aware_fixturer2   r|   r{   r!   r!   r)   1test_negative_non_tick_frequency_descending_dates  s   z@TestDateRanges.test_negative_non_tick_frequency_descending_datesc                 C   sb   d}d}t ||d|d}t ||ddd}|dkr|dd }n
|dv r)|d d  }t|| d S )	Nz
2021-09-02rF   )rV   r   rI   r  r    r   r   r   )r   r   r    r   )r5   r   rV   r   r|   r$   r{   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 )
Nrf   9   rD   )rL  r   nanosecondsz1970-01-01 00:00:00a)r   rH   rI   rW   )
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   rg   rj   )r5   rI   r|   r{   r!   r!   r)   .test_freq_dateoffset_with_relateivedelta_nanos  s   z=TestDateRanges.test_freq_dateoffset_with_relateivedelta_nanos))r   H)2min2T)1s1S)2ms2L)1us1U)2ns2Nc                 C      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 s@w   Y  t|| d S )N[0-9]*r   maxsplitru   z9' is deprecated and will be removed in a future version, zplease use 'z	' insteadr\   r   rG   rZ   resplitr   rg   rh   ri   rj   r5   rI   ry   freq_msgfreq_depr_msgrc   r{   r|   r!   r!   r)   'test_frequencies_H_T_S_L_U_N_deprecated  s   
z6TestDateRanges.test_frequencies_H_T_S_L_U_N_deprecated))200YE200A)rT   Y)z2YE-MAYz2A-MAY)zYE-MAYzY-MAYc                 C   re  )Nrf  r   rg  ru   rv   rw   rx   r\   r   rG   rZ   ri  rl  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 sw   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.rZ   z
2010-01-01r   mrG   z
2010-01-31z
2010-02-28r3  r   )rg   rh   ri   r   r   rj   )r5   rc   r|   r{   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s#J |jdks*J d S )	N  r      1Br   )rV   rI   rH   r   r   )r   r   r   r   r   rI   )r5   sdaterX   r!   r!   r)   test_date_range_bdayD  s
   z#TestDateRanges.test_date_range_bday)rt  N)6rN   rO   rP   rY   rd   rl   r_   markparametrizer}   r   r   r   r   r   r   r   slowr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r#  r&  r0  rA  rJ  rM  rO  rQ  rT  rU  rY  ro  rs  rv  r{  r!   r!   r!   r)   rS      s    
	

#






.	

	
rS   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-10rF   Hongkongr  )r   r  )r5   r
  r!   r!   r)   test_hongkong_tz_convertO  s   
z(TestDateRangeTZ.test_hongkong_tz_converttzstrr0   r;   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-FRIr0   r   r   z
2012-11-02rf   r   int32r   )r   r  r  r   Indexrg   rj   )r5   r  r
  r|   r{   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 )Nr\   rf   r   )r   r  r   rg   rj   )r5   r  r2   r|   r{   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s(J t|t||d}t|| tdd}|j|jk sFJ d S )Ni  z+07:00  rD   r   r   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   r2   r   rg   rj   valuesr  )r5   offrV   r   r6   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s%J t||g}||jks3J d S )	Nr  rD   r   r   r   r  r  r  )r   r   r   r2   r   r  )r5   r  rV   r   r6   rX   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:00r1   r   z3/11/2012 04:00rf   r   r   r   )r   r  r   )r5   r  r7   r6   r!   r!   r)   test_date_range_with_tz  s   z'TestDateRangeTZ.test_date_range_with_tzr2   Europe/Londonzdateutil/Europe/Londonc                 C   s   t jtjdd tddddd W d    n1 sw   Y  tddd|dd	}|d
 td|dks5J |d td|dksAJ d S )NzCannot infer dst timerZ   z2013-10-26 23:00z2013-10-27 01:00r  r   r2   rI   infer)rI   r2   r   r   r1   r   z2013-10-27 01:00:00+0000)r_   r`   r=   AmbiguousTimeErrorr   r   )r5   r2   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/Pacificr  r  )r   shift_backward2019-03-10 01:00)r  r  r  r   r   rK  r  c                 C   sn   t jtjdd tddddd W d    n1 sw   Y  tddd||d}|d	 t||d
ks5J d S )Nz2019-03-10 02:00:00rZ   z2019-03-10 00:00z2019-03-10 02:00r   r   r  )rI   r2   nonexistentr   r1   )r_   r`   r=   NonExistentTimeErrorr   r   )r5   r2   optionr{   r  r!   r!   r)   $test_date_range_nonexistent_endpoint  s   
z4TestDateRangeTZ.test_date_range_nonexistent_endpointN)rN   rO   rP   __doc__r  r_   r|  r}  r  r  r  r  r  r  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sJ d S )Nr   )rH   r   r   )listgenerate_rangeSTARTEND)r5   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s"J d S )Nr   rD   rx  r   r   rV   r   rH   r   r      r  r  r   r   r5   r6   r{   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s+J d S )N  r   rD   r   r  r   r  r  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sJ d S )Nr  r   r   r  r   r  r  r  r!   r!   r)   test_3  s   

	zTestGenRangeGeneration.test_3c                 C   sh   t dddd}t dddd}g d}g d}t|d	d
d d}t|d	dd d}t|| t|| d S )Nz2015-04-15 00:00:03z2016-04-22 00:00:00QEr   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:03rC  zQE-DECrD  W-SUNrE  )r5   result1result2expected1_listexpected2_listr;  r<  r!   r!   r)    test_precision_finer_than_offset  s    z7TestGenRangeGeneration.test_precision_finer_than_offset)
2017-01-01r  )r0   r  z	start,endr1   c                 C   s   d}t jt|d t|| W d    n1 sw   Y  t jt|d t||t d W d    d S 1 s9w   Y  d S )Nz>Start and end cannot both be tz-aware with different timezonesrZ   r   )r_   r`   ra   r   r   r   r!   r!   r)   test_mismatching_tz_raises_err  s   "z5TestGenRangeGeneration.test_mismatching_tz_raises_errN)rN   rO   rP   r_   r|  r}  r   r   r  r  r  r  r  dt1dt2tz1tz2r   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	g d
dd Z
dd Zdd ZdS )TestBusinessDateRangec                 C   s   t ttt d t tdt d t tdt d d}tjt|d tddd	 W d    n1 s2w   Y  tjt|d t ddd	 W d    n1 sOw   Y  d
}tjt|d t ttdd d W d    d S 1 sqw   Y  d S )Nr   r   rG   r   zperiods must be a number, got BrZ   r  2012-1-1r   z>freq must be specified for bdate_range; use date_range insteadrf   )r   r  r  r   r_   r`   ra   r   rb   r!   r!   r)   test_constructor!  s   "z&TestBusinessDateRange.test_constructorc                 C   sZ   t ddd}t|dd}|dt   }t|dksJ |d |ks#J |d |ks+J d S )	Nr   r      r   r     r   r   )r   r   r   r   r5   r   r
  	firstDater!   r!   r)   	test_misc1  s   zTestBusinessDateRange.test_miscc                 C   s   d}d}t jt|d t| W d    n1 sw   Y  t jt|d t|dd W d    n1 s7w   Y  t jt|d t|dd W d    n1 sTw   Y  t jt|d t|| W d    d S 1 sqw   Y  d S )Nz
2007/100/1z;Unknown datetime string format, unable to parse: 2007/100/1rZ   rf   r  r  )r_   r`   r   r   r   )r5   badly_formed_daterc   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   _datarI   r   union
isinstancer   r5   r   r   r|   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-27rF   r   r   )r5   r  rV   r   r|   
bday_startbday_endr{   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 )NrF   r   r   r   r   r   )	r   maxfloorto_pydatetimer   r   r   rg   rj   )r5   rV   r6   r{   r!   r!   r)   test_bday_near_overflow`  s   z-TestBusinessDateRange.test_bday_near_overflowc                 C   sV   d}t jd }tjt|d t|ddd W d    d S 1 s$w   Y  d S )Nz"Out of bounds nanosecond timestamprF   rZ   r   r   rG   )r   r  r  r  r_   r`   r   r   )r5   rc   rV   r!   r!   r)   test_bday_overflow_errorg  s
   "z.TestBusinessDateRange.test_bday_overflow_errorN)rN   rO   rP   r  r  r  r  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d Z	dd Z
ejddd eD dd Zejdg ddd Zejddddgfdddgfddddgfgd d! Zd"S )#TestCustomDateRangec                 C   s   t ttt d t tdt d t tdt d d}tjt|d tddd	 W d    n1 s2w   Y  tjt|d t ddd	 W d    d S 1 sPw   Y  d S )
Nr   r   rG   r   zperiods must be a number, got CrZ   r  r  r  )r   r  r  r   r_   r`   ra   r   rb   r!   r!   r)   r  p  s   "z$TestCustomDateRange.test_constructorc                 C   s\   t ddd}t|ddd}|dt   }t|dksJ |d |ks$J |d	 |ks,J d S )
Nr   r   r  r   r  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s#J d S )Nr  r  r   r  )r   r  rI   r   r  r  r   r  r!   r!   r)   r    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s#J d S )	N
2013-05-01rD   r  rH   rI   r   )r  
2013-05-02
2013-05-03r   r   r   )r   r   rg   rj   rI   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s%J d
}tjt|d t dddd W d    d S 1 sAw   Y  d S )Nr  rD   r  Sun Mon Tue Wed Thu)rH   rI   weekmaskr   )r  r  
2013-05-05r   r   r   [a custom frequency string is required when holidays or weekmask are passed, got frequency BrZ   )rH   r  r   r   rI   rg   rj   r_   r`   r   r5   r   r|   r{   rc   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s&J d	}tjt|d
 t dddgd W d    d S 1 sCw   Y  d S )Nr  rD   r  )rH   rI   holidaysr   )r  r  
2013-05-06r   r   r   r  rZ   )rH   r  r  r  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s'J d S )
Nr  rD   r  r  )rH   rI   r  r  r   )r  r  r  r   r   r   )r   r   rI   rg   rj   r   r!   r!   r)   %test_cdaterange_weekmask_and_holidays  s   
z9TestCustomDateRange.test_cdaterange_weekmask_and_holidaysc                 C   sJ   d}t jt|d tddddgd W d    d S 1 sw   Y  d S )Nr  rZ   r  rD   r  )rH   r  r  )r_   r`   r   r   rb   r!   r!   r)   2test_cdaterange_holidays_weekmask_requires_freqstr  s   "zFTestCustomDateRange.test_cdaterange_holidays_weekmask_requires_freqstrrI   c                 C   s   g | ]	}| d r|qS )r  )
startswith)r   rI   r!   r!   r)   r     s    zTestCustomDateRange.<listcomp>c                 C   sh   t tt|ddgd |d }d| }tjt|d t tt|d W d    d S 1 s-w   Y  d S )NzMon Wed Friz
2009-03-14)rI   r  r  FOOz!invalid custom frequency string: rZ   r   )r   r  r  r_   r`   r   )r5   rI   bad_freqrc   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   )rV   r   rH   r  zM8[ns, UTC]r  rE  )r5   r  rV   r   r|   r{   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 )Nr  r^   r   )r   r   r   rg   rj   )r5   rV   periodr{   r|   r!   r!   r)   .test_range_with_timezone_and_custombusinessday  s   zBTestCustomDateRange.test_range_with_timezone_and_custombusinessdayN)rN   rO   rP   r  r  r  r  r  r  r  r  r_   r|  r}  r   r  r  r  r!   r!   r!   r)   r  o  s:    		



r  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   H   d}t jt|d tddddd W d    d S 1 sw   Y  d S )Nz+'unit' must be one of 's', 'ms', 'us', 'ns'rZ   r   z
2016-03-04rD   r   r   r   rb   r!   r!   r)   test_date_range_reso_validation  s   "z4TestDateRangeNonNano.test_date_range_reso_validationc                 C   r  )Nz)Use a lower freq or a higher unit insteadrZ   r   z
2016-01-02r   r   r   r   rb   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:01r   r   l    \tGl   _tGr  zM8[ms]r   r   l    `g ) l   A"g ) M8[us]z2016-01-01 00:00:00.001r   l     ^cQ)! l   AB|cQ)! r   )r   r   arangeint64r   viewrg   rj   )r5   r   r6   r{   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 s"w   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 unitsrZ   rD   r   r   r   r   r  r  )r   r_   r`   r   r   r   r   r   _valuer  r   r  rg   rj   )r5   rV   r   r   r6   r{   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sJ |jdks J t |dd|d ddd	d}t	|
 | d S )
Nz
1066-10-14z
2305-07-13rF   r   r   zM8[s]i8r   iQ )r   
datetime64r   rI   r   r  astyper  rg   r   to_numpy)r5   rV   r   r   rk   r!   r!   r)   test_date_range_non_nano>  s   

z-TestDateRangeNonNano.test_date_range_non_nanoN)rN   rO   rP   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                    f   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rV   r   rI   r   c                 3       | ]}  |V  qd S Nis_on_offsetr   r  r   r!   r)   	<genexpr>V      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   CBMonthBeginr   r  r   rg   rj   r5   r   hcalr   r{   r!   r   r)   +test_date_range_custom_business_month_beginR     
zDTestDateRangeNonTickFreq.test_date_range_custom_business_month_beginc                    r  )Nr  r  r  r  c                 3   r  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   
CBMonthEndr   r  r   rg   rj   r  r!   r   r)   )test_date_range_custom_business_month_endl  r  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)rV   r  z2020-11-25 15:00rE   rV   rH   rI   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   CustomBusinessHourr   r   rg   rj   )r5   r   rI   r|   r{   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   rg   rj   )r5   r   rX   r6   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  )r   rH   rI   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   rg   rj   r   r   rI   )
r5   r   idx1idx2idx3r{   idx4idx5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   )rV   rI   rH   r   r   r   r   rE  )r5   r   r3  r@  r!   r!   r)   #test_date_range_business_hour_short  s   z<TestDateRangeNonTickFreq.test_date_range_business_hour_shortc                 C   :   t ddd|d}tg dd| ddd}t|| d S )	N1/1/20137/1/2017r9  r   )
2013-01-01r6  r7  r   r  r   r   r   rE  r5   r   r6   rk   r!   r!   r)   test_date_range_year_start     
z3TestDateRangeNonTickFreq.test_date_range_year_startc                 C   r8  )	Nr9  r:  rT   r   )
2013-12-31r4  
2015-12-31z
2016-12-31r   r   r   rE  r<  r!   r!   r)   test_date_range_year_end  r>  z1TestDateRangeNonTickFreq.test_date_range_year_endc                 C   H   t ddd|d}tg dd| ddd}t|| |jdks"J d S )	N
2011-12-31z-2YErD   rI   rH   r   )rC  z
2009-12-31z
2007-12-31r   r   r   r   r   rg   rj   rI   r<  r!   r!   r)   &test_date_range_negative_freq_year_end     z?TestDateRangeNonTickFreq.test_date_range_negative_freq_year_endc                 C   r8  )	Nr9  r:  BYEr   )r?  r4  r@  z
2016-12-30r   r   r   rE  r<  r!   r!   r)   &test_date_range_business_year_end_year  r>  z?TestDateRangeNonTickFreq.test_date_range_business_year_end_yearc                 C   r8  )	Nr\   rf   BMSr  )
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   rE  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   r  r   r   rD   rE   r   r     r   r   rf   r   r   r   SMSr  r   r   r   r   r   r   rg   rj   r5   r   datesr|   rk   r!   r!   r)    test_date_range_semi_month_begin:  :   
























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 )NrL  r      r  r   r   r      rD   rE      r   r  rM  r   r   rf   r   r   r   SMEr  r   r   r   rO  rP  r!   r!   r)   test_date_range_semi_month_end[  rS  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 )N20110101r   zWOM-1MONr  z
2011-01-03r   r   r   r   z
2011-02-07rE  )r5   r   r|   r{   r  r<  r!   r!   r)   test_date_range_week_of_month|  s   z6TestDateRangeNonTickFreq.test_date_range_week_of_monthc                 C   r8  )	Nz2013-1-1rE   zWOM-1SATr  )z
2013-01-05z
2013-02-02z
2013-03-02z
2013-04-06r   r   r   rE  r   r!   r!   r)   test_date_range_week_of_month2  r>  z7TestDateRangeNonTickFreq.test_date_range_week_of_month2c                 C   rB  )	N
2011-01-31z-2MErD   rD  )r\  z
2010-11-30z
2010-09-30r   r   r   rE  r<  r!   r!   r)   'test_date_range_negative_freq_month_end  rG  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   rD   nearest)startingMonthweekday	variationr;  r   r  z
2013-01-31z
2014-01-30r   r   r   )r   FY5253r   r   rg   rj   )r5   r   rI   r   r{   r!   r!   r)   test_date_range_fy5253  s   z/TestDateRangeNonTickFreq.test_date_range_fy5253r  QSr   )r_  BQEr   r  r  )r`  c                 C   s\   t ddd}t ddd}t|||d}t|||d}t|t|ks$J |j|jks,J d S )Nrw  r   rx  r~   r   r   )r   r   r   rI   )r5   r  r   rz  r   r0  r1  r!   r!   r)   &test_date_range_freqstr_matches_offset  s   	z?TestDateRangeNonTickFreq.test_date_range_freqstr_matches_offsetN)rN   rO   rP   r  r  r  r-  r6  r7  r=  rA  rF  rI  rK  rR  rX  rZ  r[  r]  rc  r_   r|  r}  r   QuarterBeginBQuarterEndWeekrf  r!   r!   r!   r)   r  O  s4    9(

	
!!
	r  )8r  r   r   r   rj  numpyr   r_   r=   r   pandas._libs.tslibsr   pandas._libs.tslibs.offsetsr   r   r	   r
   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsrQ   pandasr   r   r   r   r   r   r   r   r   pandas._testing_testingrg   pandas.core.arrays.datetimesr   r  -pandas.tests.indexes.datetimes.test_timezonesr   r   pandas.tseries.holidayr   r  r  r*   r+   rS   r  r  r  r  r  r  r!   r!   r!   r)   <module>   sB    (
5     MhlO B