
    Owg                        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c 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      cZ-Z.d Z/ G d d      Z0 G d d      Z1 G d d      Z2 G d d      Z3 G d d      Z4 G d d      Z5 G d d      Z6 G d d      Z7y) 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                     | |d   k(  }||d   k(  }|dk(  r	|r|dd }|S |dk(  r	|r|dd }|S |dk(  r|r	|r|dd }|S |dk(  r	|r|dd }|S |dk(  r	|r|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_ranges          e/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexes/datetimes/test_date_range.py_get_expected_ranger,   3   s      :a=0J*R.0Kf$#CR  
	'J#AB  
		)j[#Ab)  
		)k#CR  
		)j#AB  
	&#A  $A    c                   N    e Zd Zd Zd Zd Zej                  d        Zd Z	d Z
y)TestTimestampEquivDateRangec                 R    t        ddd      }|d   }t        dd      }||k(  sJ y N2009041520090519
US/Easterntzr   r   r   selfrngstamptss       r+   test_date_range_timestamp_equivz;TestTimestampEquivDateRange.test_date_range_timestamp_equivU   s1    ZLAAzl3U{{r-   c                 R    t        ddd      }|d   }t        dd      }||k(  sJ y )Nr2   r3   dateutil/US/Easternr5   r   r7   r8   s       r+   (test_date_range_timestamp_equiv_dateutilzDTestTimestampEquivDateRange.test_date_range_timestamp_equiv_dateutil\   s3    Z4IJAz&;<U{{r-   c                     t        ddt        j                  d            }|d   }t        dt        j                  d            }||k(  sJ y r1   )r   pytzr   r   r8   s       r+   -test_date_range_timestamp_equiv_explicit_pytzzITestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_pytzc   sC    ZDMM,4OPAzdmmL&ABU{{r-   c                 v    ddl m} t        dd |d            }|d   }t        d |d            }||k(  sJ y )Nr   )dateutil_gettzr2   r3   r4   r5   )pandas._libs.tslibs.timezonesrE   r   r   )r9   gettzr:   r;   r<   s        r+   1test_date_range_timestamp_equiv_explicit_dateutilzMTestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_dateutilj   s>    IZE,4GHAzeL&9:U{{r-   c                 d    t        ddd      }t        |dd      d   }t        |      }||k(  sJ y )N        r   Dperiodsfreqr   )r   r   r   )r9   datetime_instancetimestamp_instancer<   s       r+   6test_date_range_timestamp_equiv_from_datetime_instancezRTestTimestampEquivDateRange.test_date_range_timestamp_equiv_from_datetime_instancet   sC    $T1a0 ((913OPQR()''''r-   c                 J    t        ddd      d   }t        d      }||k(  sJ y )Nz
2014-03-05r   rM   rN   r   r7   )r9   rR   r<   s      r+   2test_date_range_timestamp_equiv_preserve_frequencyzNTestTimestampEquivDateRange.test_date_range_timestamp_equiv_preserve_frequency}   s.    'acJ1M|$!R'''r-   N)__name__
__module____qualname__r=   r@   rC   tdskip_if_windowsrH   rS   rU   r#   r-   r+   r/   r/   O   s5      ((r-   r/   c                      e Zd Zd Zd Zd Zej                  j                  dg d      d        Z	d Z
ej                  j                  dg d	      d
        Zd Zd Zd Zd Zd Zej                  j"                  ej                  j                  dddg      d               Zd Zd Zd Zd Zd Zd Zej                  j                  dg d eddd       eddd      dg ed        ed!      dg ed d"       ed!d"      dg ed d"       ed!d"      d#gg      d$        Zd% Zd& Zd' Zd( Zd) Z d* Z!d+ Z"d, Z#d- Z$ej                  j                  d. e ed/dd0      d"       e ed/dd1      d"      g e ed2d3d      d"       e ed2d3d0      d"      gg      d4        Z%d5 Z&ej                  j                  dg d6      ej                  j                  d7d#dg      d8               Z'ej                  j                  dg d6      d9        Z(d: Z)d; Z*d< Z+d= Z,d> Z-d? Z.d@ Z/dA Z0dB Z1ej                  j                  dg dC      dD        Z2ej                  j                  dg dE      dF        Z3dIdGZ4dH Z5y#)JTestDateRangesc                 D    t        dddd      }|j                  dk(  sJ y )Nz
2000-01-01r   YETEST)startrO   rP   name)r   ra   )r9   idxs     r+   test_date_range_namez#TestDateRanges.test_date_range_name   s$    |QTOxx6!!!r-   c                     d}t        j                  t        |      5  t        ddd       d d d        y # 1 sw Y   y xY w)Nz!periods must be a number, got foomatch1/1/2000foorM   r`   rO   rP   )pytestraises	TypeErrorr   r9   msgs     r+   test_date_range_invalid_periodsz.TestDateRanges.test_date_range_invalid_periods   s:    1]]9C0 	BZSA	B 	B 	Bs   6?c                     d}t        j                  t        |      5  t        dd      }d d d        t        dd      }t        j                  |       y # 1 sw Y   -xY w)Nz:Non-integer 'periods' in pd.date_range, pd.timedelta_rangere   rg   g      %@rO   
   )tmassert_produces_warningFutureWarningr   assert_index_equal)r9   rn   r:   exps       r+   !test_date_range_fractional_periodz0TestDateRanges.test_date_range_fractional_period   sT    J''SA 	7Z6C	7R0
c3'	7 	7s   AA!zfreq,freq_depr))2ME2M)2SME2SM)2BQE2BQ)2BYE2BYc                     d|dd   d}d|dd   d t        dd|      }t        j                  t        |	      5  t        dd|      }d d d        t        j                  |       y # 1 sw Y    xY w)
N'r   $' is deprecated and will be removed !in a future version, please use '
' instead.rg   rL   rN   re   )r   rs   rt   ru   rv   )r9   rP   	freq_deprdepr_msgexpectedresults         r+   /test_date_range_frequency_M_SM_BQ_BY_deprecatedz>TestDateRanges.test_date_range_frequency_M_SM_BQ_BY_deprecated   s     y}o%IJ
+DH:Z@j!$?''XF 	G
AIFF	G
fh/	G 	Gs   A**A3c                     t        ddd      }t        j                  t        d      5  t	        |dd       d d d        y # 1 sw Y   y xY w)N  r   zpass as a string insteadre   )rM         )endrP   rO   )r   rj   rk   rl   r   )r9   edates     r+   !test_date_range_tuple_freq_raisesz0TestDateRanges.test_date_range_tuple_freq_raises   s@    q!$]]9,FG 	=5x<	= 	= 	=s   AA
rP   )nsusmsminshrM   c                    t        d|       }t        d      }t        ||z   |d|z  z   |      }t        t	        dd      D cg c]
  }|||z  z    c}d|      }t        j                  ||       t        |d|z  z   ||z   |      }t        g d|      }t        j                  ||       t        ||z   ||z   |      }t        ||z   gd|      }t        j                  ||       y c c}w )	N1z
