o
    ҷh                     @   sZ  d Z ddlmZmZmZ ddlZddlZddlZddlmZ ddl	m
Z
 ddlmZmZmZmZmZ ddlmZ ddlm  mZ ddlZddlmZmZmZmZmZmZmZm Z  ddl!m"Z# dd	l$m%Z& ed
ddedddZ'Z(dd Z)G dd dZ*G dd dZ+G dd dZ,G dd dZ-G dd dZ.G dd dZ/dd Z0G dd dZ1d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       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   a/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/indexes/datetimes/test_date_range.py_get_expected_range,   s,   
r'   c                   @   sB   e Zd Zdd Zdd Zdd Zejdd Zd	d
 Z	dd Z
dS )TestTimestampEquivDateRangec                 C   2   t dddd}|d }tddd}||ksJ d S N2009041520090519
US/Easterntzr   r   r   selfrngstamptsr   r   r&   test_date_range_timestamp_equivN      z;TestTimestampEquivDateRange.test_date_range_timestamp_equivc                 C   r)   )Nr+   r,   dateutil/US/Easternr.   r   r0   r1   r   r   r&   (test_date_range_timestamp_equiv_dateutilU   r7   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   r1   r   r   r&   -test_date_range_timestamp_equiv_explicit_pytz\   s   zITestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_pytzc                 C   sF   ddl m} tdd|dd}|d }td|dd}||ks!J d S )Nr   )dateutil_gettzr+   r,   r-   r.   )pandas._libs.tslibs.timezonesr<   r   r   )r2   gettzr3   r4   r5   r   r   r&   1test_date_range_timestamp_equiv_explicit_dateutilc   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   )r2   datetime_instancetimestamp_instancer5   r   r   r&   6test_date_range_timestamp_equiv_from_datetime_instancem   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   rC   rD   r   r0   )r2   rH   r5   r   r   r&   2test_date_range_timestamp_equiv_preserve_frequencyv   s   zNTestTimestampEquivDateRange.test_date_range_timestamp_equiv_preserve_frequencyN)__name__
__module____qualname__r6   r9   r;   tdskip_if_windowsr?   rI   rJ   r   r   r   r&   r(   H   s    
		r(   c                   @   s  e Zd Zejdg ddd Zdd Zdd Zd	d
 Z	dd Z
dd Zejj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d d!gd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zejd2g d3ed4d5d5ed4d5d6d7ged8ed9d7ged8d7d:ed9d7d:d7ged8d7d:ed9d7d:d;ggd<d= Zd>d? Zd@dA ZdBdC ZdDdE Z dFdG Z!ejdHdIdJdK Z"dLdM Z#dNdO Z$dPdQ Z%dRdS Z&dTdU Z'ejdVeedWd6dXd7d:eedWd6dYd7d:geedZd[d5d7d:eedZd[dXd7d:ggd\d] Z(d^d_ Z)ejdg d`dadb Z*ejdg d`dcdd Z+ejdg d`dedf Z,dgdh Z-didj Z.dkdl Z/dmdn Z0dodp Z1dqdr Z2dsdt Z3dudv Z4dwdx Z5d;S )yTestDateRangesrF   )NULTSHrC   c                    s   t d|  tdt  d   |d}t fddtddD |d	}t|| td     |d}tg |d	}t|| t    |d}t  g|d	}t|| d S )
N1z
1970-01-01rB   startendrF   c                       g | ]}|   qS r   r   ).0nrN   r5   r   r&   
<listcomp>       z8TestDateRanges.test_date_range_edges.<locals>.<listcomp>r      rF   )r   r   r   r   rangetmassert_index_equal)r2   rF   idxexpr   r^   r&   test_date_range_edges~   s4   

