
    Mh                        S r SSKJrJrJr  SSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKJrJrJrJrJr  SSKJr  SSKJs  Jr  SSKrSSKJrJrJrJrJrJrJ r J!r!  SSK"J#r$  SS	K%J&r'  SS
K(J)r)J*r*  SSK+J,r,  \" SSS5      \" SSS5      sr-r.S r/ " S S5      r0 " S S5      r1 " S S5      r2 " S S5      r3 " S S5      r4 " S S5      r5 " S S5      r6 " S S5      r7g) 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                    XS   :H  nXS   :H  nUS:X  a  U(       a  USS nU$ US:X  a  U(       a  USS nU$ US:X  a  U(       a  U(       a  USS nU$ US:X  a  U(       a  USS nU$ US:X  a  U(       a  USS nU$ US:X  a  USS nU$ USS nU$ )	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          `/var/www/html/env/lib/python3.13/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                   V    \ rS rSrS rS rS r\R                  S 5       r	S r
S rSrg	)
TestTimestampEquivDateRangeO   c                 F    [        SSSS9nUS   n[        SSS9nX2:X  d   eg N2009041520090519
US/Easterntzr   r   r   selfrngstamptss       r+   test_date_range_timestamp_equiv;TestTimestampEquivDateRange.test_date_range_timestamp_equivU   s/    ZLAAzl3{{r-   c                 F    [        SSSS9nUS   n[        SSS9nX2:X  d   eg )Nr3   r4   dateutil/US/Easternr6   r   r8   r9   s       r+   (test_date_range_timestamp_equiv_dateutilDTestTimestampEquivDateRange.test_date_range_timestamp_equiv_dateutil\   s1    Z4IJAz&;<{{r-   c                     [        SS[        R                  " S5      S9nUS   n[        S[        R                  " S5      S9nX2:X  d   eg r2   )r   pytzr   r   r9   s       r+   -test_date_range_timestamp_equiv_explicit_pytzITestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_pytzc   sA    ZDMM,4OPAzdmmL&AB{{r-   c                 j    SSK Jn  [        SSU" S5      S9nUS   n[        SU" S5      S9nXC:X  d   eg )Nr   )dateutil_gettzr3   r4   r5   r6   )pandas._libs.tslibs.timezonesrI   r   r   )r:   gettzr;   r<   r=   s        r+   1test_date_range_timestamp_equiv_explicit_dateutilMTestTimestampEquivDateRange.test_date_range_timestamp_equiv_explicit_dateutilj   s<    IZE,4GHAzeL&9:{{r-   c                 ^    [        SSS5      n[        USSS9S   n[        U5      nX2:X  d   eg )N        r   Dperiodsfreqr   )r   r   r   )r:   datetime_instancetimestamp_instancer=   s       r+   6test_date_range_timestamp_equiv_from_datetime_instanceRTestTimestampEquivDateRange.test_date_range_timestamp_equiv_from_datetime_instancet   s@    $T1a0 ((913OPQR()'''r-   c                 D    [        SSSS9S   n[        S5      nX:X  d   eg )Nz
2014-03-05r   rR   rS   r   r8   )r:   rW   r=   s      r+   2test_date_range_timestamp_equiv_preserve_frequencyNTestTimestampEquivDateRange.test_date_range_timestamp_equiv_preserve_frequency}   s,    'acJ1M|$!'''r-   r#   N)__name__
__module____qualname____firstlineno__r>   rB   rF   tdskip_if_windowsrL   rX   r[   __static_attributes__r#   r-   r+   r/   r/   O   s5      ((r-   r/   c                      \ rS rSrS rS rS r\R                  R                  S/ SQ5      S 5       r
S r\R                  R                  S	/ S
Q5      S 5       rS rS rS rS rS r\R                  R$                  \R                  R                  SSS/5      S 5       5       rS rS rS rS rS rS r\R                  R                  S/ SQ\" SSS5      \" SSS5      S /\" S!5      \" S"5      S /\" S!S S#9\" S"S S#9S /\" S!S S#9\" S"S S#9S$//5      S% 5       rS& rS' rS( rS) r S* r!S+ r"S, r#S- r$S. r%\R                  R                  S/\" \" S0SS15      S S#9\" \" S0SS25      S S#9/\" \" S3S4S5      S S#9\" \" S3S4S15      S S#9//5      S5 5       r&S6 r'\R                  R                  S	/ S7Q5      \R                  R                  S8S$S /5      S9 5       5       r(\R                  R                  S	/ S7Q5      S: 5       r)S; r*S< r+S= r,S> r-S? r.S@ r/SA r0SB r1SC r2\R                  R                  S/ SDQ5      SE 5       r3\R                  R                  S/ SFQ5      SG 5       r4SKSH jr5SI r6SJr7g$)LTestDateRanges   c                 @    [        SSSSS9nUR                  S:X  d   eg )Nz
2000-01-01r   YETEST)startrT   rU   name)r   rk   )r:   idxs     r+   test_date_range_name#TestDateRanges.test_date_range_name   s$    |QTOxx6!!!r-   c                     Sn[         R                  " [        US9   [        SSSS9  S S S 5        g ! , (       d  f       g = f)Nz!periods must be a number, got foomatch1/1/2000foorR   rj   rT   rU   )pytestraises	TypeErrorr   r:   msgs     r+   test_date_range_invalid_periods.TestDateRanges.test_date_range_invalid_periods   s-    1]]9C0ZSA 100s   1
?c                     Sn[         R                  " [        US9   [        SSS9nS S S 5        [        SSS9n[         R                  " WU5        g ! , (       d  f       N0= f)Nz:Non-integer 'periods' in pd.date_range, pd.timedelta_rangerp   rr   g      %@rT   
   )tmassert_produces_warningFutureWarningr   assert_index_equal)r:   ry   r;   exps       r+   !test_date_range_fractional_period0TestDateRanges.test_date_range_fractional_period   sO    J''SAZ6C BR0
c3' BAs   A
Azfreq,freq_depr))2ME2M)2SME2SM)2BQE2BQ)2BYE2BYc                     SUSS   S3nSUSS   S3  [        SSUS9n[        R                  " [        US	9   [        SSUS9nS S S 5        [        R                  " WU5        g ! , (       d  f       N&= f)
N'r   $' is deprecated and will be removed !in a future version, please use '
' instead.rr   rQ   rS   rp   )r   r   r   r   r   )r:   rU   	freq_deprdepr_msgexpectedresults         r+   /test_date_range_frequency_M_SM_BQ_BY_deprecated>TestDateRanges.test_date_range_frequency_M_SM_BQ_BY_deprecated   sw     y}o%IJ
+DH:Z@j!$?''XF
AIFF G
fh/ GFs   A##
A1c                     [        SSS5      n[        R                  " [        SS9   [	        USSS9  S S S 5        g ! , (       d  f       g = f)N  r   zpass as a string insteadrp   )rR         )endrU   rT   )r   ru   rv   rw   r   )r:   edates     r+   !test_date_range_tuple_freq_raises0TestDateRanges.test_date_range_tuple_freq_raises   s8    q!$]]9,FG5x< HGGs	   <
A
rU   )nsusmsminshrR   c                    [        SU 35      n[        S5      n[        X2-   USU-  -   US9n[        [	        SS5       Vs/ s H	  oSXR-  -   PM     snSUS9n[
        R                  " XF5        [        USU-  -   X2-   US9n[        / SUS9n[
        R                  " XF5        [        X2-   X2-   US9n[        X2-   /SUS9n[
        R                  " XF5        g s  snf )	N1z
1970-01-01rQ   rj   r   rU   r   r   M8[ns]dtyperU   )r   r   r   r   ranger   r   )r:   rU   ra   r=   rl   nr   s          r+   test_date_range_edges$TestDateRanges.test_date_range_edges   s     4&z"|$'QV

 "'1+.+Q!&[+.

 	c' q2v+

 BhT:
c' '

 RWIXDA
c'- /s    Cc                     [        S5      n[        R                  " [        SS9   [	        [
        R                  SUS9  S S S 5        g ! , (       d  f       g = f)Nr   Cannot generate range withrp      r   rT   rU   )r   ru   rv   r   r   r   r   )r:   rU   s     r+   )test_date_range_near_implementation_bound8TestDateRanges.test_date_range_near_implementation_bound   s8    |]].6RS9==!$? TSSs   A
Ac                 8   Sn[         R                  " [        US9   [        S[        R
                  SS9  S S S 5        [         R                  " [        US9   [        [        R
                  SSS9  S S S 5        g ! , (       d  f       NJ= f! , (       d  f       g = f)Nz$Neither `start` nor `end` can be NaTrp   
2016-01-01rR   r   )ru   rv   
ValueErrorr   pdNaTrx   s     r+   test_date_range_nat"TestDateRanges.test_date_range_nat   s`    4]]:S1\rvvC@ 2]]:S1RVVC@ 21 2111s   A:B:
B
Bc                 D   [         R                  " S 5         [        SSSS9nS S S 5        WS   [        S5      :X  d   e[	        U5      S:X  d   eSn[
        R                  " [        US9   [        SS	S
S9  S S S 5        g ! , (       d  f       Nc= f! , (       d  f       g = f)N
1677-09-22iA rR   rt   r   r   rp   z
1969-05-04i 30000DrS   )r   r   r   r   lenru   rv   r   )r:   dtiry   s      r+   'test_date_range_multiplication_overflow6TestDateRanges.test_date_range_multiplication_overflow   s     ''-<cJC . 1v<00003x6!!!*]].c:|YXF ;: .- ;:s   B +B 
B
Bc                     [        SSSS9n[        US   [        U5      SS9nUR                  U5      (       d   e[        US   [        U5      SS9nUR                  U5      (       d   eg )	Nr   z
2262-04-11rR   r   r   rt   r   r   )r   r   equals)r:   r   dti2dti3s       r+   *test_date_range_unsigned_overflow_handling9TestDateRanges.test_date_range_unsigned_overflow_handling   sh     |CHACsC{{3c"gs3xcB{{3r-   c                     Sn[         R                  " [        US9   [        SSSS9  S S S 5        [         R                  " [        US9   [        SSSS9  S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)	Nr   rp   
1970-02-01i ' r   rt   
1969-11-14r   ru   rv   r   r   rx   s     r+   .test_date_range_int64_overflow_non_recoverable=TestDateRanges.test_date_range_int64_overflow_non_recoverable   s`     +]].c:\;SI ; ]].c:<3G ;:	 ;: ;:   A	A/
A,/
A=z
s_ts, e_ts)z
2262-02-23r   )r   z
1677-10-22c                     [        U5      n[        U5      n[        X4SS9nUS   U:X  d   eUS   U:X  d   e[        U[        U5      SS9n[        R                  " Xe5        g )Nz-1hr   r   r   r   )r   r   r   r   r   )r:   s_tse_tsrj   r   r   r   s          r+   >test_date_range_int64_overflow_stride_endpoint_different_signsMTestDateRanges.test_date_range_int64_overflow_stride_endpoint_different_signs  sf     $oE?{e###|s"""S#h-eD
c,r-   c                     Sn[         R                  " [        US9   [        SSSS9  S S S 5        [         R                  " [        US9   [        SSSS9  S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)	NzCannot generate rangerp   r   i rR   rS   z
1763-10-12r   r   rx   s     r+   test_date_range_out_of_bounds,TestDateRanges.test_date_range_out_of_bounds  sZ    %]].c:|V#> ;]].c:<cB ;: ;:::r   c                 <    [        SSSS9n[        U5      S:X  d   eg )Nz1/1/2000 00:00z1/1/2000 00:185minrU   rQ   )r   r   r:   r;   s     r+   test_date_range_gen_error(TestDateRanges.test_date_range_gen_error"  s"    )+;&I3x1}}r-   c                 T   [         R                  " 5       nSn[        XSSS9n[        S5      n[	        [        U5       Vs/ s H	  oQXT-  -   PM     snSUS9n[        R                  " X65        [        SUSS	S9n[        S
S5      nU H  nUR                  5       U:X  a  M   e   g s  snf )N2   F2D)rT   	normalizerU   r   r   r   z1/1/2000 08:15B      )	r   todayr   r   r   r   r   r   r   )	r:   snapr   r;   offsetir   the_timevals	            r+   test_date_range_normalize(TestDateRanges.test_date_range_normalize&  s    ~~EE1 (-a11AJ1
 	c,)1CP2;C88:)))  2s    B%c                     [        SSSSSS5      n[        SSSSSS5      nSn[        R                  " [        US	9   [	        XS
SS9  S S S 5        g ! , (       d  f       g = f)N  r   r   rP   (   r   	   VOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrp   r~   r   rS   )r   ru   rv   r   r   r:   rj   r   ry   s       r+   #test_date_range_ambiguous_arguments2TestDateRanges.test_date_range_ambiguous_arguments8  s\    q!Q2.tQ1a,4 	 ]]:S1u2C8 211s   A
Ac           	         [        SSSUS9n[        / SQSU S3S S9n[        R                  " X#5        [        S	S
SSUS9n[        [	        SSS9[	        SSS9[	        SSS9/5      R                  U5      n[        R                  " X#5        g )Nz
2018-04-24z
2018-04-27rP   rT   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)r7   rT   r   z2018-04-01 01:00:00+1100r6   z2018-04-01 02:00:00+1000z2018-04-01 04:00:00+1000)r   r   r   r   r   as_unitr:   r   r   r   s       r+   #test_date_range_convenience_periods2TestDateRanges.test_date_range_convenience_periodsD  s    L,M QvQ-
 	f/ !!!
 !49KL49KL49KL
 '$- 	 	f/r-   c                    [        SSSS9n[        U5      R                  5       n[        R                  " UR                  5       /5      R                  n[        R                  " U/5      R                  n[        R                  " [        SS9   X:H    S S S 5        [        R                  " [        SS9   X!:H    S S S 5        [        / SQ5      nX$:H  n[        R                  " Xe5        [        / SQSS	9nUS   US S 2S4   :H  n[        R                  " Xe5        [        R                  " / S
Q/ SQ/ SQ/5      nX:H  n[        R                  " Xe5        g ! , (       d  f       N= f! , (       d  f       N= f)N
2011-01-01rP   r5   rT   r7   zUnable to coerce to Seriesrp   )TTTr   rk   )TFF)FTF)FFT)r   r   to_framenparrayto_listTru   rv   r   r   r   assert_frame_equalassert_series_equalassert_numpy_array_equal)r:   r;   dfarrarr2r   resultss          r+    test_date_range_index_comparison/TestDateRanges.test_date_range_index_comparison`  s!   q\BC[!!#hh'))xx  ]]:-IJI K ]]:-IJI K /0*
g0,15Q%41:%
w188!#79MN
 *
##G6) KJ KJs   E4E$
E!$
E2zstart,end,result_tz)2018010120180103r5   i  r   rP   r5   r  r  r6   Nc                 ^    [        XSUS9n[        SSSSS9n[        R                  " XE5        g )NrP   r  r  rR   r5   rT   rU   r7   r   r   r   )r:   rj   r   	result_tzr   r   s         r+   test_date_range_linspacing_tz,TestDateRanges.test_date_range_linspacing_tz|  s0    ( Ei@j!#,O
f/r-   c                 n    SnSn[        XSS9n[        X[        SS9S9n[        R                  " X45        g )N
2020-01-01z
2020-01-113Dr   rP   )days)r   r   r   r   )r:   rj   r   rng1rng2s        r+   test_date_range_timedelta(TestDateRanges.test_date_range_timedelta  s7    %40%9!+<=
d)r-   c                 Z   Sn[         R                  " [        US9   [        SS9  S S S 5        [         R                  " [        US9   [        SS9  S S S 5        [         R                  " [        US9   [        SS9  S S S 5        [         R                  " [        US9   [        SSS	9  S S S 5        [         R                  " [        US9   [        SSS
9  S S S 5        [         R                  " [        US9   [        SSS9  S S S 5        [         R                  " [        US9   [        5         S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   rp   rr   )rj   )r   r~   r}   r   )rj   rU   )r   rU   rS   ru   rv   r   r   rx   s     r+   test_range_misspecified&TestDateRanges.test_range_misspecified  s   4 	
 ]]:S1Z( 2 ]]:S1:& 2 ]]:S1r" 2 ]]:S1Zc2 2 ]]:S1:C0 2 ]]:S1r, 2 ]]:S1L 21% 21 21 21 21 21 21 21sS   
D5
E2
EE)	E:5F!F5
E
E
E&)
E7:
F
F
F*c                 N    [        [        S5      SSS9n[        U5      S:X  d   eg )Nz1960-04-01 00:00:00L   zQS-JANrS   )r   r   r   )r:   r   s     r+   test_compat_replace"TestDateRanges.test_compat_replace  s*     I&;<bxX6{b   r-   c           	          [         R                  " SS9nSn[        R                  " [        US9   [        [        SSS5      [        SSS5      US9  S S S 5        g ! , (       d  f       g = f)	Nr   )minutez4Offset <DateOffset: minute=5> did not increment daterp   r         r   )r   r
   ru   rv   r   r   r   )r:   r   ry   s      r+   test_catch_infinite_loop'TestDateRanges.test_catch_infinite_loop  sO    ##1-D]]:S1xb"-xb"/EFS 211s   "A
A)c                     [        S5      R                  SSS9n[        S5      R                  SSS9n[        SSS9UU/n[        USS	9R                  U5      n[	        S
SSSUS9n[
        R                  " Xe5        g )Nz2010-11-07 01:00:00
US/PacificT)	ambiguousFz2010-11-07 00:00:00r6   r   r   z	2010-11-7rP   )rj   rT   rU   r7   r   )r   tz_localizer   r   r   r   r   )r:   r   pre_dstpst_dstexpect_datar   r   s          r+   test_construct_over_dst&TestDateRanges.test_construct_over_dst  s    12>>D ? 
 12>>E ? 
 +=

 !37??Eqs|$
 	f/r-   c                     [        SSSUS9n[        [        S5      [        S5      [        S5      /SS9R                  U5      n[        R
                  " X#5        g )Nz2013-01-01 00:00:00+09:00z2013/01/01 02:00:00+09:00r   rU   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_formatDTestDateRanges.test_construct_with_different_start_end_string_format  sg    ''	
 !565656
 
 '$- 	 	f/r-   c                     Sn[         R                  " [        US9   [        SS[	        S5      S9  S S S 5        g ! , (       d  f       g = f)Nz.Offset <0 \* MonthEnds> did not increment daterp   rr   z1/1/2001r   r   )ru   rv   r   r   r   rx   s     r+   test_error_with_zero_monthends-TestDateRanges.test_error_with_zero_monthends  s1    ?]]:S1z:HQK@ 211s	   :
Ac                     [        SS9n[        SSX!S9n[        SSS5      n[        [	        S5       Vs/ s H	  oTXR-  -   PM     snS	U S
3US9n[
        R                  " X65        g s  snf )NrP   )months2011-1-1z	2012-1-31r:  r   r   r   r   r   r   )r
   r   r   r   r   r   r   )r:   r   r   r   rj   r   r   s          r+   test_range_bugTestDateRanges.test_range_bug  sn    1%J&Lq!$ ).q2AQZ2CvQ-f
 	f/ 3s   A&c                 ,   [        S5      nUR                  [        SSS5      5      nUR                  [        SSS5      5      n[        USS9nUR                  R
                  UR
                  :X  d   eUS   U:X  d   eUS   U:X  d   e[        USS9nUR                  R
                  UR
                  :X  d   eUS   U:X  d   eUS   U:X  d   e[        X#S	9nUR                  R
                  UR
                  :X  d   eUS   U:X  d   eUS   U:X  d   eg )
Nr5   r   r   rP   rj   rT   r   r   r   rT   rj   r   )r   localizer   r   r7   zone)r:   r7   rj   r   drs        r+   test_range_tz_pytz!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, endrO      r-  i  r,  c                    [        XSS9nUS   U:X  d   eUS   U:X  d   e[        R                  " UR                  S:H  5      (       d   e[        XSSS9nUS   U:X  d   eUS   U:X  d   e[        R                  " UR                  S:H  5      (       d   e[        UR	                  S S9UR	                  S S9SSS9nUS   U:X  d   eUS   U:X  d   e[        R                  " UR                  S:H  5      (       d   eg )NrR   r   r   r   r5   rU   r7   tzinfo)r   r  allhourreplace)r:   rj   r   rK  s       r+   test_range_tz_dst_straddle_pytz.TestDateRanges.test_range_tz_dst_straddle_pytz  s    -!u~~"v}}vvbggl####>!u~~"v}}vvbggl####MMM&KKtK$	
 !u~~"v}}vvbggl####r-   c                   ^ SSK Jm  U4S jn[        SSSU" S5      S9n[        SSSU" S5      S9n[        USS	9nUR                  U" S5      :X  d   eUS   U:X  d   eUS
   U:X  d   e[        USS9nUR                  U" S5      :X  d   eUS   U:X  d   eUS
   U:X  d   e[        X#S9nUR                  U" S5      :X  d   eUS   U:X  d   eUS
   U:X  d   eg )Nr   )maybe_get_tzc                    > T" SU -   5      $ )Nz	dateutil/r#   )xrY  s    r+   <lambda>7TestDateRanges.test_range_tz_dateutil.<locals>.<lambda>6  s    |K!O4r-   r   r   r5   rQ  rP   rF  r   rG  rH  )rJ   rY  r   r   r7   )r:   r7   rj   r   rK  rY  s        @r+   test_range_tz_dateutil%TestDateRanges.test_range_tz_dateutil0  s     	?4q!B|,<=tQ"\*:;eQ/uu<((((!u~~!u||C+uu<((((!u~~!u||e-uu<((((!u~~!u||r-   )1Dr  r   7W3hrh   r7   c                     [        SUS9n[        SUS9n[        XEX1S9n[        XESUS9n[        XEXs5      n[        R                  " X5        g )N2011/1/1r6   2014/1/1)	inclusiverU   r"   r   r   r,   r   r   )	r:   rU   r7   inclusive_endpoints_fixturebeginr   result_ranger&   r*   s	            r+   test_range_closed TestDateRanges.test_range_closedJ  s[    
 *,
r*!"=
  f4H
,

 	n;r-   c                     [        S5      n[        S5      n[        SSS9n[        SSS9n[        UUUUSS9n[        X4SUSS9n[        UUUU5      n	[        R                  " X5        g )Nrd  re  r5   r6   )rf  rU   r7   r"   rg  )
r:   rU   rh  ri  r   begintzendtzrj  r&   r*   s
             r+   1test_range_with_tz_closed_with_tz_aware_start_end@TestDateRanges.test_range_with_tz_closed_with_tz_aware_start_end\  s     *%
#J<8*6!1
  &t

 -'	
 	n;r-   c                 z   [        SSSUS9n[        SSSUS9n[        SSSUS9n[        SSSUS9nUnUnUnUS:X  a  USS  nOUS	:X  a  US S
 nOUS:X  a
  USS  nUS S
 nUSS
 n	[        R                  " X&5        [        R                  " X75        [        R                  " XH5        [        R                  " XY5        g )Nz
2015-09-12z
2015-12-01zQS-MARrU   rf  z
2015-09-01z
2015-09-11r    r   r   r   r"   r  )
r:   rh  right_boundaryleft_boundaryboth_boundaryneither_boundaryexpected_rightexpected_leftexpected_bothexpected_neithers
             r+   test_range_closed_boundary)TestDateRanges.test_range_closed_boundaryx  s    #1	
 #1	
 #1	
 &1	
 '%%&'1)!"-M(F2*3B/N(F2*12.N)#2.M(2.
n=
m;
m;
.Ar-   c                 x   Un[        SSSUS9n[        SSSUS9n[        R                  " X45        [        SSSUS9n[        SS	SUS9n[        R                  " XV5        [        SS
SUS9n[        SSSUS9n[        R                  " Xx5        [        SS
SUS9n	[        SSSUS9n
[        R                  " X5        g )N20142015MErP  z
2014-01-31
2014-12-31MS
2014-01-01
2015-01-012020rh   z
2019-12-31YSr  r  )r:   tz_naive_fixturer7   r  	expected1r  	expected2rng3	expected3rng4	expected4s              r+   test_date_range_years_only)TestDateRanges.test_date_range_years_only  s    &&t;|\L	
d.&&t;|\L	
d.&&t;|\L	
d.&&t;|\L	
d.r-   c                     [        SSSS9n[        SSSS9n[        SS/S	SS S
9n[        SS/S	SS S
9n[        R                  " X5        [        R                  " X$5        g )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   rU   r7   z2005-01-13 10:00:00z2005-01-13 15:45:00r   r   r   r   )r:   result_1result_2
expected_1
expected_2s        r+   test_freq_divides_end_in_nanos-TestDateRanges.test_freq_divides_end_in_nanos  sz    02D8T02D8T""$9:"	

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

 	h3
h3r-   c                 x    [        SS[        SS9S9n[        U5      S:X  d   eUS   [        SSS	S
5      :X  d   eg )Nz2010-09-01 05:00:00r   rN  hoursrS   r   r   r   r   r   )r   r
   r   r   r   s     r+   test_cached_range_bug$TestDateRanges.test_cached_range_bug  sD    .RSATU3x2~~1v$1a0000r-   c                 P    [        SSS9n[        USSS9n[        U5      S:X  d   eg )N20130220 10:00r5   r6   r   r  )r   r   r   )r:   rj   r   s      r+   test_timezone_comparison_bug+TestDateRanges.test_timezone_comparison_bug  s/    *|<E1>6{ar-   c                     [        SSS9nSn[        R                  " [        US9   [	        USSS9  S S S 5        g ! , (       d  f       g = f)	Nr  r5   r6   z0Inferred time zone not equal to passed time zonerp   r   zEurope/Berlinr  )r   ru   rv   AssertionErrorr   )r:   rj   ry   s      r+   test_timezone_comparison_assert.TestDateRanges.test_timezone_comparison_assert  s:    *|<@]]>5uaO< 655s	   ;
A	c                 p    Un[        SSSUS9n[        SSSUS9S S S2   n[        R                  " X45        g )Nz
2011-06-01r  z-1MS)rj   r   rU   r7   1MS)r   rj   rU   r7   r   r  )r:   tz_aware_fixturer7   r   r   s        r+   1test_negative_non_tick_frequency_descending_dates@TestDateRanges.test_negative_non_tick_frequency_descending_dates  sE    ,LvRTU,lSUVbD
 	f/r-   c                     SnSn[        X#SUS9n[        X#SSS9nUS:X  a  USS nOUS;   a  US S  n[        R                  " UW5        g )	Nz
2021-09-02rR   )rj   r   rU   rf  r"   r!   r   r   )r   r    r"   r  )r:   rh  rj   r   r   r&   r   s          r+    test_range_where_start_equal_end/TestDateRanges.test_range_where_start_equal_end  sd    s6Q
  e3&Q
&)3!!B'H(,EE!!}H
fh/r-   c                 v    [        SSSS9n[        SSUSS9n[        / SQSS	9n[        R                  " X#5        g )
Nr~   9   rP   )r  r  nanosecondsz1970-01-01 00:00:00a)r   rT   rU   rk   )
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   )r:   rU   r   r   s       r+   .test_freq_dateoffset_with_relateivedelta_nanos=TestDateRanges.test_freq_dateoffset_with_relateivedelta_nanos  sF    ; 5rSVW  
 	f/r-   ))r   H)2min2T)1s1S)2ms2L)1us1U)2ns2Nc                 @   [         R                  " SUSS9S   n[         R                  " SUSS9S   nSU S3nSU S3  [        SS	US
9n[        R                  " [
        US9   [        SS	US
9nS S S 5        [        R                  " WU5        g ! , (       d  f       N&= f)N[0-9]*r   maxsplitr   z9' is deprecated and will be removed in a future version, zplease use 'z	' insteadrr   r   rS   rp   resplitr   r   r   r   r   r:   rU   r   freq_msgfreq_depr_msgry   r   r   s           r+   'test_frequencies_H_T_S_L_U_N_deprecated6TestDateRanges.test_frequencies_H_T_S_L_U_N_deprecated  s     88HdQ7:9qA!DWX 	 xj	*j!$?''SA
AIFF B
fh/ BA   #B
B))200YE200A)rh   Y)z2YE-MAYz2A-MAY)zYE-MAYzY-MAYc                 @   [         R                  " SUSS9S   n[         R                  " SUSS9S   nSU S3nSU S3  [        SS	US
9n[        R                  " [
        US9   [        SS	US
9nS S S 5        [        R                  " WU5        g ! , (       d  f       N&= f)Nr  r   r  r   r   r   r   rr   r   rS   rp   r  r  s           r+   'test_frequencies_A_deprecated_Y_renamed6TestDateRanges.test_frequencies_A_deprecated_Y_renamed$  s     88HdQ7:9qA!D- DE
+H:Z@j!$?''SA
AIFF B
fh/ BAr  c                     Sn[         R                  " [        US9   [        SSSS9nS S S 5        [	        SS/S	S
9n[         R
                  " WU5        g ! , (       d  f       N2= f)NzS'm' is deprecated and will be removed in a future version, please use 'ME' instead.rp   z
2010-01-01r   mrS   z
2010-01-31z
2010-02-28r  r   )r   r   r   r   r   r   )r:   ry   r   r   s       r+   -test_to_offset_with_lowercase_deprecated_freq<TestDateRanges.test_to_offset_with_lowercase_deprecated_freq9  s]     	 ''SAacBF B ,!=DI
fh/ BAs   A
A"c                     [        SSS5      n[        USSS9n[        U5      S:X  d   eUS   US[        R                  " 5       -  -   :X  d   eUR
                  S:X  d   eg )	N  r-     1Br   )rj   rU   rT   r   r   )r   r   r   r   r   rU   )r:   sdaterl   s      r+   test_date_range_bday#TestDateRanges.test_date_range_bdayD  s`    r2&u4<3x2~~1vW\\^!33333xx3r-   r#   )returnN)8r]   r^   r_   r`   rm   rz   r   ru   markparametrizer   r   r   r   r   r   r   r   slowr   r   r   r   r   r   r  r   r   r  r   r$  r(  r.  r7  r;  r>  rC  rL  rV  r^  rk  rp  r|  r  r  r  r  r  r  r  r  r  r  r  r  rc   r#   r-   r+   re   re      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-   re   c                      \ rS rSrSrS r\R                  R                  SSS/5      S 5       r	\R                  R                  SSS/5      S 5       r
S	 rS
 r\R                  R                  SSS/5      S 5       r\R                  R                  SSS/5      S 5       r\R                  R                  S/ SQ/ SQ/ SQ/ SQS\" SS9S//5      S 5       rSrg)TestDateRangeTZiL  z#Tests for date_range with timezonesc                 4    [        SSSSS9nUR                    g )Nz
2012-01-01z
2012-01-10rR   HongkongrP  )r   rT  )r:   rK  s     r+   test_hongkong_tz_convert(TestDateRangeTZ.test_hongkong_tz_convertO  s    lL 	r-   tzstrr5   rA   c                     [        SSSSS9nUR                  S:H  R                  5       (       d   e[        SSUS	9nUR                  n[        R                  " S/S-  S
S9n[
        R                  " X45        g )Nz03/06/2012 00:00   zW-FRIr5   r  r   z
2012-11-02r~   r  int32r   )r   rT  rS  r   Indexr   r   )r:   r  rK  r   r   s        r+   #test_date_range_span_dst_transition3TestDateRangeTZ.test_date_range_span_dst_transitionV  sm    
 *Cg,W1!!####bU;88QC"HG4
f/r-   c                     [         R                  " U5      n[        SSUS9n[        SSUS9n[        R                  " X45        g )Nrr   r~   r  )r   rY  r   r   r   )r:   r  r7   r   r   s        r+   %test_date_range_timezone_str_argument5TestDateRangeTZ.test_date_range_timezone_str_argumentd  s<    ##E*Ju=j"<
f/r-   c           
      T   [        SS5      n[        SSSSSSUS9n[        SS	SSSSUS9n[        X#S
9nXR                  :X  d   e[        U[	        U5      US9n[
        R                  " XE5        [        SS5      nUR                  UR                  :H  R                  5       (       d   eg )Ni  z+07:00  rP   r,  r   r   rQ  rN  rH  r  z3/11/2012 05:00:00+07:00z6/11/2012 05:00:00+07:00)	r   r   r   r7   r   r   r   valuesrS  )r:   offrj   r   r;   r  r  s          r+   test_date_range_with_fixed_tz-TestDateRangeTZ.test_date_range_with_fixed_tzl  s    #x(q"aAc:tQAq!C8u.ff}}%Sc:
c(46PQ

dkk)..0000r-   c           
          [         n[        SSSSSSUS9n[        SSSSSSUS9n[        X#S9nXR                  :X  d   e[        R
                  " X#/5      nXR                  :X  d   eg )	Nr  rP   r,  r   r   rQ  rN  rH  )r   r   r   r7   r   r  )r:   r  rj   r   r;   rl   s         r+   'test_date_range_with_fixedoffset_noname7TestDateRangeTZ.test_date_range_with_fixedoffset_nonamey  si    q"aAc:tQAq!C8u.ff}}hh|$ff}}r-   c                 h    [        SUS9nUR                  S:X  d   e[        SSSUS9nX#S   :X  d   eg )	Nz3/11/2012 05:00r6   r   z3/11/2012 04:00r~   r   r  r   )r   rT  r   )r:   r  r<   r;   s       r+   test_date_range_with_tz'TestDateRangeTZ.test_date_range_with_tz  s>    +6zzQ*BSUKAr-   r7   Europe/Londonzdateutil/Europe/Londonc                     [         R                  " [        R                  SS9   [	        SSSSS9  S S S 5        [	        SSSUSS	9nUS
   [        SUS9:X  d   eUS   [        SUS9:X  d   eg ! , (       d  f       NB= f)NzCannot infer dst timerp   z2013-10-26 23:00z2013-10-27 01:00r  r   r7   rU   infer)rU   r7   r2  r   r6   r   z2013-10-27 01:00:00+0000)ru   rv   rE   AmbiguousTimeErrorr   r   )r:   r7   timess      r+   "test_date_range_ambiguous_endpoint2TestDateRangeTZ.test_date_range_ambiguous_endpoint  s    
 ]]422:QR"$6?QT S
  2w
 Qx9%7B????RyI&@RHHHH SRs   A--
A;ztz, option, expected)r1  shift_forward2019-03-10 03:00)dateutil/US/Pacificr	  r
  )r1  shift_backward2019-03-10 01:00)r  r  r  r1  r   r  r
  c                     [         R                  " [        R                  SS9   [	        SSSSS9  S S S 5        [	        SSSXS9nUS	   [        X1S
9:X  d   eg ! , (       d  f       N-= f)Nz2019-03-10 02:00:00rp   z2019-03-10 00:00z2019-03-10 02:00r1  r   r  )rU   r7   nonexistentr   r6   )ru   rv   rE   NonExistentTimeErrorr   r   )r:   r7   optionr   r  s        r+   $test_date_range_nonexistent_endpoint4TestDateRangeTZ.test_date_range_nonexistent_endpoint  sj     ]]444<QR"$6<c S
  2
 RyIh6666 SRs   A
A&r#   N)r]   r^   r_   r`   __doc__r  ru   r  r  r  r  r  r  r  r  r   r  rc   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                   T   \ rS rSr\R
                  R                  SS\" 5       4S\" 5       4/5      S 5       r	S r
S rS rS	 rS
u  rrSu  rr\R
                  R                  S\" \\S9\" \5      4\" \5      \" \\S94\" \\S9\" \\S94\" \\S9\" \\S94/5      S 5       rSrg)TestGenRangeGenerationi  freqstr,offsetr   Cc           
          [        [        [        [        S USS95      n[        [        [        [        S USS95      nX4:X  d   eg )Nr   )rT   r   r   )listgenerate_rangeSTARTEND)r:   freqstrr   r  r  s        r+   test_generate$TestGenRangeGeneration.test_generate  s>     N5#tFQUVWN5#tGRVWX||r-   c           
          [        [        [        SSS5      S S[        5       SS95      n[        SSS5      [        SSS5      /nX:X  d   eg )Nr   rP   r  r   r   rj   r   rT   r   r      r  r  r   r   r:   r;   r   s      r+   test_1TestGenRangeGeneration.test_1  sV    tQ+v
 T1b)8D!R+@Ar-   c           
          [        [        [        SSS5      [        SSS5      S [        5       SS95      n[        SSS5      [        SSS5      [        SSS5      /nX:X  d   eg )N  r   rP   r   r"  r   r$  r%  s      r+   test_2TestGenRangeGeneration.test_2  sk    tQ*T1a(v
 T1a((4A*>qRS@TUr-   c           
      ~    [        [        [        SSS5      [        SSS5      S [        5       SS95      n/ nX:X  d   eg )Nr)  r   r   rN  r   r"  r$  r%  s      r+   test_3TestGenRangeGeneration.test_3  sH    tQ*T1a(v
 r-   c                     [        SSSS9n[        SSSS9n/ SQn/ SQn[        US	S
S S9n[        US	SS S9n[        R                  " X5        [        R                  " X&5        g )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:03r  zQE-DECr  W-SUNr  )r:   result1result2expected1_listexpected2_listr  r  s          r+    test_precision_finer_than_offset7TestGenRangeGeneration.test_precision_finer_than_offset  s    '-B
 '-B


 ""2d
	 ""2T
	 	g1
g1r-   )
2017-01-01r9  )r5   r  z	start,endr6   c                    Sn[         R                  " [        US9   [        X5        S S S 5        [         R                  " [        US9   [        X[	        5       S9  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nz>Start and end cannot both be tz-aware with different timezonesrp   r   )ru   rv   rw   r   r   r   s       r+   test_mismatching_tz_raises_err5TestGenRangeGeneration.test_mismatching_tz_raises_err  sW     O]]9C0u" 1]]9C0u/ 10 1000s   A%	A6%
A36
Br#   N)r]   r^   r_   r`   ru   r  r  r   r	   r  r&  r*  r-  r7  dt1dt2tz1tz2r   r;  rc   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                       \ rS rSrS rS rS rS r\R                  R                  S/ SQ5      S 5       rS	 rS
 rSrg)TestBusinessDateRangei   c                 ,   [        [        [        [        5       S9  [        [        S[        5       S9  [        [        S[        5       S9  Sn[        R
                  " [        US9   [        SSS	5        S S S 5        [        R
                  " [        US9   [        SSS	5        S S S 5        S
n[        R
                  " [        US9   [        [        [        SS S9  S S S 5        g ! , (       d  f       Nv= f! , (       d  f       NX= f! , (       d  f       g = f)Nr   r   rS   r   zperiods must be a number, got Brp   rB  2012-1-1r   z>freq must be specified for bdate_range; use date_range insteadr~   )r   r  r  r   ru   rv   rw   r   rx   s     r+   test_constructor&TestBusinessDateRange.test_constructor!  s    E3TV,E2DF3r7/]]9C0z:s3 1 ]]9C0
J4 1 O]]9C0sBT: 10 10 10 10s$   %C#C4D#
C14
D
Dc                     [        SSS5      n[        USS9nUS[        5       -  -
  n[        U5      S:X  d   eUS   U:X  d   eUS   U:X  d   eg )	Nr   r      r   rG     r   r   )r   r   r   r   r:   r   rK  	firstDates       r+   	test_miscTestBusinessDateRange.test_misc1  s^    tQ#S"-"tv+%	2w"}}!u	!!!"v}}r-   c                    SnSn[         R                  " [        US9   [        U5        S S S 5        [         R                  " [        US9   [	        USS9  S S S 5        [         R                  " [        US9   [	        USS9  S S S 5        [         R                  " [        US9   [	        X5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Ny= f! , (       d  f       N^= f! , (       d  f       g = f)Nz
2007/100/1z;Unknown datetime string format, unable to parse: 2007/100/1rp   r~   rF  rG  )ru   rv   r   r   r   )r:   badly_formed_datery   s      r+   test_date_parse_failure-TestBusinessDateRange.test_date_parse_failure:  s    (K]]:S1'( 2 ]]:S1/< 2 ]]:S1-r: 2 ]]:S1)= 21 21 21 21 21s/   B8C	7C#C+8
C	
C
C(+
C9c                     [        SS5      n[        SS5      nUR                  R                  [        5       :X  d   eUR	                  U5      n[        U[        5      (       d   eg )N	12/5/2011	12/2/2011)r   _datarU   r   union
isinstancer   r:   r  r  r   s       r+   test_daterange_bug_456,TestBusinessDateRange.test_daterange_bug_456J  sS    ;4;4zz$&(((D!&-0000r-   rf  )r   r    r!   r"   c                 j    SnSn[        X#SUS9nSnSn[        XVSS9n[        R                  " XG5        g )	Nz
2018-07-21z
2018-07-29r   rs  z
2018-07-23z
2018-07-27rR   r   r  )r:   rf  rj   r   r   
bday_startbday_endr   s           r+   test_bdays_and_open_boundaries4TestBusinessDateRange.test_bdays_and_open_boundariesS  s@     ESIF!
j=
f/r-   c                     [         R                  R                  S5      R                  5       n[	        US SSS9n[        U/SS9R                  S5      n[        R                  " X#5        g )NrR   r   r   r   r   r   )	r   maxfloorto_pydatetimer   r   r   r   r   )r:   rj   r;   r   s       r+   test_bday_near_overflow-TestBusinessDateRange.test_bday_near_overflow`  sV    ##C(668D!#> %s3;;DA
c,r-   c                     Sn[         R                  R                  S5      R                  5       n[        R
                  " [        US9   [        USSS9  S S S 5        g ! , (       d  f       g = f)Nz"Out of bounds nanosecond timestamprR   rp   r   r   rS   )r   ra  rb  rc  ru   rv   r   r   )r:   ry   rj   s      r+   test_bday_overflow_error.TestBusinessDateRange.test_bday_overflow_errorg  sK    2##C(668]].c:uac2 ;::s   	A
A,r#   N)r]   r^   r_   r`   rE  rL  rP  rY  ru   r  r  r^  rd  rg  rc   r#   r-   r+   rB  rB     sG    ; > 1 [[[*NO	0 P	0-3r-   rB  c            
          \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
\ V Vs/ s H  oR!                  S5      (       d  M  UPM     snn 5      S 5       r\R                  R                  S/ SQ5      S 5       r\R                  R                  SSSS/4SSS/4SSSS/4/5      S 5       rSrgs  snn f )TestCustomDateRangeio  c                    [        [        [        [        5       S9  [        [        S[        5       S9  [        [        S[        5       S9  Sn[        R
                  " [        US9   [        SSS	5        S S S 5        [        R
                  " [        US9   [        SSS	5        S S S 5        g ! , (       d  f       N>= f! , (       d  f       g = f)
Nr   r   rS   r   zperiods must be a number, got Crp   rB  rD  r  )r   r  r  r	   ru   rv   rw   r   rx   s     r+   rE  $TestCustomDateRange.test_constructorp  s    E3TV,E2DF3r7/]]9C0z:s3 1 ]]9C0
J4 10 10 10s   %B+B<+
B9<
C
c                     [        SSS5      n[        USSS9nUS[        5       -  -
  n[        U5      S:X  d   eUS   U:X  d   eUS	   U:X  d   eg )
Nr   r   rH  r   r  r   rI  r   r   )r   r   r	   r   rJ  s       r+   rL  TestCustomDateRange.test_misc|  s`    tQ#S"37"tv+%	2w"}}!u	!!!"v}}r-   c                     [        SSSS9n[        SSSS9nUR                  R                  [        5       :X  d   eUR	                  U5      n[        U[        5      (       d   eg )NrS  r  r   rT  )r   rU  rU   r	   rV  rW  r   rX  s       r+   rY  *TestCustomDateRange.test_daterange_bug_456  sW    ;#>;#>zz$&(((D!&-0000r-   c                     [        SSSUS9n[        / SQSU S3SS9n[        R                  " X#5        UR                  UR                  :X  d   eg )	N
2013-05-01rP   r  rT   rU   r   )rr  
2013-05-02
2013-05-03r   r   r   )r   r   r   r   rU   r   s       r+   test_cdaterange#TestCustomDateRange.test_cdaterange  sR    \13TJ 6D6mRU
 	f/{{hmm+++r-   c                 8   [        SSSSUS9n[        / SQSU S3UR                  S	9n[        R                  " X#5        UR                  UR                  :X  d   eS
n[
        R                  " [        US9   [        SSSS9  S S S 5        g ! , (       d  f       g = f)Nrr  rP   r  Sun Mon Tue Wed Thu)rT   rU   weekmaskr   )rr  rt  
2013-05-05r   r   r   [a custom frequency string is required when holidays or weekmask are passed, got frequency Brp   )rT   rz  r   r   rU   r   r   ru   rv   r   r:   r   r   r   ry   s        r+   test_cdaterange_weekmask,TestCustomDateRange.test_cdaterange_weekmask  s    !#8MTX
 !6vQ-

 	f/{{hmm+++3 	 ]]:S1a:OP 211s   6B
Bc                 <   [        SSSS/US9n[        / SQSU S3UR                  S9n[        R                  " X#5        UR                  UR                  :X  d   eS	n[
        R                  " [        US
9   [        SSS/S9  S S S 5        g ! , (       d  f       g = f)Nrr  rP   r  )rT   rU   holidaysr   )rt  ru  
2013-05-06r   r   r   r|  rp   )rT   r  r}  r~  s        r+   test_cdaterange_holidays,TestCustomDateRange.test_cdaterange_holidays  s    !#T
 !6vQ-

 	f/{{hmm+++3 	 ]]:S1a<.I 211s   7B
Bc           	          [        SSSSS/US9n[        / SQSU S3UR                  S	9n[        R                  " X#5        UR                  UR                  :X  d   eg )
Nrr  rP   r  ry  )rT   rU   rz  r  r   )rt  r{  r  r   r   r   )r   r   rU   r   r   r   s       r+   %test_cdaterange_weekmask_and_holidays9TestCustomDateRange.test_cdaterange_weekmask_and_holidays  sg    *"^
 !6vQ-

 	f/{{hmm+++r-   c                     Sn[         R                  " [        US9   [        SSSS/S9  S S S 5        g ! , (       d  f       g = f)Nr|  rp   rr  rP   ry  )rT   rz  r  )ru   rv   r   r   rx   s     r+   2test_cdaterange_holidays_weekmask_requires_freqstrFTestCustomDateRange.test_cdaterange_holidays_weekmask_requires_freqstr  s>    3 	 ]]:S1.&	 211s	   3
ArU   r  c                     [        [        [        USS/S9  US-   nSU 3n[        R                  " [
        US9   [        [        [        US9  S S S 5        g ! , (       d  f       g = f)NzMon Wed Friz
2009-03-14)rU   rz  r  FOOz!invalid custom frequency string: rp   r   )r   r  r  ru   rv   r   )r:   rU   bad_freqry   s       r+   test_all_custom_freq(TestCustomDateRange.test_all_custom_freq  sV    
 	3TM\N	
 %<1(<]]:S1s2 211s   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                 d    Uu  p#[        X#SSS9n[        U/SS9n[        R                  " XE5        g )Nr   r   )rj   r   rT   rf  zM8[ns, UTC]r  r  )r:   r  rj   r   r   r   s         r+   &test_range_with_millisecond_resolution:TestCustomDateRange.test_range_with_millisecond_resolution  s5     
%!vN %>
f/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                 x    [        XSS9n[        U5      R                  S5      n[        R                  " XC5        g )Nr  rt   r   )r   r   r   r   r   )r:   rj   periodr   r   s        r+   .test_range_with_timezone_and_custombusinessdayBTestCustomDateRange.test_range_with_timezone_and_custombusinessday  s3     %cB *2248
f/r-   r#   N)r]   r^   r_   r`   rE  rL  rY  rv  r  r  r  r  ru   r  r  r   
startswithr  r  r  rc   ).0rU   s   00r+   rj  rj  o  s    
51,Q(J(," [[.I.$OOC4H.I	3	3 [[	
00 [[(!.I-JK(!.I-JK+,.IJ	
00Q Js   CCrj  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestDateRangeNonNanoi  c                     Sn[         R                  " [        US9   [        SSSSS9  S S S 5        g ! , (       d  f       g = f)Nz+'unit' must be one of 's', 'ms', 'us', 'ns'rp   r   z
2016-03-04rP   r   r   r#  rx   s     r+   test_date_range_reso_validation4TestDateRangeNonNano.test_date_range_reso_validation  s/    ;]]:S1|\13G 211	   2
A c                     Sn[         R                  " [        US9   [        SSSSS9  S S S 5        g ! , (       d  f       g = f)Nz)Use a lower freq or a higher unit insteadrp   r   z
2016-01-02r   r   r:  r#  rx   s     r+   %test_date_range_freq_higher_than_reso:TestDateRangeNonNano.test_date_range_freq_higher_than_reso  s/    9]]:S1|\4H 211r  c                 >   [        SSSSS9n[        R                  " SS[        R                  S9n[	        UR                  S5      SS	9n[        R                  " X5        [        SSS
S
S9n[        R                  " SS[        R                  S9n[	        UR                  S5      S
S	9n[        R                  " X5        [        SSSSS9n[        R                  " SS[        R                  S9n[	        UR                  S5      SS	9n[        R                  " X5        g )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   viewr   r   )r:   r   r;   r   s       r+   !test_date_range_freq_matches_reso6TestDateRangeNonNano.test_date_range_freq_matches_reso  s    '<4dSii)+<BHHM (!3$?
c,'<4dSii-/DBHHU (!3$?
c,'@tRVWii%'@
 !(!3$?
c,r-   c                    [        S5      n[        S5      n[        R                  " [        SS9   [	        XSSS9  S S S 5        [	        XSS	S9n[
        R                  " UR                  S	5      R                  UR                  S	5      R                  /[
        R                  S
9n[        UR                  S5      5      n[        R                  " X55        g ! , (       d  f       N= f)Nz2022-10-19 11:50:44.719781z2022-10-19 11:50:47.066458zCannot losslessly convert unitsrp   rP   r   r   r   r   r  r  )r   ru   rv   r   r   r  r  r   _valuer  r   r  r   r   )r:   rj   r   r   r;   r   s         r+   )test_date_range_freq_lower_than_endpoints>TestDateRangeNonNano.test_date_range_freq_lower_than_endpoints-  s    6745 ]]:-NOu137 P QT:hh]]4 ''T):)A)AB"((
 !(!34
c, POs   C
C%c                    [         R                  " S5      n[         R                  " S5      n[        XSSS9nUR                  S:X  d   eUR                  S:X  d   e[         R
                  " UR                  S5      R                  S5      US-   R                  S5      R                  S5      S	5      R                  S5      n[        R                  " UR                  5       U5        g )
Nz
1066-10-14z
2305-07-13rR   r   r:  zM8[s]i8r   iQ )r  
datetime64r   rU   r   r  astyper  r   r  to_numpy)r:   rj   r   r   r   s        r+   test_date_range_non_nano-TestDateRangeNonNano.test_date_range_non_nano>  s    l+mmL)#C8xx3yyG###iiLL!&&t,1WW%**40
 $w-	 	 	##CLLNC8r-   r#   N)
r]   r^   r_   r`   r  r  r  r  r  rc   r#   r-   r+   r  r    s    H
I-&-"9r-   r  c            
       $   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS r\R,                  R/                  SS\R2                  " SS94S\R4                  " SS94S\R6                  " SS94/5      S 5       rSrg)TestDateRangeNonTickFreqiO  c                    ^ [        5       n[        R                  " US9m[        SSTUS9n[	        U4S jU 5       5      (       d   e[        / SQSU S3TS	9n[        R                  " X45        g )
Ncalendar2012010120130101rj   r   rU   r   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fNis_on_offsetr  r[  rU   s     r+   	<genexpr>WTestDateRangeNonTickFreq.test_date_range_custom_business_month_begin.<locals>.<genexpr>V       5A4$$Q''   !)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   rS  r   r   r   r:   r   hcalr   r   rU   s        @r+   +test_date_range_custom_business_month_beginDTestDateRangeNonTickFreq.test_date_range_custom_business_month_beginR  sq    ')##T2zz4P555555  vQ-!
$ 	c,r-   c                    ^ [        5       n[        R                  " US9m[        SSTUS9n[	        U4S jU 5       5      (       d   e[        / SQSU S3TS	9n[        R                  " X45        g )
Nr  r  r  r  c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr  r  r  s     r+   r  UTestDateRangeNonTickFreq.test_date_range_custom_business_month_end.<locals>.<genexpr>p  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   rS  r   r   r   r  s        @r+   )test_date_range_custom_business_month_endBTestDateRangeNonTickFreq.test_date_range_custom_business_month_endl  sq    ')!!40zz4P555555  vQ-!
$ 	c,r-   c                     [         R                  " SS/S9n[        SSX!S9n[        / SQSU S	3US
9n[        R
                  " X45        g )Nz15:00z
2020-11-26)rj   r  z2020-11-25 15:00rQ   rj   rT   rU   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   )r:   r   rU   r   r   s        r+   $test_date_range_with_custom_holidays=TestDateRangeNonTickFreq.test_date_range_with_custom_holidays  sT    ))<.Q"4adV  vQ-	
 	f/r-   c                 6   [        / SQSU S3SS9n[        SSSUS9n[        R                  " X#5        [        SS	/SU S3SS9n[        SS	SUS9n[        R                  " X#5        [        / S
QSU S3SS9n[        SSSUS9n[        R                  " X#5        g )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   )r:   r   rl   r;   s       r+   test_date_range_businesshour5TestDateRangeNonTickFreq.test_date_range_businesshour  s    	 vQ-
 +-?dQUV
c'!34c$qMPT
 +-?dQUV
c'4 vQ-9
< +-?dQUV
c'r-   c                    [        SSSUS9n[        SSSUS9n[        SSSUS9n[        / SQS	U S
3SS9n[        R                  " X%5        [        R                  " X55        [        R                  " XE5        [        SSSUS9n[        SSSUS9n[        SSSUS9nU[	        SS9R                  U5      -   n	SU	l        [        R                  " Xi5        [        R                  " Xy5        [        R                  " X5        g )Nr  r  r  r  r-  r  )r   rT   rU   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   rU   )
r:   r   idx1idx2idx3r   idx4idx5idx6r  s
             r+   test_date_range_business_hour27TestDateRangeNonTickFreq.test_date_range_business_hour2  s
   $*<4d
  2BTPTU0"4dS  vQ-!
$ 	d-
d-
d-$*<4d
  2BTPTU0"4dSy4<<TBB		
d.
d.
d.r-   c                 h    [        SSSUS9n[        S/SU S3SS9n[        R                  " X#5        g )Nz2014-07-01 10:00r  r   )rj   rU   rT   r   r   r   r   r  )r:   r   r  r  s       r+   #test_date_range_business_hour_short<TestDateRangeNonTickFreq.test_date_range_business_hour_short  s<     2qtT!#5"6D6mRVW	
d.r-   c                 j    [        SSSUS9n[        / SQSU S3SS9n[        R                  " X#5        g )	N1/1/20137/1/2017r  r:  )
2013-01-01r  r  r   r9  r   r   r   r  r:   r   r;   r   s       r+   test_date_range_year_start3TestDateRangeNonTickFreq.test_date_range_year_start  s=    ZdFRvQ-

 	c'r-   c                 j    [        SSSUS9n[        / SQSU S3SS9n[        R                  " X#5        g )	Nr  r  rh   r:  )
2013-12-31r  
2015-12-31z
2016-12-31r   r   r   r  r   s       r+   test_date_range_year_end1TestDateRangeNonTickFreq.test_date_range_year_end  s=    ZdFDvQ-

 	c'r-   c                     [        SSSUS9n[        / SQSU S3SS9n[        R                  " X#5        UR                  S:X  d   eg )	N
2011-12-31z-2YErP   rU   rT   r   )r	  z
2009-12-31z
2007-12-31r   r   r   r   r   r   r   rU   r   s       r+   &test_date_range_negative_freq_year_end?TestDateRangeNonTickFreq.test_date_range_negative_freq_year_end  N    FADI6D6mRX
 	c'xx6!!!r-   c                 j    [        SSSUS9n[        / SQSU S3SS9n[        R                  " X#5        g )	Nr  r  BYEr:  )r  r  r  z
2016-12-30r   r   r   r  r   s       r+   &test_date_range_business_year_end_year?TestDateRangeNonTickFreq.test_date_range_business_year_end_year  s=    Ze$GDvQ-

 	c'r-   c                 j    [        SSSUS9n[        / SQSU S3SS9n[        R                  " X#5        g )	Nrr   r~   BMSrs  )
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   r  r   s       r+   test_date_range_bms,TestDateRangeNonTickFreq.test_date_range_bms$  sA    JTJ  vQ-
  	f/r-   c                    [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SS	S5      [        SS	S5      [        SS
S5      [        SS
S5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      /n[        US   US   SUS9n[        USU S3SS9n[        R                  " X45        g )N  r-  r   r)  r   r   rP   rQ   r   rN     r   r   r~   r,  r   r   SMSr  r   r   r   r   r   r   r   r   r:   r   datesr   r   s        r+    test_date_range_semi_month_begin9TestDateRangeNonTickFreq.test_date_range_semi_month_begin:  ss   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
f*r-   c                    [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SS	S5      [        SS	S5      [        SS
S5      [        SS
S5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      /n[        US   US   SUS9n[        USU S3SS9n[        R                  " X45        g )Nr  r-     r)  r   r   r      rP   rQ      r   rN  r  r   r   r~   r,  r   r   SMEr  r   r   r   r  r  s        r+   test_date_range_semi_month_end7TestDateRangeNonTickFreq.test_date_range_semi_month_end[  ss   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
f*r-   c                     [        SSSUS9n[        S/SU S3SS9n[        R                  " X#5        [        SS	SUS9n[        SS
/SU S3SS9n[        R                  " XE5        g )N20110101r   zWOM-1MONr  z
2011-01-03r   r   r   r   z
2011-02-07r  )r:   r   r   r   r4  r  s         r+   test_date_range_week_of_month6TestDateRangeNonTickFreq.test_date_range_week_of_month|  sy     *ajtT ,TF!}:V
f/:qzPTU!<(#dV1J
	 	g1r-   c                 j    [        SSSUS9n[        / SQSU S3SS9n[        R                  " X#5        g )	Nz2013-1-1rQ   zWOM-1SATrs  )z
2013-01-05z
2013-02-02z
2013-03-02z
2013-04-06r   r   r   r  r   s       r+   test_date_range_week_of_month27TestDateRangeNonTickFreq.test_date_range_week_of_month2  s=    J
N DvQ-

 	f/r-   c                     [        SSSUS9n[        / SQSU S3SS9n[        R                  " X#5        UR                  S:X  d   eg )	N
2011-01-31z-2MErP   r
  )r/  z
2010-11-30z
2010-09-30r   r   r   r  r   s       r+   'test_date_range_negative_freq_month_end@TestDateRangeNonTickFreq.test_date_range_negative_freq_month_end  r  r-   c                     [         R                  " SSSS9n[        SSUUS9n[        SS	/S
U S3US9n[        R
                  " X45        g )Nr   rP   nearest)startingMonthweekday	variationr  r   r  z
2013-01-31z
2014-01-30r   r   r   )r   FY5253r   r   r   r   )r:   r   rU   r   r   s        r+   test_date_range_fy5253/TestDateRangeNonTickFreq.test_date_range_fy5253  sZ    ~~AqIN	
 !<(#dV1D
 	c,r-   r  QSr   )r4  BQEr-  r2  rN  )r5  c                     [        SSS5      n[        SSS5      n[        X4US9n[        X4US9n[        U5      [        U5      :X  d   eUR                  UR                  :X  d   eg )Nr  r-  r  r   r   r   )r   r   r   rU   )r:   r  r   r  r   r  r  s          r+   &test_date_range_freqstr_matches_offset?TestDateRangeNonTickFreq.test_date_range_freqstr_matches_offset  sd     r2&q!$w?v>4yCI%%%yyDII%%%r-   r#   N)r]   r^   r_   r`   r  r  r  r  r  r  r  r  r  r  r  r  r%  r)  r,  r0  r8  ru   r  r  r   QuarterBeginBQuarterEndWeekr=  rc   r#   r-   r+   r  r  O  s    -4-40 7(r&/P/(("(0,+B+B20"- [[7''a89G''b9:gll1-.	
&&r-   r  )8r  r   r   r   r  numpyr  ru   rE   r   pandas._libs.tslibsr   pandas._libs.tslibs.offsetsr   r	   r
   r   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsra   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/   re   r  r  rB  rj  r  r  r#   r-   r+   <module>rO     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-   