1970-01-01rL   r`   r   rP   r   r   M8[ns]dtyperP   )r   r   r   r   rangers   rv   )r9   rP   rY   r<   rb   nrw   s          r+   test_date_range_edgesz$TestDateRanges.test_date_range_edges   s    4&z"|$r'QV

 "'1+.QR!b&[.

 	c3' q2v+R

 BhT:
c3' r'R

 R"WIXDA
c3'- /s   C+c                     t        d      }t        j                  t        d      5  t	        t
        j                  d|       d d d        y # 1 sw Y   y xY w)Nr   Cannot generate range withre      r   rO   rP   )r   rj   rk   r   r   r   r   )r9   rP   s     r+   )test_date_range_near_implementation_boundz8TestDateRanges.test_date_range_near_implementation_bound   sD    |]].6RS 	@9==!$?	@ 	@ 	@s   AAc                 8   d}t        j                  t        |      5  t        dt        j
                  d       d d d        t        j                  t        |      5  t        t        j
                  dd       d d d        y # 1 sw Y   JxY w# 1 sw Y   y xY w)Nz$Neither `start` nor `end` can be NaTre   
2016-01-01rM   r   )rj   rk   
ValueErrorr   pdNaTrm   s     r+   test_date_range_natz"TestDateRanges.test_date_range_nat   s{    4]]:S1 	A\rvvC@	A]]:S1 	ARVVC@	A 	A	A 	A	A 	As   BBBBc                 :   t        j                  d       5  t        ddd      }d d d        d   t        d      k(  sJ t	        |      dk(  sJ d}t        j                  t        |      5  t        dd	d
       d d d        y # 1 sw Y   axY w# 1 sw Y   y xY w)N
1677-09-22iA rM   ri   r   r   re   z
1969-05-04i 30000DrN   )rs   rt   r   r   lenrj   rk   r   )r9   dtirn   s      r+   'test_date_range_multiplication_overflowz6TestDateRanges.test_date_range_multiplication_overflow   s     ''- 	K<cJC	K 1v<00003x6!!!*]].c: 	G|YXF	G 	G	K 	K	G 	Gs   B-BBBc                     t        ddd      }t        |d   t        |      d      }|j                  |      sJ t        |d   t        |      d      }|j                  |      sJ y )	Nr   z
2262-04-11rM   r   r   ri   r   r   )r   r   equals)r9   r   dti2dti3s       r+   *test_date_range_unsigned_overflow_handlingz9TestDateRanges.test_date_range_unsigned_overflow_handling   sb     |CHACsC{{3c"gs3xcB{{3r-   c                     d}t        j                  t        |      5  t        ddd       d d d        t        j                  t        |      5  t        ddd       d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)	Nr   re   
1970-02-01i ' r   ri   
1969-11-14r   rj   rk   r   r   rm   s     r+   .test_date_range_int64_overflow_non_recoverablez=TestDateRanges.test_date_range_int64_overflow_non_recoverable   sy     +]].c: 	J\;SI	J ]].c: 	H<3G	H 	H		J 	J	H 	H   A(A4(A14A=z
s_ts, e_ts)z
2262-02-23r   )r   z
1677-10-22c                     t        |      }t        |      }t        ||d      }|d   |k(  sJ |d   |k(  sJ t        |t        |      d      }t        j                  ||       y )Nz-1hr   r   r   r   )r   r   r   rs   rv   )r9   s_tse_tsr`   r   r   r   s          r+   >test_date_range_int64_overflow_stride_endpoint_different_signszMTestDateRanges.test_date_range_int64_overflow_stride_endpoint_different_signs  sj     $oEs?{e###|s"""S#h-eD
c8,r-   c                     d}t        j                  t        |      5  t        ddd       d d d        t        j                  t        |      5  t        ddd       d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)	NzCannot generate rangere   r   i rM   rN   z
1763-10-12r   r   rm   s     r+   test_date_range_out_of_boundsz,TestDateRanges.test_date_range_out_of_bounds  sq    %]].c: 	?|V#>	?]].c: 	C<cB	C 	C	? 	?	C 	Cr   c                 @    t        ddd      }t        |      dk(  sJ y )Nz1/1/2000 00:00z1/1/2000 00:185minrP   rL   )r   r   r9   r:   s     r+   test_date_range_gen_errorz(TestDateRanges.test_date_range_gen_error"  s"    )+;&I3x1}}r-   c                 ^   t        j                         }d}t        ||dd      }t        d      }t	        t        |      D cg c]
  }|||z  z    c}d|      }t        j                  ||       t        d|dd	      }t        d
d      }|D ]  }|j                         |k(  rJ  y c c}w )N2   F2D)rO   	normalizerP   r   r   r   z1/1/2000 08:15B      )	r   todayr   r   r   r   rs   rv   r   )	r9   snapr   r:   offsetir   the_timevals	            r+   test_date_range_normalizez(TestDateRanges.test_date_range_normalize&  s    ~~qEE1 (-a11TAJ1
 	c8,)1CP2; 	*C88:)))	* 2s   B*c                     t        dddddd      }t        dddddd      }d}t        j                  t        |	      5  t	        ||d
d       d d d        y # 1 sw Y   y xY w)N  r   r   rK   (   r   	   VOf the four parameters: start, end, periods, and freq, exactly three must be specifiedre   rr   r   rN   )r   rj   rk   r   r   r9   r`   r   rn   s       r+   #test_date_range_ambiguous_argumentsz2TestDateRanges.test_date_range_ambiguous_arguments8  sg    q!Q2.tQ1a,4 	 ]]:S1 	9uc2C8	9 	9 	9s   AA c                 >   t        ddd|      }t        g dd| dd       }t        j                  ||       t        d	d
dd|      }t        t	        dd      t	        dd      t	        dd      g      j                  |      }t        j                  ||       y )Nz
2018-04-24z
2018-04-27rK   rO   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)r6   rO   r   z2018-04-01 01:00:00+1100r5   z2018-04-01 02:00:00+1000z2018-04-01 04:00:00+1000)r   r   rs   rv   r   as_unitr9   r   r   r   s       r+   #test_date_range_convenience_periodsz2TestDateRanges.test_date_range_convenience_periodsD  s    L,M QvQ-
 	fh/ !!!
 !49KL49KL49KL
 '$- 	 	fh/r-   c                    t        ddd      }t        |      j                         }t        j                  |j                         g      j                  }t        j                  |g      j                  }t        j                  t        d      5  ||k(   d d d        t        j                  t        d      5  ||k(   d d d        t        g d      }||k(  }t        j                  ||       t        g dd	      }|d   |d d df   k(  }t        j                  ||       t        j                  g d