z$TestDateRanges.test_date_range_edgesc                 C   sL   t d}tjtdd ttjd|d W d    d S 1 sw   Y  d S )Nr   Cannot generate range withmatch   rZ   rE   rF   )r   pytestraisesr   r   r   min)r2   rF   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 NaTrj   
2016-01-01rC   rX   )rn   ro   
ValueErrorr   pdNaTr2   msgr   r   r&   test_date_range_nat   s   "z"TestDateRanges.test_date_range_natc                 C   s   t d  tdddd}W d    n1 sw   Y  |d tdks&J t|dks.J d}tjt|d tdd	d
d W d    d S 1 sJw   Y  d S )N
1677-09-22iA rC   rY   rE   rF   r   ri   rj   z
1969-05-04i 30000DrD   )rd   assert_produces_warningr   r   lenrn   ro   r   )r2   dtirw   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 )	Nry   z
2262-04-11rC   rX   r   rz   r   rm   )r   r}   equals)r2   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 )	Nri   rj   
1970-02-01i ' rV   rz   
1969-11-14rm   rn   ro   r   r   rv   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   rm   )r   r   r}   rd   re   )r2   s_tse_tsrY   rZ   expectedr~   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 rangerj   rr   i rC   rD   z
1763-10-12rm   r   rv   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5minrb   rB   r   r}   r2   r3   r   r   r&   test_date_range_gen_error   s   z(TestDateRanges.test_date_range_gen_errorASYSc                 C   .   t dd|d}tg d|d}t|| d S )N1/1/20137/1/2017rb   )
2013-01-01z
2014-01-01z
2015-01-01rr   
2017-01-01r   r   rd   re   r2   rF   r3   rg   r   r   r&   test_begin_year_alias   s   z$TestDateRanges.test_begin_year_aliasAYc                 C   r   )Nr   r   rb   )
2013-12-31
2014-12-31
2015-12-31z
2016-12-31r   r   r   r   r&   test_end_year_alias   
   z"TestDateRanges.test_end_year_aliasBABYc                 C   r   )Nr   r   rb   )r   r   r   z
2016-12-30r   r   r   r   r&   test_business_end_year_alias  r   z+TestDateRanges.test_business_end_year_aliasc                 C   st   t dddd}tg ddd}t|| |jdksJ t dddd}tg d	dd}t|| |jdks8J d S )
N
2011-12-31z-2ArA   )rF   rE   )r   z
2009-12-31z
2007-12-31rb   
2011-01-31z-2M)r   z
2010-11-30z
2010-09-30)r   r   rd   re   rF   )r2   r3   rg   r   r   r&   test_date_range_negative_freq  s   z,TestDateRanges.test_date_range_negative_freqc                 C   s*   t dddd}td}|d |ksJ d S )N1/1/2000
   BMSrD   z
