o
    ôT·j³ï  ã                   @   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!   úq/home/dinkstrade/pdmp-scanner/venv/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-22iÿA 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 )Né2   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 s‹w   Y  t jt|d�� tddd� W d   ƒ n1 s¨w   Y  t jt|d�� tƒ  W d   ƒ d S 1 sÃw   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:00éL   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   i€Q )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