g dg dg      }||k(  }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w)N
2011-01-01rK   r4   rO   r6   zUnable to coerce to Seriesre   )TTTr   ra   )TFF)FTF)FFT)r   r   to_framenparrayto_listTrj   rk   r   r   rs   assert_frame_equalassert_series_equalassert_numpy_array_equal)r9   r:   dfarrarr2r   resultss          r+    test_date_range_index_comparisonz/TestDateRanges.test_date_range_index_comparison`  s9   q\BC[!!#hh'))xx  ]]:-IJ 	2I	 ]]:-IJ 	#I	 /0*
gx0,15Q%41:%
w188!#79MN
 *
##GX6)	 		 	s   E:E*E'*E3zstart,end,result_tz)2018010120180103r4   i  r   rK   r4   r   r   r5   Nc                 l    t        ||d|      }t        dddd      }t        j                  ||       y )NrK   r   r   rM   r4   rO   rP   r6   r   rs   rv   )r9   r`   r   	result_tzr   r   s         r+   test_date_range_linspacing_tzz,TestDateRanges.test_date_range_linspacing_tz|  s4    ( E3i@j!#,O
fh/r-   c                     d}d}t        ||d      }t        ||t        d            }t        j                  ||       y )N
2020-01-01z
2020-01-113Dr   rK   )days)r   r   rs   rv   )r9   r`   r   rng1rng2s        r+   test_date_range_timedeltaz(TestDateRanges.test_date_range_timedelta  s=    %40%9!+<=
dD)r-   c                 V   d}t        j                  t        |      5  t        d       d d d        t        j                  t        |      5  t        d       d d d        t        j                  t        |      5  t        d       d d d        t        j                  t        |      5  t        dd	       d d d        t        j                  t        |      5  t        dd
       d d d        t        j                  t        |      5  t        dd       d d d        t        j                  t        |      5  t                d d d        y # 1 sw Y   ,xY w# 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   y xY w)Nr   re   rg   )r`   )r   rr   rq   r   )r`   rP   )r   rP   rN   rj   rk   r   r   rm   s     r+   test_range_misspecifiedz&TestDateRanges.test_range_misspecified  sO   4 	
 ]]:S1 	)Z(	) ]]:S1 	':&	' ]]:S1 	#r"	# ]]:S1 	3Zc2	3 ]]:S1 	1:C0	1 ]]:S1 	-r,	- ]]:S1 	L	 	%	) 	)	' 	'	# 	#	3 	3	1 	1	- 	-	 	sS   EE">E/.E;FFFE"E,/E8;FFFF(c                 R    t        t        d      dd      }t        |      dk(  sJ y )Nz1960-04-01 00:00:00L   zQS-JANrN   )r   r   r   )r9   r   s     r+   test_compat_replacez"TestDateRanges.test_compat_replace  s*     I&;<bxX6{b   r-   c           	          t        j                  d      }d}t        j                  t        |      5  t        t        ddd      t        ddd      |       d d d        y # 1 sw Y   y xY w)	Nr   )minutez4Offset <DateOffset: minute=5> did not increment datere   r         r   )r   r
   rj   rk   r   r   r   )r9   r   rn   s      r+   test_catch_infinite_loopz'TestDateRanges.test_catch_infinite_loop  s\    ##1-D]]:S1 	Txb"-xb"/EFS	T 	T 	Ts   %A""A+c                    t        d      j                  dd      }t        d      j                  dd      }t        dd      ||g}t        |d	      j                  |      }t	        d
ddd|      }t        j                  ||       y )Nz2010-11-07 01:00:00
US/PacificT)	ambiguousFz2010-11-07 00:00:00r5   r   r   z	2010-11-7rK   )r`   rO   rP   r6   r   )r   tz_localizer   r   r   rs   rv   )r9   r   pre_dstpst_dstexpect_datar   r   s          r+   test_construct_over_dstz&TestDateRanges.test_construct_over_dst  s    12>>D ? 
 12>>E ? 
 +=

 !37??Eqs|$
 	fh/r-   c                     t        ddd|      }t        t        d      t        d      t        d      gd      j                  |      }t	        j
                  ||       y )Nz2013-01-01 00:00:00+09:00z2013/01/01 02:00:00+09:00r   rP   r   z2013-01-01 01:00:00+09:00z2013-01-01 02:00:00+09:00r   )r   r   r   r   rs   rv   r   s       r+   5test_construct_with_different_start_end_string_formatzDTestDateRanges.test_construct_with_different_start_end_string_format  si    ''	
 !565656
 
 '$- 	 	fh/r-   c                     d}t        j                  t        |      5  t        ddt	        d             d d d        y # 1 sw Y   y xY w)Nz.Offset <0 \* MonthEnds> did not increment datere   rg   z1/1/2001r   r   )rj   rk   r   r   r   rm   s     r+   test_error_with_zero_monthendsz-TestDateRanges.test_error_with_zero_monthends  s>    ?]]:S1 	Az:HQK@	A 	A 	As	   ?Ac                     t        d      }t        dd||      }t        ddd      }t        t	        d      D cg c]
  }|||z  z    c}d	| d
|      }t        j                  ||       y c c}w )NrK   )months2011-1-1z	2012-1-31r  r   r   r   r   r   r   )r
   r   r   r   r   rs   rv   )r9   r   r   r   r`   r   r   s          r+   test_range_bugzTestDateRanges.test_range_bug  sr    1%J&tLq!$ ).q2AUQZ2CvQ-f
 	fh/ 3s   A/c                 .   t        d      }|j                  t        ddd            }|j                  t        ddd            }t        |d      }|j                  j
                  |j
                  k(  sJ |d   |k(  sJ |d   |k(  sJ t        |d      }|j                  j
                  |j
                  k(  sJ |d   |k(  sJ |d   |k(  sJ t        ||	      }|j                  j
                  |j
                  k(  sJ |d   |k(  sJ |d   |k(  sJ y )
Nr4   r   r   rK   r`   rO   r   r   r   rO   r`   r   )r   localizer   r   r6   zone)r9   r6   r`   r   drs        r+   test_range_tz_pytzz!TestDateRanges.test_range_tz_pytz  s   l#HT1a01kk(4A./eQ/uuzzRWW$$$!u~~!u||C+uuzzRWW$$$!u~~!u||e-uuzzRWW$$$!u~~!u||r-   z
start, endrJ      r  i  r  c                    t        ||d      }|d   |k(  sJ |d   |k(  sJ t        j                  |j                  dk(        sJ t        ||dd      }|d   |k(  sJ |d   |k(  sJ t        j                  |j                  dk(        sJ t        |j	                  d       |j	                  d       dd      }|d   |k(  sJ |d   |k(  sJ t        j                  |j                  dk(        sJ y )NrM   r   r   r   r4   rP   r6   tzinfo)r   r   allhourreplace)r9   r`   r   r&  s       r+   test_range_tz_dst_straddle_pytzz.TestDateRanges.test_range_tz_dst_straddle_pytz  s     s-!u~~"v}}vvbggl###s>!u~~"v}}vvbggl###MMM&KKtK$	
 !u~~"v}}vvbggl###r-   c                    ddl m fd}t        ddd |d            }t        ddd |d            }t        |d	      }|j                   |d      k(  sJ |d   |k(  sJ |d
   |k(  sJ t        |d      }|j                   |d      k(  sJ |d   |k(  sJ |d
   |k(  sJ t        ||      }|j                   |d      k(  sJ |d   |k(  sJ |d
   |k(  sJ y )Nr   )maybe_get_tzc                      d| z         S )Nz	dateutil/r#   )xr2  s    r+   <lambda>z7TestDateRanges.test_range_tz_dateutil.<locals>.<lambda>6  s    |K!O4 r-   r   r   r4   r+  rK   r!  r   r"  r#  )rF   r2  r   r   r6   )r9   r6   r`   r   r&  r2  s        @r+   test_range_tz_dateutilz%TestDateRanges.test_range_tz_dateutil0  s     	?4q!B|,<=tQ"\*:;eQ/uu<((((!u~~!u||C+uu<((((!u~~!u||e-uu<((((!u~~!u||r-   )1Dr   ry   7W3hr^   r6   c                     t        d|      }t        d|      }t        ||||      }t        ||d|      }t        ||||      }t        j                  ||       y )N2011/1/1r5   2014/1/1)	inclusiverP   r"   r   r   r,   rs   rv   )	r9   rP   r6   inclusive_endpoints_fixturebeginr   result_ranger&   r*   s	            r+   test_range_closedz TestDateRanges.test_range_closedJ  sh    
 *,
r*!3"=D
  sf4H
,3
$?
 	nl;r-   c                     t        d      }t        d      }t        dd      }t        dd      }t        ||||d      }t        ||d|d      }t        ||||      }	t        j                  |	|       y )Nr;  r<  r4   r5   )r=  rP   r6   r"   r>  )
r9   rP   r?  r@  r   begintzendtzrA  r&   r*   s
             r+   1test_range_with_tz_closed_with_tz_aware_start_endz@TestDateRanges.test_range_with_tz_closed_with_tz_aware_start_end\  s     *%
#J<8*6!1
  3&t

 -'	
 	nl;r-   c                    t        ddd|      }t        ddd|      }t        ddd|      }t        ddd|      }|}|}|}|dk(  r|dd  }n|d	k(  r|d d
 }n|dk(  r
|dd  }|d d
 }|dd
 }	t        j                  ||       t        j                  ||       t        j                  ||       t        j                  ||	       y )Nz
