
    iO                       d Z ddlmZmZmZ ddlZddlZddlZddlm	Z	 ddl
mZmZmZmZmZ ddlmZ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      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)	timezones)BDayCDay
DateOffsetMonthEndprefix_mapping)OutOfBoundsDatetimePandas4Warning)	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          k/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/tests/indexes/datetimes/test_date_range.py_get_expected_ranger,   4   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_equivV   s1    ZLAAzl3U{{r-   c                 R    t        ddd      }|d   }t        dd      }||k(  sJ y )Nr1   r2   dateutil/US/Easternr4   r   r6   r7   s       r+   (test_date_range_timestamp_equiv_dateutilzDTestTimestampEquivDateRange.test_date_range_timestamp_equiv_dateutil]   s3    Z4IJAz&;<U{{r-   c                     t        j                  d      }t        dd|j                  d            }|d   }t	        d|j                  d            }||k(  sJ y )Npytzr1   r2   r3   r4   r   )pytestimportorskipr   timezoner   )r8   rA   r9   r:   r;   s        r+   -test_date_range_timestamp_equiv_explicit_pytzzITestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_pytzd   sS    ""6*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_gettzr1   r2   r3   r4   )pandas._libs.tslibs.timezonesrG   r   r   )r8   gettzr9   r:   r;   s        r+   1test_date_range_timestamp_equiv_explicit_dateutilzMTestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_dateutill   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   )r8   datetime_instancetimestamp_instancer;   s       r+   6test_date_range_timestamp_equiv_from_datetime_instancezRTestTimestampEquivDateRange.test_date_range_timestamp_equiv_from_datetime_instancev   sC    $T1a0 ((913OPQR()''''r-   c                 J    t        ddd      d   }t        d      }||k(  sJ y )Nz
2014-03-05r   rO   rP   r   r6   )r8   rT   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?   rE   tdskip_if_windowsrJ   rU   rW   r#   r-   r+   r/   r/   P   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d.dd/       ed.dd0      g ed1d2d       ed1d2d/      gg      d3        Z%d4 Z&ej                  j                  dg d5      ej                  j                  d6d"dg      d7               Z'ej                  j                  dg d5      d8        Z(d9 Z)d: Z*d; Z+d< Z,d= Z-d> Z.d? Z/d@ Z0dA Z1ej                  j                  dg dB      dC        Z2ej                  j                  dDg dE      dF        Z3dG Z4ej                  j                  ddHdIg      dJ        Z5ej                  j                  dKg dL      dM        Z6ej                  j                  dNg dO      dP        Z7y")QTestDateRangesc                 D    t        dddd      }|j                  dk(  sJ y )Nz
2000-01-01r   YETEST)startrQ   rR   name)r   rc   )r8   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 an integer, got foomatch1/1/2000foorO   rb   rQ   rR   rB   raises	TypeErrorr   r8   msgs     r+   test_date_range_invalid_periodsz.TestDateRanges.test_date_range_invalid_periods   s:    3]]9C0 	BZSA	B 	B 	Bs   6?c                     d}t        j                  t        |      5  t        dd       d d d        y # 1 sw Y   y xY w)Nzperiods must be an integerrg   ri   g      %@rQ   rl   ro   s     r+   !test_date_range_fractional_periodz0TestDateRanges.test_date_range_fractional_period   s4    *]]9C0 	1z40	1 	1 	1s   5>rR   )2M1m2SM2BQ1bq2BYc                     d| }t        j                  t        |      5  t        dd|       d d d        y # 1 sw Y   y xY w)NInvalid frequency: rg   ri   rN   rP   rB   rm   
ValueErrorr   r8   rR   rp   s      r+   +test_date_range_frequency_M_SM_BQ_BY_raisesz:TestDateRanges.test_date_range_frequency_M_SM_BQ_BY_raises   s=    #D6*]]:S1 	9z148	9 	9 	9	   9A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 insteadrg   )rO         )endrR   rQ   )r   rB   rm   rn   r   )r8   edates     r+   !test_date_range_tuple_freq_raisesz0TestDateRanges.test_date_range_tuple_freq_raises   s@    q!$]]9,FG 	=5x<	= 	= 	=s   AA
)nsusmsminshrO   c                    t        d|       }t        d      }|dk7  rdnd}t        ||z   |d|z  z   |      }t        t	        dd	      D cg c]
  }|||z  z    c}||
      }t        j                  ||       t        |d|z  z   ||z   |      }t        g ||
      }t        j                  ||       t        ||z   ||z   |      }t        ||z   g||
      }t        j                  ||       y c c}w )N1z
1970-01-01r   M8[us]M8[ns]rN   rb   r   rR   r   r   dtyperR   )r   r   r   r   rangetmassert_index_equal)r8   rR   r[   r;   	exp_dtyperd   nexps           r+   test_date_range_edgesz$TestDateRanges.test_date_range_edges   s    4&z"|$ $H(	r'QV

 "'1+.QR!b&[.

 	c3' q2v+R

 Bid;
c3' r'R

 R"WIYTB
c3'- /s   C4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 withrg      r   rQ   rR   )r   rB   rm   r   r   r   r   )r8   rR   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 NaTrg   
2016-01-01rO   r   )rB   rm   r~   r   pdNaTro   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 rO   rk   r   r   rg   z
1969-05-04i 30000DrP   )r   assert_produces_warningr   r   lenrB   rm   r   )r8   dtirp   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-11rO   r   r   rk   r   r   )r   r   equals)r8   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 d        t        j                  t        |      5  t        dddd	       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)
Nr   rg   
1970-02-01i ' r   r   rb   rQ   rR   unit
1969-11-14r   rQ   rR   r   rB   rm   r   r   ro   s     r+   .test_date_range_int64_overflow_non_recoverablez=TestDateRanges.test_date_range_int64_overflow_non_recoverable   s}     +]].c: 	U\;StT	U ]].c: 	S<3TR	S 	S		U 	U	S 	S   A*A6*A36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   r   r   )r8   s_tse_tsrb   r   expectedr   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 d        t        j                  t        |      5  t        d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 rangerg   r   i rO   r   rQ   rR   r   z
1763-10-12r   r   ro   s     r+   test_date_range_out_of_boundsz,TestDateRanges.test_date_range_out_of_bounds  sy    %]].c: 	J|V#DI	J]].c: 	N<cM	N 	N	J 	J	N 	Nr   c                 @    t        ddd      }t        |      dk(  sJ y )Nz1/1/2000 00:00z1/1/2000 00:185minrR   rN   )r   r   r8   r9   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)rQ   	normalizerR   r   r   r   z1/1/2000 08:15B      )	r   todayr   r   r   r   r   r   r   )	r8   snapr   r9   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   rM   (   r   	   VOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrg   
   r   rP   )r   rB   rm   r~   r   r8   rb   r   rp   s       r+   #test_date_range_ambiguous_argumentsz2TestDateRanges.test_date_range_ambiguous_arguments-  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-27rM   rQ   r   )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)r5   rQ   r   z2018-04-01 01:00:00+1100r4   z2018-04-01 02:00:00+1000z2018-04-01 04:00:00+1000)r   r   r   r   r   as_unitr8   r   resultr   s       r+   #test_date_range_convenience_periodsz2TestDateRanges.test_date_range_convenience_periods9  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-01rM   r3   rQ   r5   zUnable to coerce to Seriesrg   )TTTr   rc   )TFF)FTF)FFT)r   r   to_framenparrayto_listTrB   rm   r~   r   r   assert_frame_equalassert_series_equalassert_numpy_array_equal)r8   r9   dfarrarr2r   resultss          r+    test_date_range_index_comparisonz/TestDateRanges.test_date_range_index_comparisonU  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20180103r3   i  r   rM   r3   r   r   r4   Nc                 l    t        ||d|      }t        dddd      }t        j                  ||       y )NrM   r   r   rO   r3   rQ   rR   r5   r   r   r   )r8   rb   r   	result_tzr   r   s         r+   test_date_range_linspacing_tzz,TestDateRanges.test_date_range_linspacing_tzq  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   rM   )days)r   r   r   r   )r8   rb   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   rg   ri   )rb   )r   r   rs   r   )rb   rR   )r   rR   rP   r}   ro   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-JANrP   )r   r   r   )r8   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 daterg   r         r   )r   r	   rB   rm   r~   r   r   )r8   r   rp   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:00r4   r   r   z	2010-11-7rM   )rb   rQ   rR   r5   r   )r   tz_localizer   r   r   r   r   )r8   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   rR   r   z2013-01-01 01:00:00+09:00z2013-01-01 02:00:00+09:00r   )r   r   r   r   r   r   r   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 daterg   ri   z1/1/2001r   r   )rB   rm   r~   r   r
   ro   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 )NrM   )months2011-1-1z	2012-1-31r  r   r   r   r   r   r   )r	   r   r   r   r   r   r   )r8   r   r   r   rb   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                 d   t        j                  d      }|j                  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 )NrA   r3   r   r   rM   rb   rQ   r   r   r   rQ   rb   r   )rB   rC   rD   localizer   r   r5   zone)r8   rA   r5   rb   r   drs         r+   test_range_tz_pytzz!TestDateRanges.test_range_tz_pytz  s    ""6*]]<(HT1a01kk(4A./eQ/uuzzRWW$$$!u~~!u||C+uuzzRWW$$$!u~~!u||e-uuzzRWW$$$!u~~!u||r-   z
start, endrL      r  i  r  c                 l   t        j                  d      }|j                  d      }t        ||      }t        ||      }t	        ||d      }|d   |k(  sJ |d   |k(  sJ t        j                  |j                  dk(        sJ t	        ||d|      }|d   |k(  sJ |d   |k(  sJ t        j                  |j                  dk(        sJ t	        |j                  d 	      |j                  d 	      d|      }|d   |k(  sJ |d   |k(  sJ t        j                  |j                  dk(        sJ y )
NrA   r3   r4   rO   r   r   r   rR   r5   tzinfo)	rB   rC   rD   r   r   r   allhourreplace)r8   rb   r   rA   r5   r'  s         r+   test_range_tz_dst_straddle_pytzz.TestDateRanges.test_range_tz_dst_straddle_pytz  s4    ""6*]]<(%B'#s-!u~~"v}}vvbggl###s4!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#   )xr3  s    r+   <lambda>z7TestDateRanges.test_range_tz_dateutil.<locals>.<lambda>*  s    |K!O4 r-   r   r   r3   r,  rM   r"  r   r#  r$  )rH   r3  r   r   r5   )r8   r5   rb   r   r'  r3  s        @r+   test_range_tz_dateutilz%TestDateRanges.test_range_tz_dateutil$  s     	?4q!B|,<=tQ"\*:;eQ/uu<((((!u~~!u||C+uu<((((!u~~!u||e-uu<((((!u~~!u||r-   )1Dr  2ME7W3hr`   r5   c                     t        d|      }t        d|      }t        ||||      }t        ||d|      }t        ||||      }t        j                  ||       y )N2011/1/1r4   2014/1/1)	inclusiverR   r"   r   r   r,   r   r   )	r8   rR   r5   inclusive_endpoints_fixturebeginr   result_ranger&   r*   s	            r+   test_range_closedz TestDateRanges.test_range_closed>  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>  r3   r4   )r?  rR   r5   r"   r@  )
r8   rR   rA  rB  r   begintzendtzrC  r&   r*   s
             r+   1test_range_with_tz_closed_with_tz_aware_start_endz@TestDateRanges.test_range_with_tz_closed_with_tz_aware_start_endP  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rR   r?  z
2015-09-01z
2015-09-11r    r   r   r   r"   r   )
r8   rA  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_boundaryl  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   )r8   tz_naive_fixturer5   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[us]r   rR   r5   z2005-01-13 10:00:00z2005-01-13 15:45:00r   r   r   r   )r8   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)  hoursrP   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:00r3   r4   r   r   )r   r   r   )r8   rb   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)	Nru  r3   r4   z0Inferred time zone not equal to passed time zonerg   r   zEurope/Berlinr   )r   rB   rm   AssertionErrorr   )r8   rb   rp   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)rb   r   rR   r5   1MS)r   rb   rR   r5   r   r   )r8   tz_aware_fixturer5   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-02rO   )rb   r   rR   r?  r"   r!   r   r   )r   r    r"   r   )r8   rA  rb   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 )
Nr   9   rM   )rr  r  nanosecondsz1970-01-01 00:00:00a)r   rQ   rR   rc   )
z1968-08-02T05:59:59.999999973z1968-09-28T15:59:59.999999976z1968-11-25T01:59:59.999999979z1969-01-21T11:59:59.999999982z1969-03-19T21:59:59.999999985z1969-05-16T07:59:59.999999988z1969-07-12T17:59:59.999999991z1969-09-08T03:59:59.999999994z1969-11-04T13:59:59.999999997z1970-01-01T00:00:00.000000000r   )r	   r   r   r   r   )r8   rR   r   r   s       r+   .test_freq_dateoffset_with_relateivedelta_nanosz=TestDateRanges.test_freq_dateoffset_with_relateivedelta_nanos  sH    ; 5rSVW  
 	fh/r-   )2T2L1l1U2N2nc                     d| }t        j                  t        |      5  t        dd|       d d d        y # 1 sw Y   y xY wNr|   rg   ri   r   rP   r}   r   s      r+   !test_frequency_H_T_S_L_U_N_raisesz0TestDateRanges.test_frequency_H_T_S_L_U_N_raises  s=    #D6*]]:S1 	9z148	9 	9 	9r   	freq_depr)mbmCBMSMBQzq-febzy-mayzY-MAYc                     d| }t        j                  t        |      5  t        dd|       d d d        y # 1 sw Y   y xY wr  r}   )r8   r  rp   s      r+   test_frequency_raisesz$TestDateRanges.test_frequency_raises  s?     $I;/]]:S1 	>z19=	> 	> 	>r   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   )rb   rR   rQ   r   r   )r   r   r   r   r   rR   )r8   sdaterd   s      r+   test_date_range_bdayz#TestDateRanges.test_date_range_bday  s`    r2&u4<3x2~~1vW\\^!33333xx3r-   200Az2A-MAYc                     t        j                  d|d      d   }d| }t        j                  t        |      5  t        dd|       d d d        y # 1 sw Y   y xY w)	Nz[0-9]*r   )maxsplitr|   rg   ri   r   rP   )resplitrB   rm   r~   r   )r8   rR   freq_msgrp   s       r+   test_frequency_A_raisesz&TestDateRanges.test_frequency_A_raises  sT    88HdQ7:#H:.]]:S1 	9z148	9 	9 	9s   AAzfreq,freq_depr))2W2w)z2W-WEDz2w-wed)2B2b)r   2d)2C2cc                     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   z8' is deprecated and will be removed in a future version.ri   rN   rP   rg   )r   r   r   r   r   )r8   rR   r  depr_msgr   r   s         r+   (test_date_range_depr_lowercase_frequencyz7TestDateRanges.test_date_range_depr_lowercase_frequency  ss     	!"VW 	 j!$?''hG 	G
AIFF	G
fh/	G 	Gs   A!!A*zfreq_removed,freq))100AY)z2A-DECzY-DEC)100ASr]  )z2AS-MAYzYS-MAYc                     d| }t        j                  t        |      5  t        dd|       d d d        y # 1 sw Y   y xY w)NzDid you mean rg   ri   r   rP   r}   )r8   rR   freq_removedrp   s       r+   9test_error_message_for_removed_year_yearbegin_frequencieszHTestDateRanges.test_error_message_for_removed_year_yearbegin_frequencies2  sC     dV$]]:S1 	Az1<@	A 	A 	Ar   )8rX   rY   rZ   re   rq   rt   rB   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(  r1  r7  rD  rH  rS  re  ro  rs  rv  ry  r}  r  r  r  r  r  r  r  r  r#   r-   r+   r^   r^      s   "B
1
 [[V%MN9 O9= [[V%MN"( O"(H@AG
 	S [[[[35QR- -N*$
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, [[dAq!8D!R#89dB"HT2q$9:	
$$24 [[V%JK[[TD,#78< 9 L<  [[V%JK< L<6,B\/&4&1
 =00 0* [[V%IJ9 K9
 [[N>> [[Vfh%789 99 [[	
		0		0 [[	
AA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-10rO   Hongkongr+  )r   r/  )r8   r'  s     r+   test_hongkong_tz_convertz(TestDateRangeTZ.test_hongkong_tz_convertF  s    lL 	r-   tzstrr3   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-FRIr3   r   r   z
2012-11-02r   r   int32r   )r   r/  r.  r   Indexr   r   )r8   r  r'  r   r   s        r+   #test_date_range_span_dst_transitionz3TestDateRangeTZ.test_date_range_span_dst_transitionM  sl    
 *Cg,W1!!###bU;88QC"HG4
fh/r-   c                     t        j                  |      }t        dd|      }t        dd|      }t        j                  ||       y )Nri   r   r   )r   r3  r   r   r   )r8   r  r5   r   r   s        r+   %test_date_range_timezone_str_argumentz5TestDateRangeTZ.test_date_range_timezone_str_argument[  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  rM   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   r5   r   r   r   valuesr.  )r8   offrb   r   r9   r  ra  s          r+   test_date_range_with_fixed_tzz-TestDateRangeTZ.test_date_range_with_fixed_tzc  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  rM   r  r   r   r,  r)  r$  )r   r   r   r5   r   r  )r8   r  rb   r   r9   rd   s         r+   'test_date_range_with_fixedoffset_nonamez7TestDateRangeTZ.test_date_range_with_fixedoffset_nonamep  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:00r4   r   z3/11/2012 04:00r   r   r   r   )r   r/  r   )r8   r  r:   r9   s       r+   test_date_range_with_tzz'TestDateRangeTZ.test_date_range_with_tzz  s@    +6zzQ*BSUKAr-   r5   Europe/Londonzdateutil/Europe/Londonc                     t        j                  t        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 timerg   z2013-10-26 23:00z2013-10-27 01:00r  r   r5   rR   inferrR   r5   r  r   r4   r   z2013-10-27 01:00:00+0000rB   rm   r~   r   r   )r8   r5   timess      r+   "test_date_range_ambiguous_endpointz2TestDateRangeTZ.test_date_range_ambiguous_endpoint  s    
 ]]:-DE 	"$6?QT	
  2w
 Qx9%7B????RyI&@RHHHH	 	s   A//A8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   rq  r  c                     t        j                  t        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:00rg   z2019-03-10 00:00z2019-03-10 02:00r  r   r  )rR   r5   nonexistentr   r4   r  )r8   r5   optionr   r  s        r+   $test_date_range_nonexistent_endpointz4TestDateRangeTZ.test_date_range_nonexistent_endpoint  sn     ]]:-BC 	"$6<c	
  2QW
 RyIh26666	 	s   AA#N)rX   rY   rZ   __doc__r  rB   r  r  r  r  r  r  r  r  r   r  r#   r-   r+   r  r  C  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   )rQ   r   r   )listgenerate_rangeSTARTEND)r8   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   rM   r  r   r   rb   r   rQ   r   r      r  r  r   r   r8   r9   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   rM   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:03rh  zQE-DECri  W-SUNrj  )r8   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  )r3   r  z	start,endr4   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 timezonesrg   r   )rB   rm   rn   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)rX   rY   rZ   rB   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                   6    e Zd Zd Zd Zd Zd Z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   rP   r   z!periods must be an integer, got Brg   r  2012-1-1r   z>freq must be specified for bdate_range; use date_range insteadr   )r   r  r  r   rB   rm   rn   r   ro   s     r+   test_constructorz&TestBusinessDateRange.test_constructor  s    E3TV,E2DF3r71]]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   r8   r   r'  	firstDates       r+   	test_misczTestBusinessDateRange.test_misc(  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/1rg   r   r"  r#  )rB   rm   r~   r   r   )r8   badly_formed_daterp   s      r+   test_date_parse_failurez-TestBusinessDateRange.test_date_parse_failure1  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   _datarR   r   union
isinstancer   r8   r  r  r   s       r+   test_daterange_bug_456z,TestBusinessDateRange.test_daterange_bug_456A  sP    ;4;4zz$&(((D!&-000r-   c                 z    d}d}t        ||d|      }d}d}t        ||d      }t        j                  ||       y )	Nz
2018-07-21z
2018-07-29r   rJ  z
2018-07-23z
2018-07-27rO   r   r   )r8   rA  rb   r   r   
bday_startbday_endr   s           r+   test_bdays_and_open_boundariesz4TestBusinessDateRange.test_bdays_and_open_boundariesJ  sE    E3S<WX!
j(=
fh/r-   c                     t         j                  j                  d      j                         }t	        |d dd      }t        |gd      }t        j                  ||       y )NrO   r   r   r   r   )r   maxfloorto_pydatetimer   r   r   r   )r8   rb   r9   r   s       r+   test_bday_near_overflowz-TestBusinessDateRange.test_bday_near_overflowV  sM    ##C(668D!#> %s3
c8,r-   c                     d}t         j                  j                  d      j                         }t	        j
                  t        |      5  t        |ddd       d d d        y # 1 sw Y   y xY w)Nz"Out of bounds nanosecond timestamprO   rg   r   r   r   r   )r   r!  r"  r#  rB   rm   r   r   )r8   rp   rb   s      r+   test_bday_overflow_errorz.TestBusinessDateRange.test_bday_overflow_error]  sV    2##C(668]].c: 	>uac=	> 	> 	>s   A$$A-N)
rX   rY   rZ   r
  r  r  r  r  r$  r&  r#   r-   r+   r  r    s%    ; > 1	0->r-   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                         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d Zd Z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   rP   r   z!periods must be an integer, got Crg   r  r	  r  )r   r  r  r   rB   rm   rn   r   ro   s     r+   r
  z$TestCustomDateRange.test_constructorf  s    E3TV,E2DF3r71]]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_miscr  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  rR   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-01rM   r  r   )r-  
2013-05-02
2013-05-03r   r   r   )r   r   r   r   rR   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-  rM   r  Sun Mon Tue Wed Thu)rQ   rR   weekmaskr   )r-  r.  
2013-05-05r   r   r   [a custom frequency string is required when holidays or weekmask are passed, got frequency Brg   )rQ   r3  r   r   rR   r   r   rB   rm   r~   r8   r   r   r   rp   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-  rM   r  )rQ   rR   holidaysr   )r.  r/  
2013-05-06r   r   r   r5  rg   )rQ   r:  r6  r7  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-  rM   r  r2  )rQ   rR   r3  r:  r   )r.  r4  r;  r   r   r   )r   r   rR   r   r   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)Nr5  rg   r-  rM   r2  )rQ   r3  r:  )rB   rm   r~   r   ro   s     r+   2test_cdaterange_holidays_weekmask_requires_freqstrzFTestCustomDateRange.test_cdaterange_holidays_weekmask_requires_freqstr  sG    3 	 ]]:S1 	.&		 	 	s	   8ArR   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)NMon Wed Fri
2009-03-14rR   r3  r:  FOOz!invalid custom frequency string: rg   r   )r   r  r  rB   rm   r~   )r8   rR   bad_freqrp   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   )rb   r   rQ   r?  zM8[us, UTC]r  rj  )r8   rH  rb   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  rk   r   )r   r   r   r   r   )r8   rb   periodr   r   s        r+   .test_range_with_timezone_and_custombusinessdayzBTestCustomDateRange.test_range_with_timezone_and_custombusinessday  s7     %cB *2248
fh/r-   c                     t        j                  d      }t        dddd      }t        dddd      }t        ||||      }t	        g d	d
| d      }t        j                  ||       y )NzSun Mon Tue)r3  i  r   r)        r  )z2024-02-06 23:00:00z2024-02-11 23:00:00z2024-02-12 23:00:00z2024-02-13 23:00:00r   r   r  )r   CustomBusinessDayr   r   r   r   r   )r8   r   r   rb   r   r   r   s          r+   .test_data_range_custombusinessday_partial_timezBTestCustomDateRange.test_data_range_custombusinessday_partial_time  sp    **MBq!R(tQB'E3V$?  vQ-
 	fh/r-   c                 r    t        dddddg      }t        g ddd	      }t        j                  ||       y )
Nz
2009-03-13z
2009-03-15cbhrB  rC  rD  )z2009-03-13 09:00:00z2009-03-13 10:00:00z2009-03-13 11:00:00z2009-03-13 12:00:00z2009-03-13 13:00:00z2009-03-13 14:00:00z2009-03-13 15:00:00z2009-03-13 16:00:00rh  r   )r   r   r   r   )r8   r   r   s      r+   test_cdaterange_cbhz'TestCustomDateRange.test_cdaterange_cbh  sH    ""^
 !	 #
 	fh/r-   c                     d}t        j                  t        |      5  t        t        t
        dddg       d d d        y # 1 sw Y   y xY w)Nz7invalid custom frequency string: CBH, did you mean cbh?rg   CBHrB  rC  rD  )rB   rm   r~   r   r  r  ro   s     r+   $test_cdaterange_deprecated_error_CBHz8TestCustomDateRange.test_cdaterange_deprecated_error_CBH-  s?    G]]:S1 	s,	 	 	s   AA
N)rX   rY   rZ   r
  r  r  r0  r8  r<  r>  r@  rB   r  r  r   upper
startswithrG  rJ  rM  rR  rU  rX  ).0rR   s   00r+   r(  r(  e  s   
51,Q(J(," [[.Q$DJJL4K4KC4PQ	3	3 [[	
00 [[(!.I-JK(!.I-JK+,.IJ	
000$02s Rs   $CC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'rg   r   z
2016-03-04rM   r   r   r}   ro   s     r+   test_date_range_reso_validationz4TestDateRangeNonNano.test_date_range_reso_validation7  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 insteadrg   r   z
2016-01-02r   r   r  r}   ro   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r`  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 ) r   z2016-01-01 00:00:00.001r   l     ^cQ)! l   AB|cQ)! r   )r   r   arangeint64r   viewr   r   )r8   r   r9   r   s       r+   !test_date_range_freq_matches_resoz6TestDateRangeNonNano.test_date_range_freq_matches_resoC  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 unitsrg   rM   r   r   r   r   r  r   )r   rB   rm   r~   r   r   r   r   _valuere  r   rf  r   r   )r8   rb   r   r   r9   r   s         r+   )test_date_range_freq_lower_than_endpointsz>TestDateRangeNonNano.test_date_range_freq_lower_than_endpointsV  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-13rO   r   r  zM8[s]i8r   iQ )r   
datetime64r   rR   r   rd  astyperf  r   r   to_numpy)r8   rb   r   r   r   s        r+   test_date_range_non_nanoz-TestDateRangeNonNano.test_date_range_non_nanog  s    l+mmL)#C8xx3yyG###iiLL!&&t,1WW%**40
 $w-	 	 	##CLLNC8r-   N)rX   rY   rZ   r_  rb  rg  rj  rp  r#   r-   r+   r]  r]  6  s    H
I-&-"9r-   r]  c            	       F   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d Zd Zd Z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rb   r   rR   r   c              3   @   K   | ]  }j                  |        y wNis_on_offsetr[  r5  rR   s     r+   	<genexpr>zWTestDateRangeNonTickFreq.test_date_range_custom_business_month_begin.<locals>.<genexpr>       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   r   r   r8   r   hcalr   r   rR   s        @r+   +test_date_range_custom_business_month_beginzDTestDateRangeNonTickFreq.test_date_range_custom_business_month_begin{  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 )
Nrt  rv  rw  rx  c              3   @   K   | ]  }j                  |        y wrz  r{  r}  s     r+   r~  zUTestDateRangeNonTickFreq.test_date_range_custom_business_month_end.<locals>.<genexpr>  r  r  )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   r   r   r  s        @r+   )test_date_range_custom_business_month_endzBTestDateRangeNonTickFreq.test_date_range_custom_business_month_end  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)rb   r:  z2020-11-25 15:00rN   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   r   r   )r8   r   rR   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   r  r  r  2014-07-07 09:00)r  r  r  r  r  r  r  r  r  2014-07-07 10:002014-07-07 11:002014-07-07 12:002014-07-07 13:002014-07-07 14:002014-07-07 15:002014-07-07 16:002014-07-08 09:002014-07-08 10:00z2014-07-08 11:00z2014-07-08 12:00z2014-07-08 13:00z2014-07-08 14:00z2014-07-08 15:002014-07-08 16:00r  )r   r   r   r   )r8   r   rd   r9   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  rx  r  r   r   )r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   z2014-07-04 15:45z2014-07-08 10:45-   )minutes)r   r   r   r   r   r   rR   )
r8   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   )rb   rR   rQ   r   r   r   r   rj  )r8   r   r  rd  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-01rZ  r[  r   r  r   r   r   rj  r8   r   r9   r   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-31rX  
2015-12-31z
2016-12-31r   r   r   rj  r  s       r+   test_date_range_year_endz1TestDateRangeNonTickFreq.test_date_range_year_end0  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-2YErM   rR   rQ   r   )r  z
2009-12-31z
2007-12-31r   r   r   r   r   r   r   rR   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  rX  r  z
2016-12-30r   r   r   rj  r  s       r+   &test_date_range_business_year_end_yearz?TestDateRangeNonTickFreq.test_date_range_business_year_end_yearC  s?    Ze$GDvQ-

 	c3'r-   c                 v    t        ddd|      }t        g dd| dd      }t        j                  ||       y )	Nri   r   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   rj  r   s       r+   test_date_range_bmsz,TestDateRangeNonTickFreq.test_date_range_bmsM  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   rM   rN   r   r)     r   r   r   r  r   r   SMSrx  r   r   r   r   r   r   r   r   r8   r   datesr   r   s        r+    test_date_range_semi_month_beginz9TestDateRangeNonTickFreq.test_date_range_semi_month_beginc  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      rM   rN      r   r)  r  r   r   r   r  r   r   SMErx  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-1MONr   z
2011-01-03r   r   r   r   z
2011-02-07rj  )r8   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-1rN   zWOM-1SATr   )z
2013-01-05z
2013-02-02z
2013-03-02z
2013-04-06r   r   r   rj  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-2MErM   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   rM   nearest)startingMonthweekday	variationr  r   r   z
2013-01-31z
2014-01-30r   r   r   )r   FY5253r   r   r   r   )r8   r   rR   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   rR   )r8   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-   c                 v    t        ddd|      }t        ddgd| dd      }t        j                  ||       y )	Nz2021-12-31 00:00:012023-10-31 00:00:00r`   rx  z2022-12-31 00:00:01r   r   r   rj  r  s       r+   $test_date_range_partial_day_year_endz=TestDateRangeNonTickFreq.test_date_range_partial_day_year_end  sM    '%	
 "$9:vQ-

 	c3'r-   c                 v    t        ddd|      }t        ddgd| dd	      }t        j                  ||       y )
Nr  z2021-10-31 00:00:00z-1YErx  z2022-12-31 00:00:00z2021-12-31 00:00:00r   r   r   rj  r  s       r+   /test_date_range_negative_freq_year_end_inboundszHTestDateRangeNonTickFreq.test_date_range_negative_freq_year_end_inbounds  sM    '%	
 "$9:vQ-

 	c3'r-   c                     t        dd      }t        dd      }t        ||dd      }t        ddddd      }t        j                  ||       y )	Nz
1916-08-01zEurope/Oslor4   z
1916-12-01rY  T)rR   r  r  )r   r   r   r   )r8   rb   r   resr   s        r+   2test_date_range_tzaware_endpoints_accept_ambiguouszKTestDateRangeNonTickFreq.test_date_range_tzaware_endpoints_accept_ambiguous  sQ    ,=97$$?,Tmt
 	c3'r-   c                     d}t        d|      }t        d|      }t        ||dd      }t        ddd      j                  |d	      }t        j                  ||       y )
Nr  z2015-03-28 01:30r4   z2015-03-30 01:30rO   r  )rR   r  r   )r  )r   r   r  r   r   )r8   r5   rb   r   r   r   s         r+   4test_date_range_tzaware_endpoints_accept_nonexistentzMTestDateRangeNonTickFreq.test_date_range_tzaware_endpoints_accept_nonexistent  sh    ,4*r2E3SoN  2

+bo+
6 	 	fh/r-   N) rX   rY   rZ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rB   r  r  r   QuarterBeginBQuarterEndWeekr  r  r  r  r  r#   r-   r+   rr  rr  x  s    -4-40 7(r&/P/(("(0,+B+B20"- [['7''a89'G''b9:lgll1-.	
&&(((0r-   rr  c                   $    e Zd Zd Zd Zd Zd Zy)TestDateRangeUnitInferencec                     t        d      j                  |      }t        d      j                  |      }t        ||d      }|j                  |k(  sJ y )N
2025-11-25
2025-11-26rO   r   r   r   r   r   r8   r   rb   r   r   s        r+   ,test_date_range_unit_inference_matching_unitzGTestDateRangeUnitInference.test_date_range_unit_inference_matching_unit  sL    ,'//5%--d3#.xx4r-   c                    t        d      j                  |      }t        d      j                  d      }t        ||d      }|j                  |k(  sJ t        ||j                  d      d      }|j                  dk(  sJ y )Nr  r  r   rO   r   r   r  r  s        r+   .test_date_range_unit_inference_mismatched_unitzITestDateRangeUnitInference.test_date_range_unit_inference_mismatched_unit$  su    ,'//5%--c2#.xx4D 1<xx4r-   c                    t        d      j                  d      }t        d      j                  d      }t        ||d      }|j                  dk(  sJ t        ||j                  d      d      }|j                  dk(  sJ y )	Nr  r   r  r   	2000000usr   r   r   r  )r8   rb   r   r   s       r+   #test_date_range_unit_inference_tickz>TestDateRangeUnitInference.test_date_range_unit_inference_tick.  su    ,'//5%--c2+6xx4D 1Dxx4r-   c                    t        d      j                  d      }t        d      j                  d      }t        d      }t        |||      }|j                  dk(  sJ t        d	      }t        |||      }|j                  d
k(  sJ |t        d      j                  d      z   }t        d      }t        |||      }|j                  dk(  sJ y )Nz2025-11-25 09:00:00r   z2025-11-25 09:00:02i )microsecondsr   r   r   )millisecondsr   )r  r   )r   r   r	   r   r   r   )r8   rb   r   r  r   end2s         r+   .test_date_range_unit_inference_dateoffset_freqzITestDateRangeUnitInference.test_date_range_unit_inference_dateoffset_freq8  s    /088=-.66s;i0#.xx4a(#.xx4ya088>>Q'3/xx4r-   N)rX   rY   rZ   r  r  r  r  r#   r-   r+   r  r    s        r-   r  )8r  r   r   r   r  numpyr   rB   pandas._libs.tslibsr   pandas._libs.tslibs.offsetsr   r   r	   r
   r   pandas.errorsr   r   pandas.util._test_decoratorsutil_test_decoratorsr[   pandasr   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.core.arrays.datetimesr   r  -pandas.tests.indexes.datetimes.test_timezonesr   r   pandas.tseries.holidayr   r  r  r,   r/   r^   r  r  r  r(  r]  rr  r  r#   r-   r+   <module>r     s    
 
   )  * ) 	 	 	  J
 <dAq!8D!Q#7
s83( 3(lz
A z
Aze7 e7Pi0 i0XK> K>\N Nb?9 ?9Da0 a0H+  + r-   