2000-01-03r   r0   )r2   r3   ex_firstr   r   r&   test_date_range_bms_bug  s   z&TestDateRanges.test_date_range_bms_bugc                    s   t  d}t|ddd}td t fddt|D  d}t|| td	|dd
d}tdd}|D ]
}| |ksAJ q7d S )N2   F2D)rE   	normalizerF   rl   c                    r[   r   r   r\   ioffsetsnapr   r&   r_   +  r`   z<TestDateRanges.test_date_range_normalize.<locals>.<listcomp>rb   z1/1/2000 08:15B      )	r   todayr   r   r   rc   rd   re   r   )r2   r]   r3   valuesthe_timevalr   r   r&   test_date_range_normalize$  s    
z(TestDateRanges.test_date_range_normalizec                 C   sF   t ddtjddddd}|d td	ksJ |d td
ks!J d S )Nr   rl   r   rA   nearest)startingMonthweekday	variationrz   r   z
2013-01-31z
2014-01-30)r   r   FY5253r   r2   drr   r   r&   test_date_range_fy52524  s   z%TestDateRanges.test_date_range_fy5252c                 C   sl   t dddddd}t dddddd}d}tjt|d	 t||d
dd W d    d S 1 s/w   Y  d S )N  r   ra   rA   (   r   	   VOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrj   r   srD   )r   rn   ro   rs   r   r2   rY   rZ   rw   r   r   r&   #test_date_range_ambiguous_arguments=  s   "z2TestDateRanges.test_date_range_ambiguous_argumentsc                 C   sp   t dddd}tg dd d}t|| t ddd	dd
}ttdd	dtdd	dtdd	dg}t|| d S )Nz
2018-04-24z
2018-04-27rA   rE   )z2018-04-24 00:00:00z2018-04-25 12:00:00z2018-04-27 00:00:00rb   z2018-04-01 01:00:00z2018-04-01 04:00:00zAustralia/Sydney)r/   rE   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   rd   re   r   r2   resultr   r   r   r&   #test_date_range_convenience_periodsI  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-01rA   r-   rE   r/   zUnable to coerce to Seriesrj   )TTTr   name)TFF)FTF)FFT)r   r   to_framenparrayto_listrT   rn   ro   rs   r   rd   assert_frame_equalassert_series_equalassert_numpy_array_equal)r2   r3   dfarrarr2r   resultsr   r   r&    test_date_range_index_comparisonc  s*   

z/TestDateRanges.test_date_range_index_comparisonzstart,end,result_tz)2018010120180103r-   i  r   rA   r-   r   r   r.   Nc                 C   s0   t ||d|d}t ddddd}t|| d S )NrA   r   r   rC   r-   rE   rF   r/   r   rd   re   )r2   rY   rZ   	result_tzr   r   r   r   r&   test_date_range_linspacing_tz  s   z,TestDateRanges.test_date_range_linspacing_tzc                 C   s   t g ddd}tdddd}t|| t ddgdd}tdddd}t|| t g ddd}tdddd}t|| d S )	N)2014-07-04 09:002014-07-04 10:002014-07-04 11:002014-07-04 12:002014-07-04 13:002014-07-04 14:002014-07-04 15:002014-07-04 16:00BHrb   r   r   2014-07-07 09:00)r   r   r   r   r   r   r   r   r   z2014-07-07 10:00z2014-07-07 11:00z2014-07-07 12:00z2014-07-07 13:00z2014-07-07 14:00z2014-07-07 15:00z2014-07-07 16:00z2014-07-08 09:00z2014-07-08 10:00z2014-07-08 11:00z2014-07-08 12:00z2014-07-08 13:00z2014-07-08 14:00z2014-07-08 15:002014-07-08 16:00r   )r   r   rd   re   )r2   rf   r3   r   r   r&   test_date_range_businesshour  s   
z+TestDateRanges.test_date_range_businesshourc                 C   s:   d}d}t ||dd}t ||tddd}t|| d S )Nz
2020-01-01z
2020-01-113Drb   rA   )days)r   r   rd   re   )r2   rY   rZ   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   rj   r   )rY   )rZ   r   r   rV   )rY   rF   )rZ   rF   rD   rn   ro   rs   r   rv   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-JANrD   )r   r   r}   )r2   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 )	Nra   )minutez4Offset <DateOffset: minute=5> did not increment daterj   r         rb   )r   r	   rn   ro   rs   r   r   )r2   r   rw   r   r   r&   test_catch_infinite_loop  s
    "z'TestDateRanges.test_catch_infinite_looprE   )r   rl   c                 C   s"   t d|dd}t||ksJ d S )N20110101zWOM-1MONrz   r   )r2   rE   resr   r   r&   test_wom_len  s   zTestDateRanges.test_wom_lenc                 C   sb   t djddd}t djddd}t ddd||g}t|dd	}td
dddd}t|| d S )Nz2010-11-07 01:00:00z
US/PacificT)	ambiguousFz2010-11-07 00:00:00r.   rV   rb   z	2010-11-7rA   )rY   rE   rF   r/   )r   tz_localizer   r   rd   re   )r2   pre_dstpst_dstexpect_datar   r   r   r   r&   test_construct_over_dst  s   
z&TestDateRanges.test_construct_over_dstc                 C   s<   t dddd}ttdtdtdgdd}t|| d S )Nz2013-01-01 00:00:00+09:00z2013/01/01 02:00:00+09:00rV   rb   z2013-01-01 01:00:00+09:00z2013-01-01 02:00:00+09:00)r   r   r   rd   re   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 daterj   r   z1/1/2001r   rb   )rn   ro   rs   r   r
   rv   r   r   r&   test_error_with_zero_monthends"  s   "z-TestDateRanges.test_error_with_zero_monthendsc                    sT   t dd tdd d}tdddt fdd	td
D  d}t|| d S )NrA   )months2011-1-1z	2012-1-31rb   r   r   c                    r[   r   r   r   r   rY   r   r&   r_   -  r`   z1TestDateRanges.test_range_bug.<locals>.<listcomp>ra   )r	   r   r   r   rc   rd   re   r   r   r  r&   test_range_bug'  s
   
 zTestDateRanges.test_range_bugc                 C   s   t d}|tddd}|tddd}t|dd}|jj|jks%J |d |ks-J |d |ks5J t|dd}|jj|jksDJ |d |ksLJ |d |ksTJ t||d	}|jj|jkscJ |d |kskJ |d |kssJ d S )