2015-09-12z
2015-12-01zQS-MARrP   r=  z
2015-09-01z
2015-09-11r    r   r   r   r"   r   )
r9   r?  right_boundaryleft_boundaryboth_boundaryneither_boundaryexpected_rightexpected_leftexpected_bothexpected_neithers
             r+   test_range_closed_boundaryz)TestDateRanges.test_range_closed_boundaryx  s	   #1	
 #1	
 #1	
 &1	
 '%%&'1)!"-M(F2*3B/N(F2*12.N)#2.M(2.
nn=
m];
m];
.0@Ar-   c                    |}t        ddd|      }t        ddd|      }t        j                  ||       t        ddd|      }t        dd	d|      }t        j                  ||       t        dd
d|      }t        ddd|      }t        j                  ||       t        dd
d|      }	t        ddd|      }
t        j                  |	|
       y )N20142015MEr*  z
2014-01-31
2014-12-31MS
2014-01-01
2015-01-012020r^   z
2019-12-31YSr   r   )r9   tz_naive_fixturer6   r  	expected1r  	expected2rng3	expected3rng4	expected4s              r+   test_date_range_years_onlyz)TestDateRanges.test_date_range_years_only  s    &&t;|\L	
dI.&&t;|\L	
dI.&&t;|\L	
dI.&&t;|\L	
dI.r-   c                     t        ddd      }t        ddd      }t        ddgd	dd 
      }t        ddgd	dd 
      }t        j                  ||       t        j                  ||       y )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   rP   r6   z2005-01-13 10:00:00z2005-01-13 15:45:00r   r   rs   rv   )r9   result_1result_2
expected_1
expected_2s        r+   test_freq_divides_end_in_nanosz-TestDateRanges.test_freq_divides_end_in_nanos  s~    02D8T02D8T""$9:"	

 #"$9:"	

 	h
3
h
3r-   c                     t        ddt        d            }t        |      dk(  sJ |d   t        ddd	d
      k(  sJ y )Nz2010-09-01 05:00:00r   r(  hoursrN   r   r   r   r   r   )r   r
   r   r   r   s     r+   test_cached_range_bugz$TestDateRanges.test_cached_range_bug  sD    .RSATU3x2~~1v$1a0000r-   c                 Z    t        dd      }t        |dd      }t        |      dk(  sJ y )N20130220 10:00r4   r5   r   r   )r   r   r   )r9   r`   r   s      r+   test_timezone_comparison_bugz+TestDateRanges.test_timezone_comparison_bug  s/    *|<E1>6{ar-   c                     t        dd      }d}t        j                  t        |      5  t	        |dd       d d d        y # 1 sw Y   y xY w)	Nrs  r4   r5   z0Inferred time zone not equal to passed time zonere   r   zEurope/Berlinr   )r   rj   rk   AssertionErrorr   )r9   r`   rn   s      r+   test_timezone_comparison_assertz.TestDateRanges.test_timezone_comparison_assert  sC    *|<@]]>5 	=uaO<	= 	= 	=s   AAc                 |    |}t        ddd|      }t        ddd|      d d d   }t        j                  ||       y )Nz
2011-06-01r   z-1MS)r`   r   rP   r6   1MS)r   r`   rP   r6   r   r   )r9   tz_aware_fixturer6   r   r   s        r+   1test_negative_non_tick_frequency_descending_datesz@TestDateRanges.test_negative_non_tick_frequency_descending_dates  sG    ,LvRTU,lSUVbD
 	fh/r-   c                     d}d}t        ||d|      }t        ||dd      }|dk(  r|dd }n	|dv r|d d  }t        j                  |       y )	Nz
2021-09-02rM   )r`   r   rP   r=  r"   r!   r   r   )r   r    r"   r   )r9   r?  r`   r   r   r&   r   s          r+    test_range_where_start_equal_endz/TestDateRanges.test_range_where_start_equal_end  sh    Ss6Q
  e3&Q
&)3!!B'H(,EE!!}H
fh/r-   c                     t        ddd      }t        dd|d      }t        g dd	      }t        j                  ||       y )
Nrr   9   rK   )rp  r   nanosecondsz1970-01-01 00:00:00a)r   rO   rP   ra   )
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   rs   rv   )r9   rP   r   r   s       r+   .test_freq_dateoffset_with_relateivedelta_nanosz=TestDateRanges.test_freq_dateoffset_with_relateivedelta_nanos  sH    ; 5rSVW  
 	fh/r-   ))r   H)2min2T)1s1S)2ms2L)1us1U)2ns2Nc                 L   t        j                  d|d      d   }t        j                  d|d      d   }d| d}d| d t        dd	|
      }t        j                  t
        |      5  t        dd	|
      }d d d        t        j                  |       y # 1 sw Y    xY w)N[0-9]*r   maxsplitr   z9' is deprecated and will be removed in a future version, zplease use 'z	' insteadrg   r   rN   re   resplitr   rs   rt   ru   rv   r9   rP   r   freq_msgfreq_depr_msgrn   r   r   s           r+   'test_frequencies_H_T_S_L_U_N_deprecatedz6TestDateRanges.test_frequencies_H_T_S_L_U_N_deprecated  s     88HdQ7:9qA!DWX 	 xj	*j!$?''SA 	G
AIFF	G
fh/	G 	G   ,BB#))200YE200A)r^   Y)z2YE-MAYz2A-MAY)zYE-MAYzY-MAYc                 L   t        j                  d|d      d   }t        j                  d|d      d   }d| d}d| d t        dd	|
      }t        j                  t
        |      5  t        dd	|
      }d d d        t        j                  |       y # 1 sw Y    xY w)Nr  r   r  r   r   r   r   rg   r   rN   re   r  r  s           r+   'test_frequencies_A_deprecated_Y_renamedz6TestDateRanges.test_frequencies_A_deprecated_Y_renamed$  s     88HdQ7:9qA!D- DE
+H:Z@j!$?''SA 	G
AIFF	G
fh/	G 	Gr  c                     d}t        j                  t        |      5  t        ddd      }d d d        t	        ddgd	
      }t        j
                  |       y # 1 sw Y   /xY w)NzS'm' is deprecated and will be removed in a future version, please use 'ME' instead.re   z
2010-01-01r   mrN   z
2010-01-31z
2010-02-28rU  r   )rs   rt   ru   r   r   rv   )r9   rn   r   r   s       r+   -test_to_offset_with_lowercase_deprecated_freqz<TestDateRanges.test_to_offset_with_lowercase_deprecated_freq9  sf     	 ''SA 	CacBF	C ,!=DI
fh/	C 	Cs   AA$c                     t        ddd      }t        |dd      }t        |      dk(  sJ |d   |dt        j                         z  z   k(  sJ |j
                  dk(  sJ y )	N  r     1Br   )r`   rP   rO   r   r   )r   r   r   r   r   rP   )r9   sdaterb   s      r+   test_date_range_bdayz#TestDateRanges.test_date_range_bdayD  s`    r2&u4<3x2~~1vW\\^!33333xx3r-   )returnN)6rV   rW   rX   rc   ro   rx   rj   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'  r0  r6  rB  rF  rQ  rc  rm  rq  rt  rw  r{  r}  r  r  r  r  r  r#   r-   r+   r\   r\      s3   "B