Nr-   r   r   rA   rY   rE   r   rl   rZ   rE   rY   rZ   )r   localizer   r   r/   zoner2   r/   rY   rZ   r   r   r   r&   test_range_tz_pytz0  s   z!TestDateRanges.test_range_tz_pytzz
start, endr@      r   i  r   c                 C   s   t ||dd}|d |ksJ |d |ksJ t|jdks!J t ||ddd}|d |ks1J |d |ks9J t|jdksCJ t |jd d|jd dddd}|d |ks[J |d |kscJ t|jdksmJ d S )NrC   rb   r   r   r-   rF   r/   tzinfo)r   r   allhourreplace)r2   rY   rZ   r   r   r   r&   test_range_tz_dst_straddle_pytzE  s"   

z.TestDateRanges.test_range_tz_dst_straddle_pytzc                    s   ddl m   fdd}tddd|dd}tddd	|dd}t|d	d
}|j|dks/J |d |ks7J |d |ks?J t|d	d}|j|dksNJ |d |ksVJ |d |ks^J t||d}|j|dksmJ |d |ksuJ |d |ks}J d S )Nr   maybe_get_tzc                    s    d|  S )Nz	dateutil/r   )xr  r   r&   <lambda>m  s    z7TestDateRanges.test_range_tz_dateutil.<locals>.<lambda>r   r   r-   r  rA   r  rl   r  r  )r=   r  r   r   r/   r  r   r  r&   test_range_tz_dateutilg  s    z%TestDateRanges.test_range_tz_dateutil)1Dr   2M7W3Hr   c                 C   sV   t ddd}t ddd}t||||d}t||d|d}t||||}t|| d S )Nr   r   r@   	inclusiverF   r   )r   r   r'   rd   re   r2   rF   inclusive_endpoints_fixturebeginrZ   result_ranger!   r%   r   r   r&   test_range_closed  s   z TestDateRanges.test_range_closedc                 C   sV   t ddd}t ddd}t||||d}t||d|d}t||||}t|| d S )N2011/1/1r-   r.   2014/1/1r'  r   r   r   r'   rd   re   r)  r   r   r&   )test_range_closed_with_tz_aware_start_end  s   z8TestDateRanges.test_range_closed_with_tz_aware_start_endc           
      C   sj   t d}t d}t ddd}t ddd}t||||dd}t||d|dd}t||||}	t|	| d S )Nr.  r/  r-   r.   )r(  rF   r/   r   r0  )
r2   rF   r*  r+  rZ   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rF   r(  z
2015-09-01z
2015-09-11r   r   r   r   r   r   )
r2   r*  right_boundaryleft_boundaryboth_boundaryneither_boundaryexpected_rightexpected_leftexpected_bothexpected_neitherr   r   r&   test_range_closed_boundary  sN   z)TestDateRanges.test_range_closed_boundaryc                 C   sB   t dddd}|d tdddksJ |d	 tdd
dksJ d S )N20142015Mrb   r   r@   r      r   r   )r   r   r   r   r   r&   test_years_only  s   zTestDateRanges.test_years_onlyc                 C   s`   t dddd}t dddd}tddgd	d
d d}tddgd	d
d d}t|| t|| d S )Nz2005-01-12 10:00z2005-01-12 16:00345minrb   z2005-01-13 10:00z2005-01-13 16:00z2005-01-12 10:00:00z2005-01-12 15:45:00datetime64[ns]345TdtyperF   r/   z2005-01-13 10:00:00z2005-01-13 15:45:00r   )r2   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  )hoursrD   r   r   r   r   ra   )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.   rl   r   )r   r   r}   )r2   rY   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 )	NrP  r-   r.   z0Inferred time zone not equal to passed time zonerj   rl   zEurope/Berlinr   )r   rn   ro   AssertionErrorr   )r2   rY   rw   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)rY   rZ   rF   r/   1MS)rZ   rY   rF   r/   r   r   )r2   tz_aware_fixturer/   r   r   r   r   r&   1test_negative_non_tick_frequency_descending_dates  s   z@TestDateRanges.test_negative_non_tick_frequency_descending_datesc                 C   sb   d}d}t ||d|d}t ||ddd}|dkr|dd }n
|dv r)|d d  }t|| d S )	Nz
2021-09-02rC   )rY   rZ   rF   r(  r   r   r   r   )r   r   r   r   )r2   r*  rY   rZ   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 )
Nr   9   rA   )rN  r   nanosecondsz1970-01-01 00:00:00a)rZ   rE   rF   r   )
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   rd   re   )r2   rF   r   r   r   r   r&   .test_freq_dateoffset_with_relateivedelta_nanos2  s   z=TestDateRanges.test_freq_dateoffset_with_relateivedelta_nanos)6rK   rL   rM   rn   markparametrizerh   rq   rx   r   r   r   slowr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r
  r  r  r  r"  r-  r1  r4  r>  rC  rM  rO  rQ  rS  rV  rW  r[  r   r   r   r&   rP   }   s    
"
	

	




5
	



.	rP   c                   @   sn   e Zd ZdZdd Zejdddgdd Zejdddgd	d
 Z	dd Z
ejdddgdd ZdS )TestDateRangeTZz#Tests for date_range with timezonesc                 C   s   t ddddd}|j d S )Nz
2012-01-01z
2012-01-10rC   Hongkongr  )r   r  r   r   r   r&   test_hongkong_tz_convertK  s   
z(TestDateRangeTZ.test_hongkong_tz_converttzstrr-   r8   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   int32rH  )r   r  r  rt   Indexrd   re   )r2   rb  r   r   r   r   r   r&   #test_date_range_span_dst_transitionR  s   z3TestDateRangeTZ.test_date_range_span_dst_transitionc                 C   s6   t |}tdd|d}tdd|d}t|| d S )Nr   r   r   )r   r  r   rd   re   )r2   rb  r/   r   r   r   r   r&   %test_date_range_timezone_str_argument`  s   
z5TestDateRangeTZ.test_date_range_timezone_str_argumentc              	   C   sv   ddl m} |}tdddddd|d}tdddddd|d}t||d	}||jks+J t||g}||jks9J d S )
Nr   )fixed_off_no_namei  rA   r   ra   r  r  r  )-pandas.tests.indexes.datetimes.test_timezonesri  r   r   r/   rt   rf  )r2   ri  offrY   rZ   r3   rf   r   r   r&   'test_date_range_with_fixedoffset_nonameh  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.   ra   z3/11/2012 04:00r   rV   r   r   )r   r  r   )r2   rb  r4   r3   r   r   r&   test_date_range_with_tzt  s   z'TestDateRangeTZ.test_date_range_with_tzN)rK   rL   rM   __doc__ra  rn   r\  r]  rg  rh  rl  rm  r   r   r   r&   r_  H  s    