( [[	
00= [[V%MN!( O!(F@AG
 	H [[[[35QR- -C*$
90878 [[2dAq!8D!Q#7Fz"Ij$9<H*6*6 *6*6	
$0%$0*8!T0&0$A
	0* [[ (4A.<@(4B/LA
 (4Q/LA(4Q/LA		
$$*4 [[V%JK[[TD,#78< 9 L<  [[V%JK< L<6,B\/&4&1
 =00 0* [[	

0
0 [[	

0
0	0r-   r\   c                      e Zd ZdZd Zej                  j                  dddg      d        Zej                  j                  dddg      d        Z	d Z
d	 Zej                  j                  dddg      d
        Zej                  j                  dddg      d        Zej                  j                  dg dg dg dg dd ed      dgg      d        Zy)TestDateRangeTZz#Tests for date_range with timezonesc                 :    t        dddd      }|j                   y )Nz
2012-01-01z
2012-01-10rM   Hongkongr*  )r   r.  )r9   r&  s     r+   test_hongkong_tz_convertz(TestDateRangeTZ.test_hongkong_tz_convertO  s    lL 	r-   tzstrr4   r?   c                     t        dddd      }|j                  dk(  j                         sJ t        dd|	      }|j                  }t        j                  dgdz  d
      }t        j                  ||       y )Nz03/06/2012 00:00   zW-FRIr4   r   r   z
2012-11-02rr   r   int32r   )r   r.  r-  r   Indexrs   rv   )r9   r  r&  r   r   s        r+   #test_date_range_span_dst_transitionz3TestDateRangeTZ.test_date_range_span_dst_transitionV  sl    
 *Cg,W1!!###bU;88QC"HG4
fh/r-   c                     t        j                  |      }t        dd|      }t        dd|      }t        j                  ||       y )Nrg   rr   r   )r   r2  r   rs   rv   )r9   r  r6   r   r   s        r+   %test_date_range_timezone_str_argumentz5TestDateRangeTZ.test_date_range_timezone_str_argumentd  s>    ##E*Ju=j"<
fh/r-   c           	      d   t        dd      }t        dddddd|      }t        dd	dddd|      }t        ||
      }||j                  k(  sJ t        |t	        |      |      }t        j                  ||       t        dd      }|j                  |j                  k(  j                         sJ y )Ni  z+07:00  rK   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   r6   r   rs   rv   valuesr-  )r9   offr`   r   r:   r  r_  s          r+   test_date_range_with_fixed_tzz-TestDateRangeTZ.test_date_range_with_fixed_tzl  s    #x(q"aAc:tQAq!C8u#.cff}}%Sc:
c4(46PQ

dkk)..000r-   c           	          t         }t        dddddd|      }t        dddddd|      }t        ||      }||j                  k(  sJ t	        j
                  ||g      }||j                  k(  sJ y )	Nr  rK   r  r   r   r+  r(  r#  )r   r   r   r6   r   r  )r9   r  r`   r   r:   rb   s         r+   'test_date_range_with_fixedoffset_nonamez7TestDateRangeTZ.test_date_range_with_fixedoffset_nonamey  sq    q"aAc:tQAq!C8u#.cff}}hhs|$cff}}r-   c                 r    t        d|      }|j                  dk(  sJ t        ddd|      }||d   k(  sJ y )	Nz3/11/2012 05:00r5   r   z3/11/2012 04:00rr   r   r   r   )r   r.  r   )r9   r  r;   r:   s       r+   test_date_range_with_tzz'TestDateRangeTZ.test_date_range_with_tz  s@    +6zzQ*BSUKAr-   r6   Europe/Londonzdateutil/Europe/Londonc                 
   t        j                  t        j                  d      5  t	        dddd       d d d        t	        ddd|d	      }|d
   t        d|      k(  sJ |d   t        d|      k(  sJ y # 1 sw Y   DxY w)NzCannot infer dst timere   z2013-10-26 23:00z2013-10-27 01:00r  r   r6   rP   infer)rP   r6   r  r   r5   r   z2013-10-27 01:00:00+0000)rj   rk   rB   AmbiguousTimeErrorr   r   )r9   r6   timess      r+   "test_date_range_ambiguous_endpointz2TestDateRangeTZ.test_date_range_ambiguous_endpoint  s    
 ]]422:QR 	"$6?QT	
  2w
 Qx9%7B????RyI&@RHHHH	 	s   A99Bz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   ro  r  c                     t        j                  t        j                  d      5  t	        dddd       d d d        t	        ddd||      }|d	   t        ||
      k(  sJ y # 1 sw Y   /xY w)Nz2019-03-10 02:00:00re   z2019-03-10 00:00z2019-03-10 02:00r  r   r  )rP   r6   nonexistentr   r5   )rj   rk   rB   NonExistentTimeErrorr   r   )r9   r6   optionr   r  s        r+   $test_date_range_nonexistent_endpointz4TestDateRangeTZ.test_date_range_nonexistent_endpoint  st     ]]444<QR 	"$6<c	
  2QW
 RyIh26666	 	s   A$$A-N)rV   rW   rX   __doc__r  rj   r  r  r  r  r  r  r  r  r   r  r#   r-   r+   r  r  L  s   - [[W|5J&KL0 M0 [[W|5J&KL0 M01 [[W|5J&KL M [[TO5M#NOI PI [[?H@I91-/AB	
	7	7r-   r  c                   p   e Zd Zej                  j                  dd e       fd e       fg      d        Zd Z	d Z
d Zd Zd	\  ZZd
\  ZZej                  j                  d eee       ee      f ee       eee      f eee       eee      f eee       eee      fg      d        Zy)TestGenRangeGenerationfreqstr,offsetr   Cc           	          t        t        t        t        d |d            }t        t        t        t        d |d            }||k(  sJ y )Nr   )rO   r   r   )listgenerate_rangeSTARTEND)r9   freqstrr   r  r  s        r+   test_generatez$TestGenRangeGeneration.test_generate  s@     N5#tFQUVWN5#tGRVWXt||r-   c           	          t        t        t        ddd      d dt               d            }t        ddd      t        ddd      g}||k(  sJ y )Nr   rK   r  r   r   r`   r   rO   r   r      r  r  r   r   r9   r:   r   s      r+   test_1zTestGenRangeGeneration.test_1  sX    tQ+v
 T1b)8D!R+@Ahr-   c           
          t        t        t        ddd      t        ddd      d t               d            }t        ddd      t        ddd      t        ddd      g}||k(  sJ y )N  r   rK   r   r  r   r  r  s      r+   test_2zTestGenRangeGeneration.test_2  sm    tQ*T1a(v
 T1a((4A*>qRS@TUhr-   c           
          t        t        t        ddd      t        ddd      d t               d            }g }||k(  sJ y )Nr  r   r   r(  r   r  r  r  s      r+   test_3zTestGenRangeGeneration.test_3  sJ    tQ*T1a(v
 hr-   c                     t        ddd      }t        ddd      }g d}g d}t        |d	d
d       }t        |d	dd       }t        j                  ||       t        j                  ||       y )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:03rf  zQE-DECrg  W-SUNrh  )r9   result1result2expected1_listexpected2_listr]  r^  s          r+    test_precision_finer_than_offsetz7TestGenRangeGeneration.test_precision_finer_than_offset  s    '-B
 '-B


 ""2d
	 ""2T
	 	gy1
gy1r-   )
2017-01-01r  )r4   r  z	start,endr5   c                    d}t        j                  t        |      5  t        ||       d d d        t        j                  t        |      5  t        ||t	                      d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nz>Start and end cannot both be tz-aware with different timezonesre   r   )rj   rk   rl   r   r   r   s       r+   test_mismatching_tz_raises_errz5TestGenRangeGeneration.test_mismatching_tz_raises_err  sm     O]]9C0 	#uc"	#]]9C0 	0uc/	0 	0	# 	#	0 	0s   A.A:.A7:BN)rV   rW   rX   rj   r  r  r   r	   r  r  r  r  r  dt1dt2tz1tz2r   r  r#   r-   r+   r  r    s    [[$&M$&M	