r_  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zd\Z	Z
d\ZZejdee	edee
fee	ee
edfee	edee
edfee	edee
edfgdd ZdS )TestGenRangeGenerationc                 C   >   t tttd t dd}t tttd ddd}||ksJ d S )NnsrE   r   unitr   )listgenerate_rangeSTARTENDr   r2   r   r   r   r   r&   test_generate     z$TestGenRangeGeneration.test_generatec                 C   rp  )Nrq  rr  C)rt  ru  rv  rw  r   rx  r   r   r&   test_generate_cday  rz  z)TestGenRangeGeneration.test_generate_cdayc                 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   rA      rl   rq  rY   rZ   rE   r   rs     rt  ru  r   r   r2   r3   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   rA   rq  r~  rl   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   ra   r  rq  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QrX   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:03rE  zQ-DECrG  zW-SUNr   )r2   result1result2expected1_listexpected2_list	expected1	expected2r   r   r&    test_precision_finer_than_offset  s    z7TestGenRangeGeneration.test_precision_finer_than_offset)r   r   )r-   zEurope/Londonz	start,endr.   c                 C   s   d}t jt|d t|| W d    n1 sw   Y  t jt|d t||t d W d    d S 1 s9w   Y  d S )Nz>Start and end cannot both be tz-aware with different timezonesrj   rb   )rn   ro   	TypeErrorr   r   r   r   r   r&   test_mismatching_tz_raises_err  s   "z5TestGenRangeGeneration.test_mismatching_tz_raises_errN)rK   rL   rM   ry  r|  r  r  r  r  dt1dt2tz1tz2rn   r\  r]  r   r  r   r   r   r&   ro  ~  s$    #	ro  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 )Nrb      rD   rm   zperiods must be a number, got Brj   r  2012-1-1r   z>freq must be specified for bdate_range; use date_range insteadr   )r   rv  rw  r   rn   ro   r  r   rv   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   ra      r  r     r   r   )r   r   r   r}   r2   rZ   r   	firstDater   r   r&   	test_misc  s   zTestBusinessDateRange.test_miscc                 C   s   d}d}t jt|d t| W d    n1 sw   Y  t jt|d t|dd W d    n1 s7w   Y  t jt|d t|dd W d    n1 sTw   Y  t jt|d t|| W d    d S 1 sqw   Y  d S )Nz
2007/100/1z;Unknown datetime string format, unable to parse: 2007/100/1rj   r   r  r  )rn   ro   rs   r   r   )r2   badly_formed_daterw   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   _datarF   r   union
isinstancer   r2   r   r   r   r   r   r&   test_daterange_bug_456  s
   


z,TestBusinessDateRange.test_daterange_bug_456r(  )r   r   r   r   c                 C   s>   d}d}t ||d|d}d}d}t ||dd}t|| d S )	Nz
2018-07-21z
2018-07-29r   r5  z
2018-07-23z
2018-07-27rC   rb   r   )r2   r(  rY   rZ   r   
bday_startbday_endr   r   r   r&   test_bdays_and_open_boundaries  s   z4TestBusinessDateRange.test_bdays_and_open_boundariesc                 C   s>   t jd }t|d ddd}t|gdd}t|| d S )NrC   r   r   rm   rb   )r   maxfloorto_pydatetimer   r   rd   re   )r2   rY   r3   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 timestamprC   rj   rl   r   rD   )r   r  r  r  rn   ro   r   r   )r2   rw   rY   r   r   r&   test_bday_overflow_error/  s
   "z.TestBusinessDateRange.test_bday_overflow_errorN)rK   rL   rM   r  r  r  r  rn   r\  r]  r  r  r  r   r   r   r&   r    s    		
r  c                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jddd eD dd Ze
jd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 )
Nrb   r  rD   rm   zperiods must be a number, got Crj   r  r  r{  )r   rv  rw  r   rn   ro   r  r   rv   r   r   r&   r  8  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   ra   r  r  r{  rm   r  r   r   )r   r   r   r}   r  r   r   r&   r  D  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{  rb   r  )r   r  rF   r   r  r  r   r  r   r   r&   r  M  s
   
z*TestCustomDateRange.test_daterange_bug_456c                 C   s>   t dddd}tg ddd}t|| |j|jksJ d S )N
2013-05-01rA   r{  rD   )r  
2013-05-02
2013-05-03rb   )r   r   rd   re   rF   r   r   r   r&   test_cdaterangeV  s   z#TestCustomDateRange.test_cdaterangec                 C   s   t ddddd}tg d|jd}t|| |j|jksJ d}tjt|d	 t dddd
 W d    d S 1 s;w   Y  d S )Nr  rA   r{  Sun Mon Tue Wed Thu)rE   rF   weekmask)r  r  
2013-05-05rb   [a custom frequency string is required when holidays or weekmask are passed, got frequency Brj   )rE   r  r   r   rF   rd   re   rn   ro   rs   r2   r   r   rw   r   r   r&   test_cdaterange_weekmask\  s   
"z,TestCustomDateRange.test_cdaterange_weekmaskc                 C   s   t ddddgd}tg d|jd}t|| |j|jks J d}tjt|d t dddgd	 W d    d S 1 s=w   Y  d S )
Nr  rA   r{  )rE   rF   holidays)r  r  
2013-05-06rb   r  rj   )rE   r  r  r  r   r   r&   test_cdaterange_holidaysn  s   
"z,TestCustomDateRange.test_cdaterange_holidaysc                 C   s   t dddddgd}tg d|jd}t|| |j|jks!J d}tjt|d	 t ddddgd
 W d    d S 1 s?w   Y  d S )Nr  rA   r{  r  )rE   rF   r  r  )r  r  r  rb   r  rj   )rE   r  r  r  r  r   r   r&   %test_cdaterange_weekmask_and_holidays~  s,   
"z9TestCustomDateRange.test_cdaterange_weekmask_and_holidaysrF   c                 C   s   g | ]	}| d r|qS )r{  )
startswith)r\   rF   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)rF   r  r  FOOz!invalid custom frequency string: rj   rb   )r   rv  rw  rn   ro   rs   )r2   rF   bad_freqrw   r   r   r&   test_all_custom_freq  s   
"z(TestCustomDateRange.test_all_custom_freq	start_end))z2018-01-01T00:00:01.000Zz2018-01-03T00:00:01.000Z)z2018-01-01T00:00:00.010Zz2018-01-03T00:00:00.010Z)z2001-01-01T00:00:00.010Zz2001-01-03T00:00:00.010Zc                 C   s2   |\}}t ||ddd}t|g}t|| d S )Nrl   r   )rY   rZ   rE   r(  r   )r2   r  rY   rZ   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:00rl   c                 C   s&   t ||dd}t|}t|| d S )Nr{  rz   r   )r2   rY   periodr   r   r   r   r&   .test_range_with_timezone_and_custombusinessday  s   zBTestCustomDateRange.test_range_with_timezone_and_custombusinessdayN)rK   rL   rM   r  r  r  r  r  r  r  rn   r\  r]  r   r  r  r  r   r   r   r&   r  7  s8    		



r  c                  C   s>   t jddgd} tdd| d}tg d| d}t|| d S )	Nz15:00z
2020-11-26)rY   r  z2020-11-25 15:00rB   rz   )z2020-11-25 15:00:00z2020-11-25 16:00:00z2020-11-27 15:00:00z2020-11-27 16:00:00rb   )r   CustomBusinessHourr   r   rd   re   )rF   r   r   r   r   r&   $test_date_range_with_custom_holidays  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'rj   rr   z
2016-03-04rA   hrE   rs  r   rv   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 insteadrj   rr   z
2016-01-02rq  msrF   rs  r   rv   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 )Nrr   z2016-01-01 00:00:01r  r  l    \tGl   _tGre  zM8[ms]rb   usl    `g ) l   A"g ) M8[us]z2016-01-01 00:00:00.001rq  l     ^cQ)! l   AB|cQ)! zM8[ns])r   r   arangeint64r   viewrd   re   )r2   r~   r3   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 unitsrj   rA   r   r  rl   r  re  r  )r   rn   ro   rs   r   r   r   as_unit_valuer  r   r  rd   re   )r2   rY   rZ   r~   r3   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-13rC   r   r  zM8[s]i8r   iQ )r   
datetime64r   rF   rH  r  astyper  rd   r   to_numpy)r2   rY   rZ   r~   rg   r   r   r&   test_date_range_non_nano
  s   

z-TestDateRangeNonNano.test_date_range_non_nanoN)rK   rL   rM   r  r  r  r  r  r   r   r   r&   r    s    r  )2rn  r   r   r   numpyr   rn   r:   r   pandas._libs.tslibsr   pandas._libs.tslibs.offsetsr   r   r	   r
   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsrN   pandasrt   r   r   r   r   r   r   r   r   pandas._testing_testingrd   pandas.core.arrays.datetimesr   ru  rv  rw  r'   r(   rP   r_  ro  r  r  r  r  r   r   r   r&   <module>   s<    (
5     P6jO 