!2F *HC,HC[[ss#Ys^4s^Yss34ss#Yss%;<ss#Yss%;<		
00r-   r  c                   x    e Zd Zd Zd Zd Zd Zej                  j                  dg d      d        Z
d Zd	 Zy
)TestBusinessDateRangec                 2   t        t        t        t                      t        t        dt                      t        t        dt                      d}t	        j
                  t        |      5  t        ddd	       d d d        t	        j
                  t        |      5  t        ddd	       d d d        d
}t	        j
                  t        |      5  t        t        t        dd        d d d        y # 1 sw Y   xxY w# 1 sw Y   SxY w# 1 sw Y   y xY w)Nr   r   rN   r   zperiods must be a number, got Bre   r  2012-1-1r   z>freq must be specified for bdate_range; use date_range insteadrr   )r   r  r  r   rj   rk   rl   r   rm   s     r+   test_constructorz&TestBusinessDateRange.test_constructor!  s    E3TV,E2DF3r7/]]9C0 	4z:s3	4 ]]9C0 	5
J4	5 O]]9C0 	;sBT:	; 	;	4 	4	5 	5	; 	;s$   0C5!DD5C>D
Dc                     t        ddd      }t        |d      }|dt               z  z
  }t        |      dk(  sJ |d   |k(  sJ |d   |k(  sJ y )	Nr   r      r   r"     r   r   )r   r   r   r   r9   r   r&  	firstDates       r+   	test_misczTestBusinessDateRange.test_misc1  s^    tQ#S"-"tv+%	2w"}}!u	!!!"v}}r-   c                    d}d}t        j                  t        |      5  t        |       d d d        t        j                  t        |      5  t	        |d       d d d        t        j                  t        |      5  t	        |d       d d d        t        j                  t        |      5  t	        ||       d d d        y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   RxY w# 1 sw Y   y xY w)Nz
2007/100/1z;Unknown datetime string format, unable to parse: 2007/100/1re   rr   r!  r"  )rj   rk   r   r   r   )r9   badly_formed_datern   s      r+   test_date_parse_failurez-TestBusinessDateRange.test_date_parse_failure:  s    (K]]:S1 	)'(	) ]]:S1 	=/<	= ]]:S1 	;-r:	; ]]:S1 	>)+<=	> 	>	) 	)	= 	=	; 	;	> 	>s/   CC C1C+CCC(+C4c                     t        dd      }t        dd      }|j                  j                  t               k(  sJ |j	                  |      }t        |t              sJ y )N	12/5/2011	12/2/2011)r   _datarP   r   union
isinstancer   r9   r  r  r   s       r+   test_daterange_bug_456z,TestBusinessDateRange.test_daterange_bug_456J  sP    ;4;4zz$&(((D!&-000r-   r=  )r   r    r!   r"   c                 z    d}d}t        ||d|      }d}d}t        ||d      }t        j                  ||       y )	Nz
2018-07-21z
2018-07-29r   rH  z
2018-07-23z
2018-07-27rM   r   r   )r9   r=  r`   r   r   
bday_startbday_endr   s           r+   test_bdays_and_open_boundariesz4TestBusinessDateRange.test_bdays_and_open_boundariesS  sF     E3SIF!
j(=
fh/r-   c                     t         j                  j                  d      j                         }t	        |d dd      }t        |gd      j                  d      }t        j                  ||       y )NrM   r   r   r   r   r   )	r   maxfloorto_pydatetimer   r   r   rs   rv   )r9   r`   r:   r   s       r+   test_bday_near_overflowz-TestBusinessDateRange.test_bday_near_overflow`  sX    ##C(668D!#> %s3;;DA
c8,r-   c                     d}t         j                  j                  d      j                         }t	        j
                  t        |      5  t        |dd       d d d        y # 1 sw Y   y xY w)Nz"Out of bounds nanosecond timestamprM   re   r   r   rN   )r   r  r  r  rj   rk   r   r   )r9   rn   r`   s      r+   test_bday_overflow_errorz.TestBusinessDateRange.test_bday_overflow_errorg  sT    2##C(668]].c: 	3uac2	3 	3 	3s   A##A,N)rV   rW   rX   r  r  r  r  rj   r  r  r  r  r  r#   r-   r+   r  r     sG    ; > 1 [[[*NO	0 P	0-3r-   r  c            
       |   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  d	eD  cg c]  }|j                  d
      s| c}}       d        Zej                  j                  dg d      d        Zej                  j                  ddddgfdddgfddddgfg      d        Zyc c}} w )TestCustomDateRangec                    t        t        t        t                      t        t        dt                      t        t        dt                      d}t	        j
                  t        |      5  t        ddd	       d d d        t	        j
                  t        |      5  t        ddd	       d d d        y # 1 sw Y   ;xY w# 1 sw Y   y xY w)
Nr   r   rN   r   zperiods must be a number, got Cre   r  r  r  )r   r  r  r	   rj   rk   rl   r   rm   s     r+   r  z$TestCustomDateRange.test_constructorp  s    E3TV,E2DF3r7/]]9C0 	4z:s3	4 ]]9C0 	5
J4	5 	5	4 	4	5 	5s   0B8!C8CCc                     t        ddd      }t        |dd      }|dt               z  z
  }t        |      dk(  sJ |d   |k(  sJ |d	   |k(  sJ y )
Nr   r   r  r   r  r   r  r   r   )r   r   r	   r   r  s       r+   r  zTestCustomDateRange.test_misc|  s`    tQ#S"37"tv+%	2w"}}!u	!!!"v}}r-   c                     t        ddd      }t        ddd      }|j                  j                  t               k(  sJ |j	                  |      }t        |t              sJ y )Nr
  r  r   r  )r   r  rP   r	   r  r  r   r  s       r+   r  z*TestCustomDateRange.test_daterange_bug_456  sT    ;#>;#>zz$&(((D!&-000r-   c                     t        ddd|      }t        g dd| dd      }t        j                  ||       |j                  |j                  k(  sJ y )	N
2013-05-01rK   r  rO   rP   r   )r"  
2013-05-02
2013-05-03r   r   r   )r   r   rs   rv   rP   r   s       r+   test_cdaterangez#TestCustomDateRange.test_cdaterange  sT    \13TJ 6D6mRU
 	fh/{{hmm+++r-   c                 B   t        dddd|      }t        g dd| d|j                  	      }t        j                  ||       |j                  |j                  k(  sJ d
}t        j                  t        |      5  t        ddd       d d d        y # 1 sw Y   y xY w)Nr"  rK   r  Sun Mon Tue Wed Thu)rO   rP   weekmaskr   )r"  r$  
2013-05-05r   r   r   [a custom frequency string is required when holidays or weekmask are passed, got frequency Bre   )rO   r)  r   r   rP   rs   rv   rj   rk   r   r9   r   r   r   rn   s        r+   test_cdaterange_weekmaskz,TestCustomDateRange.test_cdaterange_weekmask  s    !#8MTX
 !6vQ-

 	fh/{{hmm+++3 	 ]]:S1 	Qa:OP	Q 	Q 	Qs   =BBc                 F   t        ddddg|      }t        g dd| d|j                        }t        j                  ||       |j                  |j                  k(  sJ d	}t        j                  t        |
      5  t        dddg       d d d        y # 1 sw Y   y xY w)Nr"  rK   r  )rO   rP   holidaysr   )r$  r%  
2013-05-06r   r   r   r+  re   )rO   r0  r,  r-  s        r+   test_cdaterange_holidaysz,TestCustomDateRange.test_cdaterange_holidays  s    !#T
 !6vQ-

 	fh/{{hmm+++3 	 ]]:S1 	Ja<.I	J 	J 	Js   >BB c                     t        dddddg|      }t        g dd| d|j                  	      }t        j                  ||       |j                  |j                  k(  sJ y )
Nr"  rK   r  r(  )rO   rP   r)  r0  r   )r$  r*  r1  r   r   r   )r   r   rP   rs   rv   r   s       r+   %test_cdaterange_weekmask_and_holidaysz9TestCustomDateRange.test_cdaterange_weekmask_and_holidays  si    *"^
 !6vQ-

 	fh/{{hmm+++r-   c                     d}t        j                  t        |      5  t        ddddg       d d d        y # 1 sw Y   y xY w)Nr+  re   r"  rK   r(  )rO   r)  r0  )rj   rk   r   r   rm   s     r+   2test_cdaterange_holidays_weekmask_requires_freqstrzFTestCustomDateRange.test_cdaterange_holidays_weekmask_requires_freqstr  sG    3 	 ]]:S1 	.&		 	 	s	   8ArP   r  c                     t        t        t        |ddg       |dz   }d| }t        j                  t
        |      5  t        t        t        |       d d d        y # 1 sw Y   y xY w)NzMon Wed Friz
2009-03-14)rP   r)  r0  FOOz!invalid custom frequency string: re   r   )r   r  r  rj   rk   r   )r9   rP   bad_freqrn   s       r+   test_all_custom_freqz(TestCustomDateRange.test_all_custom_freq  s_    
 	3TM\N	
 %<1(<]]:S1 	3s2	3 	3 	3s   AA(	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                 t    |\  }}t        ||dd      }t        |gd      }t        j                  ||       y )Nr   r   )r`   r   rO   r=  zM8[ns, UTC]r  rh  )r9   r;  r`   r   r   r   s         r+   &test_range_with_millisecond_resolutionz:TestCustomDateRange.test_range_with_millisecond_resolution  s;     
s%S!vN %>
fh/r-   z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                     t        ||d      }t        |      j                  d      }t        j                  ||       y )Nr  ri   r   )r   r   r   rs   rv   )r9   r`   periodr   r   s        r+   .test_range_with_timezone_and_custombusinessdayzBTestCustomDateRange.test_range_with_timezone_and_custombusinessday  s7     %cB *2248
fh/r-   N)rV   rW   rX   r  r  r  r&  r.  r2  r4  r6  rj   r  r  r   
startswithr:  r=  r@  ).0rP   s   00r+   r  r  o  s    
51,Q(J(," [[.I$DOOC4HI	3	3 [[	
00 [[(!.I-JK(!.I-JK+,.IJ	
00Q Js   B8B8r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestDateRangeNonNanoc                     d}t        j                  t        |      5  t        dddd       d d d        y # 1 sw Y   y xY w)Nz+'unit' must be one of 's', 'ms', 'us', 'ns're   r   z
2016-03-04rK   r   r   r  rm   s     r+   test_date_range_reso_validationz4TestDateRangeNonNano.test_date_range_reso_validation  s<    ;]]:S1 	H|\13G	H 	H 	H	   7A c                     d}t        j                  t        |      5  t        dddd       d d d        y # 1 sw Y   y xY w)Nz)Use a lower freq or a higher unit insteadre   r   z
2016-01-02r   r   r  r  rm   s     r+   %test_date_range_freq_higher_than_resoz:TestDateRangeNonNano.test_date_range_freq_higher_than_reso  s<    9]]:S1 	I|\4H	I 	I 	IrG  c                 n   t        dddd      }t        j                  ddt        j                        }t	        |j                  d      d	      }t        j                  ||       t        ddd
d
      }t        j                  ddt        j                        }t	        |j                  d      d
	      }t        j                  ||       t        dddd      }t        j                  ddt        j                        }t	        |j                  d      d	      }t        j                  ||       y )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   viewrs   rv   )r9   r   r:   r   s       r+   !test_date_range_freq_matches_resoz6TestDateRangeNonNano.test_date_range_freq_matches_reso  s    '<4dSii)+<BHHM (!3$?
c8,'<4dSii-/DBHHU (!3$?
c8,'@tRVWii%'@
 !(!3$?
c8,r-   c                    t        d      }t        d      }t        j                  t        d      5  t	        ||dd       d d d        t	        ||dd	      }t        j                  |j                  d	      j                  |j                  d	      j                  gt
        j                  
      }t        |j                  d            }t        j                  ||       y # 1 sw Y   xY w)Nz2022-10-19 11:50:44.719781z2022-10-19 11:50:47.066458zCannot losslessly convert unitsre   rK   r   r   r   r   r  rK  )r   rj   rk   r   r   r   r   r   _valuerM  r   rN  rs   rv   )r9   r`   r   r   r:   r   s         r+   )test_date_range_freq_lower_than_endpointsz>TestDateRangeNonNano.test_date_range_freq_lower_than_endpoints-  s    6745 ]]:-NO 	8uc137	8 QT:hh]]4 ''T):)A)AB"((
 !(!34
c8,	8 	8s   C##C,c                    t        j                  d      }t        j                  d      }t        ||dd      }|j                  dk(  sJ |j                  dk(  sJ t        j
                  |j                  d      j                  d      |dz   j                  d      j                  d      d	      j                  d      }t        j                  |j                         |       y )
Nz
1066-10-14z
2305-07-13rM   r   r  zM8[s]i8r   iQ )r   
datetime64r   rP   r   rL  astyperN  rs   r   to_numpy)r9   r`   r   r   rw   s        r+   test_date_range_non_nanoz-TestDateRangeNonNano.test_date_range_non_nano>  s    l+mmL)#C8xx3yyG###iiLL!&&t,1WW%**40
 $w-	 	 	##CLLNC8r-   N)rV   rW   rX   rF  rI  rO  rR  rX  r#   r-   r+   rD  rD    s    H
I-&-"9r-   rD  c            	       .   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zej*                  j-                  dd ej0                  d      fd ej2                  d      fd ej4                  d      fg      d        Zy)TestDateRangeNonTickFreqc                     t               }t        j                  |      t        dd|      }t	        fd|D              sJ t        g dd| d	      }t        j                  ||       y )
Ncalendar2012010120130101r`   r   rP   r   c              3   @   K   | ]  }j                  |        y wNis_on_offsetrB  r4  rP   s     r+   	<genexpr>zWTestDateRangeNonTickFreq.test_date_range_custom_business_month_begin.<locals>.<genexpr>V       5A4$$Q'5   )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   rs   rv   r9   r   hcalr   r   rP   s        @r+   +test_date_range_custom_business_month_beginzDTestDateRangeNonTickFreq.test_date_range_custom_business_month_beginR  sp    ')##T2zz4P55555  vQ-!
$ 	c8,r-   c                     t               }t        j                  |      t        dd|      }t	        fd|D              sJ t        g dd| d	      }t        j                  ||       y )
Nr\  r^  r_  r`  c              3   @   K   | ]  }j                  |        y wrb  rc  re  s     r+   rf  zUTestDateRangeNonTickFreq.test_date_range_custom_business_month_end.<locals>.<genexpr>p  rg  rh  )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   rs   rv   rj  s        @r+   )test_date_range_custom_business_month_endzBTestDateRangeNonTickFreq.test_date_range_custom_business_month_endl  sp    ')!!40zz4P55555  vQ-!
$ 	c8,r-   c                     t        j                  ddg      }t        dd||      }t        g dd| d	|
      }t	        j
                  ||       y )Nz15:00z
2020-11-26)r`   r0  z2020-11-25 15:00rL   r`   rO   rP   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   rs   rv   )r9   r   rP   r   r   s        r+   $test_date_range_with_custom_holidaysz=TestDateRangeNonTickFreq.test_date_range_with_custom_holidays  sY    ))<.Q"4adQUV  vQ-	
 	fh/r-   c                 Z   t        g dd| dd      }t        ddd|      }t        j                  ||       t        dd	gd| dd      }t        dd	d|      }t        j                  ||       t        g d
d| dd      }t        ddd|      }t        j                  ||       y )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   rv  r}  r  2014-07-07 09:00)rv  rw  rx  ry  rz  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   rs   rv   )r9   r   rb   r:   s       r+   test_date_range_businesshourz5TestDateRangeNonTickFreq.test_date_range_businesshour  s    	 vQ-
 +-?dQUV
c3'!34c$qMPT
 +-?dQUV
c3'4 vQ-9
< +-?dQUV
c3'r-   c                 2   t        ddd|      }t        ddd|      }t        ddd|      }t        g dd	| d
d      }t        j                  ||       t        j                  ||       t        j                  ||       t        ddd|      }t        ddd|      }t        ddd|      }|t	        d      j                  |      z   }	d|	_        t        j                  ||	       t        j                  ||	       t        j                  ||	       y )Nr|  r  r~  r`  r  rr  )r   rO   rP   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   rs   rv   r   r   rP   )
r9   r   idx1idx2idx3r   idx4idx5idx6r^  s
             r+   test_date_range_business_hour2z7TestDateRangeNonTickFreq.test_date_range_business_hour2  s   $*<4d
  2BTPTU0"4dS  vQ-!
$ 	dH-
dH-
dH-$*<4d
  2BTPTU0"4dSy4<<TBB		
dI.
dI.
dI.r-   c                 t    t        ddd|      }t        dgd| dd      }t        j                  ||       y )Nz2014-07-01 10:00r~  r   )r`   rP   rO   r   r   r   r   rh  )r9   r   r  rb  s       r+   #test_date_range_business_hour_shortz<TestDateRangeNonTickFreq.test_date_range_business_hour_short  s>     2qtT!#5"6D6mRVW	
dI.r-   c                 v    t        ddd|      }t        g dd| dd      }t        j                  ||       y )	N1/1/20137/1/2017r[  r  )
2013-01-01rX  rY  r   r  r   r   r   rh  r9   r   r:   rw   s       r+   test_date_range_year_startz3TestDateRangeNonTickFreq.test_date_range_year_start  s?    ZdFRvQ-

 	c3'r-   c                 v    t        ddd|      }t        g dd| dd      }t        j                  ||       y )	Nr  r  r^   r  )
2013-12-31rV  
2015-12-31z
2016-12-31r   r   r   rh  r  s       r+   test_date_range_year_endz1TestDateRangeNonTickFreq.test_date_range_year_end  s?    ZdFDvQ-

 	c3'r-   c                     t        ddd|      }t        g dd| dd      }t        j                  ||       |j                  dk(  sJ y )	N
2011-12-31z-2YErK   rP   rO   r   )r  z
2009-12-31z
2007-12-31r   r   r   r   r   rs   rv   rP   r  s       r+   &test_date_range_negative_freq_year_endz?TestDateRangeNonTickFreq.test_date_range_negative_freq_year_end  P    FADI6D6mRX
 	c3'xx6!!!r-   c                 v    t        ddd|      }t        g dd| dd      }t        j                  ||       y )	Nr  r  BYEr  )r  rV  r  z
2016-12-30r   r   r   rh  r  s       r+   &test_date_range_business_year_end_yearz?TestDateRangeNonTickFreq.test_date_range_business_year_end_year  s?    Ze$GDvQ-

 	c3'r-   c                 v    t        ddd|      }t        g dd| dd      }t        j                  ||       y )	Nrg   rr   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   rh  r   s       r+   test_date_range_bmsz,TestDateRangeNonTickFreq.test_date_range_bms$  sC    JTJ  vQ-
  	fh/r-   c                    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|      }t        |d| dd      }t        j                  ||       y )N  r  r   r  r   r   rK   rL   r   r(     r   r   rr   r  r   r   SMSr`  r   r   r   r   r   r   rs   rv   r9   r   datesr   rw   s        r+    test_date_range_semi_month_beginz9TestDateRangeNonTickFreq.test_date_range_semi_month_begin:  su   T2r"T1a T1b!T1a T1b!T1a T1b!T1a T1b!T1a T1b!T1a T1b!T1a T1b!T1a T1b!T1a T1b!T2q!T2r"T2q!T2r"T2q!T2r"3
8 %(b	DQE3tfAUC
fc*r-   c                    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|      }t        |d| dd      }t        j                  ||       y )Nr  r     r  r   r   r      rK   rL      r   r(  r  r   r   rr   r  r   r   SMEr`  r   r   r   r  r  s        r+   test_date_range_semi_month_endz7TestDateRangeNonTickFreq.test_date_range_semi_month_end[  su   T2r"T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T1b!T2r"T2r"T2r"T2r"T2r"T2r"3
8 %(b	DQE3tfAUC
fc*r-   c                     t        ddd|      }t        dgd| dd      }t        j                  ||       t        dd	d|      }t        dd
gd| dd      }t        j                  ||       y )N20110101r   zWOM-1MONrr  z
2011-01-03r   r   r   r   z
2011-02-07rh  )r9   r   r   r   r  r^  s         r+   test_date_range_week_of_monthz6TestDateRangeNonTickFreq.test_date_range_week_of_month|  s}     *ajtT ,TF!}:V
fh/:qzPTU!<(#dV1J
	 	gy1r-   c                 v    t        ddd|      }t        g dd| dd      }t        j                  ||       y )	Nz2013-1-1rL   zWOM-1SATr#  )z
2013-01-05z
2013-02-02z
2013-03-02z
2013-04-06r   r   r   rh  r   s       r+   test_date_range_week_of_month2z7TestDateRangeNonTickFreq.test_date_range_week_of_month2  s?    J
N DvQ-

 	fh/r-   c                     t        ddd|      }t        g dd| dd      }t        j                  ||       |j                  dk(  sJ y )	N
2011-01-31z-2MErK   r  )r  z
2010-11-30z
2010-09-30r   r   r   r  r  s       r+   'test_date_range_negative_freq_month_endz@TestDateRangeNonTickFreq.test_date_range_negative_freq_month_end  r  r-   c                     t        j                  ddd      }t        dd||      }t        dd	gd
| d|      }t	        j
                  ||       y )Nr   rK   nearest)startingMonthweekday	variationr  r   rr  z
2013-01-31z
2014-01-30r   r   r   )r   FY5253r   r   rs   rv   )r9   r   rP   r   r   s        r+   test_date_range_fy5253z/TestDateRangeNonTickFreq.test_date_range_fy5253  s\    ~~AqIN	
 !<(#dV1D
 	c8,r-   r  QSr   )r  BQEr  r  r(  )r  c                     t        ddd      }t        ddd      }t        |||      }t        |||      }t        |      t        |      k(  sJ |j                  |j                  k(  sJ y )Nr  r  r  r   r   r   )r   r   r   rP   )r9   r  r   r  r   r  r  s          r+   &test_date_range_freqstr_matches_offsetz?TestDateRangeNonTickFreq.test_date_range_freqstr_matches_offset  sh     r2&q!$5w?5v>4yCI%%%yyDII%%%r-   N)rV   rW   rX   rl  rp  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rj   r  r  r   QuarterBeginBQuarterEndWeekr  r#   r-   r+   rZ  rZ  O  s    -4-40 7(r&/P/(("(0,+B+B20"- [['7''a89'G''b9:lgll1-.	
&&r-   rZ  )8r  r   r   r   r  numpyr   rj   rB   r   pandas._libs.tslibsr   pandas._libs.tslibs.offsetsr   r	   r
   r   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsrY   pandasr   r   r   r   r   r   r   r   r   pandas._testing_testingrs   pandas.core.arrays.datetimesr   r  -pandas.tests.indexes.datetimes.test_timezonesr   r   pandas.tseries.holidayr   r  r  r,   r/   r\   r  r  r  r  rD  rZ  r#   r-   r+   <module>r     s    
 
     )  . ) ) 	 	 	  J
 <dAq!8D!Q#7
s82( 2(jE EPe7 e7Pi0 i0XL3 L3^[0 [0|?9 ?9Dj& j&r-   