
    I>qjn                     
   d dl m Z mZmZ d dlZd dlZd dlmZ d dlm	c m
Z d dlZd dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZ  e ddd       e ddd      cZZ G d	 d
      Z G d d      Z G d d      Z d Z!d Z"d Z#y)    )datetime	timedeltatimezoneN)np_version_gt2_6)	DataFrameDatetimeIndexIndexSeries	Timestampbdate_range
date_range)	BMonthEndMinuteMonthEndi     i  c                      e Zd Zg dZd Zej                  j                  dej                  e
eg      d        Zej                  j                  de      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g d      d        Zej                  j                  dddg      d        Zd Zej                  j                  de      d        Zd Z d Z!ej                  j                  dg d      d         Z"d! Z#d" Z$ej                  j                  d#g d$      d%        Z%d& Z&y')(TestDatetimeIndexSetOps)NUTC
Asia/Tokyo
US/Easternzdateutil/Asia/Singaporedateutil/US/Pacificc                     t        dd      }|d d }|dd  }|j                  ||      }t        j                  ||       y N
2020-01-01
   periods   sortr   uniontmassert_index_equal)selfr    
everythingfirstsecondr"   s         i/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/pandas/tests/indexes/datetimes/test_setops.pytest_union2z#TestDatetimeIndexSetOps.test_union2-   sF    b9
2AABF.
eZ0    boxc                     t        dd      }|d d }|dd  }|j                  ||      } ||j                        }|j                  ||      }t        j                  ||       y r   )r   r"   valuesr#   r$   )	r%   r    r,   r&   r'   r(   expectedcaseresults	            r)   test_union3z#TestDatetimeIndexSetOps.test_union34   sh    b9
2AAB ;;vD;16==!T-
fh/r+   tzc                    t        ddd|d      }t        ddd|d      }t        ddd|d      }t        t        |      t        |      z         }t        ddd|d      }t        ddd|d      }t        ddd	|d      }	t        t        |      t        |d d
       z         }
t        ddd|d      }t        g |      j                  d      }t        ddd|d      }|}||||f|||	|
f||||ffD ]r  \  }}}}|j	                  ||      }t        j                  ||       |j	                  ||      }|t        j                  ||       ]t        j                  ||       t y )N1/1/2000Dr   ns)freqr   r3   unit1/6/2000r   1/4/2000      r3   r   )r   r   listas_unitr"   r#   r$   )r%   r3   r    rng1other1	expected1expected1_notsortedrng2other2	expected2expected2_notsortedrng3other3	expected3expected3_notsortedrngotherexpexp_notsortedresult_unions                       r)   
test_unionz"TestDatetimeIndexSetOps.test_union@   s   *3btLJS!NzRBTR	+DL4:,EF*3btLJS!NzQ2DQ	+DL4Ra>,IJ*3btLrb)11$7zQ2DQ	" 69&9:69&9:69&9:/
 	C*C]
 99U96L!!,4 ;;s;6L|%%lC8%%lMB	Cr+   c                 4   t        g d      }t        |j                         d      }|j                  ||      }t        j                  ||       |d d j                  ||      }t        j                  ||       |j
                  |j
                  k(  sJ y )N)
2000-01-03
2000-01-01
2000-01-02inferr8   r   r   )r   sort_valuesr"   r#   r$   r8   )r%   r    idxorderedr1   s        r)   test_union_coveragez+TestDatetimeIndexSetOps.test_union_coverage_   s    FG 1@s.
fg.!""7"6
fg.{{gll***r+   c                    t        ddd      }t        ddd      }|j                  ||      }t        |      t        |dd        z   }|t        t	        |            }nt        |      }t        j                  ||       y )N1/1/2012   3hr   r8   4hr   r   )r   r"   r?   r   sortedr#   r$   )r%   r    rng_arng_br1   rO   s         r)   test_union_bug_1730z+TestDatetimeIndexSetOps.test_union_bug_1730i   su    :qt<:qt<U.5kDqrO+<s,C$C
fc*r+   c                     t        dg      }t        g d      }|j                  ||      }t        g d      }||j                         }t        j                  ||       y )N2012-05-11 15:19:49.695000)2012-05-29 13:04:21.3220002012-05-11 15:27:24.8730002012-05-11 15:31:05.350000r   )rh   ri   rj   rk   )r   r"   rY   r#   r$   )r%   r    leftrightr1   rO   s         r)   test_union_bug_1745z+TestDatetimeIndexSetOps.test_union_bug_1745u   se    :;<
 E-
 <//#C
fc*r+   c                    ddl m} t        dd      }| |d      z   }|j                  ||      }t	        |      t	        |      z   }|t        t        |            }nt        |      }t        j                  ||       y )Nr   
DateOffsetz
2013-01-01z
2013-02-01   )minutesr   )	pandasrq   r   r"   r?   r   rc   r#   r$   )r%   r    rq   rl   rm   r1   rO   s          r)   test_union_bug_4564z+TestDatetimeIndexSetOps.test_union_bug_4564   sq    %,5z"--E-4j4;&<s,C$C
fc*r+   c                     t        dd      }d |j                  _        |j                  ||      }t	        j
                  ||       |j                  J y )N20150101r   r   r   )r   _datar8   r"   r#   r$   )r%   r    r/   r1   s       r)   test_union_freq_both_nonez1TestDatetimeIndexSetOps.test_union_freq_both_none   sL    z26"t4
fh/{{"""r+   c                     t        dd      }|g d   }|g d   }|j                  J |j                  J |j                  |      }t        j                  ||       |j                  dk(  sJ y )Nz
2016-01-01r   r   )r   r   r=   r_   )   r=   r   r6   )r   r8   r"   r#   r$   )r%   dtirl   rm   r1   s        r)   test_union_freq_inferz-TestDatetimeIndexSetOps.test_union_freq_infer   ss     q1< Iyy   zz!!!E"
fc*{{c!!!r+   c                    t        ddd      }t        t        j                  j	                  d      j                  t        |            |      }t        ddd      }t        t        j                  j	                  d      j                  t        |            |      }t        ||d      }t        ddd      }t        j                  |j                  |       y )	Nz1/1/1999r^   MSrX   r{   z1/1/1980z	12/1/2001)s1s2)r   r
   nprandomdefault_rngstandard_normallenr   r#   r$   index)r%   rA   r   rE   r   dfrO   s          r)   test_union_dataframe_indexz2TestDatetimeIndexSetOps.test_union_dataframe_index   s    *jt<BII))!,<<SYGN*k=BII))!,<<SYGNb+,Zd;
bhh,r+   c                     t        t        j                  dddt        j                              }t	        ddd      }|j                  ||	       |j                  ||	       y )
Nr      r{   dtypez2012-01-03 00:00:00r   r6   )startr   r8   r   )r	   r   arangeint64r   r"   )r%   r    i1i2s       r)   test_union_with_DatetimeIndexz5TestDatetimeIndexSetOps.test_union_with_DatetimeIndex   sN    299QARXX673RcJ
$
$r+   c                     t        ddd      j                  d      }t        ddd      j                  d      }|j                  |      }t        ddd      j                  d      }t        j                  ||       y )NrU   r=   r   r   r3   msus)r   r@   r"   r#   r$   )r%   idx1idx2r1   r/   s        r)   (test_union_same_timezone_different_unitsz@TestDatetimeIndexSetOps.test_union_same_timezone_different_units   sk    ,e<DDTJ,e<DDTJD!lA%@HHN
fh/r+   c                 p   d}t        dd|      j                  d      }t        dd|      j                  d      }|j                  |j                  k(  sJ |j                  |j                  k7  sJ |j	                  |      }t        dd|      j                  d      }t        j                  ||       y N	UTC+05:00rU   r=   r   r   r7   )r   r@   r3   r   r"   r#   r$   )r%   r3   r   r   r1   r/   s         r)   0test_union_same_nonzero_timezone_different_unitszHTestDatetimeIndexSetOps.test_union_same_nonzero_timezone_different_units   s     ,b9AA$G,b9AA$G ww$''!!!zzTZZ''' D!lA"=EEdK
fh/r+   c                    d}t        dd|      j                  d      }t        dd|      j                  d      }|j                  |      }t        g d|      j                  d      }t	        j
                  ||       y )	Nr   rU   r=   r   r   rT   )rU   rV   rT   
2000-01-04z
2000-01-05r>   )r   r@   r"   r   r#   r$   )r%   r3   r   idx3r1   r/   s         r)   8test_union_different_dates_same_timezone_different_unitszPTestDatetimeIndexSetOps.test_union_different_dates_same_timezone_different_units   s{     ,b9AA$G,b9AA$G D! R
 '$- 	 	fh/r+   c                    d}t        dd|      j                  d      }t        dd|      j                  d      }|j                  |j                  k(  sJ |j                  |j                  k7  sJ |j	                  |      }t        dd|      }t        j                  ||       |j	                  |      }t        j                  ||j                  d             y r   )r   r@   r3   r   intersectionr#   r$   )r%   r3   r   r   r1   r/   result2s          r)   /test_intersection_same_timezone_different_unitszGTestDatetimeIndexSetOps.test_intersection_same_timezone_different_units   s     ,b9AA$G,b9AA$G ww$''!!!zzTZZ''' ""4(lA"=
fh/ ##D)
gx'7'7'=>r+   c                 r   d}t        dd|      j                  d      }t        dd|      j                  d      }|j                  |j                  k(  sJ |j                  |j                  k7  sJ |j	                  |      }t        ddg|	      j                  d      }t        j                  ||       y )
Nr   rU   r=   r   r   rV   r7   r   r>   )r   r@   r3   r   symmetric_differencer   r#   r$   )r%   r3   r   idx4r1   r/   s         r)   7test_symmetric_difference_same_timezone_different_unitszOTestDatetimeIndexSetOps.test_symmetric_difference_same_timezone_different_units   s     ,b9AA$G,b9AA$G ww$''!!!zzTZZ''' **40 ,!="EMMdS
fh/r+   c                    t        dd      }|dd  }|j                  |      }t        j                  ||       t        j
                  t        t        fD cg c]  } ||j                         }}|D ])  }|j                  |      }t        j                  ||       + t        g d      }|j                  |      }t        g t              }	t        j                  ||	       y c c}w )Nr   r   r   r   )abcr   )r   r   r#   r$   r   arrayr
   r?   r.   r	   object)
r%   r'   r(   	intersectklasscasesr0   r1   thirdr/   s
             r)   test_intersection2z*TestDatetimeIndexSetOps.test_intersection2  s    <4qr&&v.	
i0 57HHfd3KL%v}}%LL 	2D''-F!!&&1	2 o&##E*6*
fh/ Ms   C&)Nr   r   r   c                    t        ddddd      }t        ddddd      }t        ddddd      }t        dddd	d      }t        dddd d      }t        d
dddd      }t        g ddd      }	||f||f||	ffD ]G  \  }
}|j                  |
      }t        j                  ||       |j
                  |j
                  k(  rGJ  t        g d|d      j                  d      }t        g d|d      j                  d      }t        ddg|d      j                  d      }t        g d|d	      j                  d      }t        ddg|d       j                  d      }t        d
dd|dd      }t        g |d      j                  d      }	|	j
                  J ||f||f||	ffD ][  \  }
}|j                  |
|      }||j                         }t        j                  ||       |j
                  |j
                  k(  r[J  y )N6/1/2000z	6/30/2000r6   rZ   r7   )r8   namer9   z	5/15/2000z	6/20/2000rN   z7/1/2000z	7/31/2000M8[ns])r8   r   r   )z
2011-01-05
2011-01-04
2011-01-02z
2011-01-03)r3   r   )r   r   z
2011-02-02z
2011-02-03r   r   )r8   r3   r9   r   r   )r   r   r   r#   r$   r8   r@   rY   )r%   r3   r    baserE   rG   rI   rK   rng4	expected4rM   r/   r1   s                r)   test_intersectionz)TestDatetimeIndexSetOps.test_intersection"  s\   
 *k%dS +{5tTz;SuSWX	 +{7QUVz;StRVW	*k%dS!"3U(K	 999
 	0MC
 &&s+F!!&(3;;(--///	0 DRW

'$- 	 DRW

'$- 	 "<(Re

'$- 	 D
 '$-	 	
 "<(Rd

'$- 	
 #"4e
 ""%8@@F	~~%%% 999
 		0MC
 &&s&6F|#//1!!&(3;;(--///		0r+   r8   minBc                 b   |}t        dd||      }|dd j                  |      }t        |      dk(  sJ |j                  |j                  k(  sJ |j                  |dd       }t        |      dk(  sJ |j                  |j                  k(  sJ |dk7  }|d d j                  |dd        }t	        j
                  ||d d        |r|j                  |j                  k(  sJ |dd  j                  |d d       }t	        j
                  ||d d        |r|j                  |j                  k(  sJ y y )Nr   z	6/15/2000r8   r3   r   r   r=   )r   r   r   r8   r#   r$   )r%   tz_aware_fixturer8   r3   rM   r1   
check_freqs          r)   test_intersection_emptyz/TestDatetimeIndexSetOps.test_intersection_emptyf  s=    [tCQq&&s+6{a{{chh&&&!!#a(+6{a{{chh&&& U]
Ra%%c"#h/
fc"1g.;;#((*** RS&&s2Aw/
fc"1g.;;#((*** r+   c                     ddl m} t        ddd      }| |d      z   }|j                  |      }t	        |      dk(  sJ y )	Nr   rp   r^   r_   12hra   r   hours)rt   rq   r   r   r   )r%   rq   index_1index_2r1   s        r)   test_intersection_bug_1708z2TestDatetimeIndexSetOps.test_intersection_bug_1708  sD    %Z?JQ//%%g.6{ar+   c                    g d}t        ||      }t        ddd|      }t        ||      }t        ||      }t        ddd|      }t        |d d |      }	t        ||      }
t        g |      }t        ||      }|||f|||	f|
||ffD ]K  \  }}}|j                  ||      }|t        |      r|j	                         }t        j                  ||       M y )	N)z1/2/2000z1/3/2000r5   r;   z1/5/2000r>   r:   r6   r   )r8   r   r3   r;   r=   )r   r   
differencer   rY   r#   r$   )r%   r3   r    	rng_datesrA   rB   rC   rE   rF   rG   rI   rJ   rK   rM   rN   r/   result_diffs                    r)   test_differencez'TestDatetimeIndexSetOps.test_difference  s    P	Y2.JS!C!)3	Y2.JS!C!)BQ-B7	Y2.rb)!)3	 69%69%69%%
 		9 C
 ..5K|E
#//1!!+x8		9r+   c                    t        dddd      }t        dddd      }t        ddgdd 	      }|j                  ||      }t        j                  ||       t        j
                  d
||       t        dddd      }|j                  ||      }t        ddgdd	      }t        j                  ||       t        j
                  d
||       y )N2016092020160925r6   r7   )r8   r9   2016092120160924r   r   r8   r8   20160922)r   r   r   r#   r$   assert_attr_equal)r%   r    r   rN   r/   idx_diffs         r)   test_difference_freqz,TestDatetimeIndexSetOps.test_difference_freq  s     :z$G:z$G *j!9PTU##E40
h1
VXx8 :z$G##E40 *j!9PST
h1
VXx8r+   c                     t        dt        ddd      d      }t        dt        ddd      d      }t        |j                  ||            dk(  sJ y )	NzQE-JANi        d   )r8   r   r   b   r{   )r   r   r   r   )r%   r    dti1dti2s       r)   test_datetimeindex_diffz/TestDatetimeIndexSetOps.test_datetimeindex_diff  sN    xxb"/EsSxxb"/ErR4??4./1444r+   )Nr   r   c                    t        ddd|      }|d d j                  |dd       }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |d d j                  |dd       }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |d d j                  |dd       }|j                  |j                  k(  sJ |j                  J |j                  |j                  k(  sJ |d d j                  |d	d
       }|j                  |j                  k(  sJ |j                  dk(  sJ |j                  |j                  k(  sJ t        t        |d	d
       d      }|d d j                  |      }|j                  J |j                  |j                  k(  sJ |j                  |j                  k(  sJ |d d j                  |      }|j                  J |j                  |j                  k(  sJ |j                  |j                  k(  sJ y )Nr5   z1/1/2002rZ   )r   r3   2   r      <      K   r6   rN   r   )	r   r"   r   r8   r3   r   freqstrr   r?   )r%   r3   rM   r1   nofreqs        r)   test_setops_preserve_freqz1TestDatetimeIndexSetOps.test_setops_preserve_freq  s3   ZeCSbBs,{{chh&&&{{chh&&&yyCFF"""SbBs,{{chh&&&{{chh&&&yyCFF"""SbBs,{{chh&&&{{"""yyCFF"""Sb&&s2bz2{{chh&&&~~$$$yyCFF"""tC2J/g>Sb'{{"""{{chh&&&yyCFF"""Sb&&v.{{"""{{chh&&&yyCFF"""r+   c                     t        g dd      }|d d d   j                  |dd d         }|d d }t        j                  ||       y )N)z
2018-12-31z
2019-03-31z
2019-06-30z
2019-09-30z
2019-12-31z
2020-03-31zQE-DECrX   r{   r   r   )r   r   r#   r$   )r%   r|   r1   r/   s       r)   &test_intersection_non_tick_no_fastpathz>TestDatetimeIndexSetOps.test_intersection_non_tick_no_fastpath  sU     

 SqS&&s14a4y1r7
fh/r+   c                     t        dddd      }|dd d d d   }|d	d
 d d d   }|j                  |j                  k(  sJ |j                  |      }|j                  |j                  k(  sJ y )Nz1/1/2011r   hutcr   r8   r3   r   Z   r   P   )r   r3   r   )r%   rM   rl   rm   r1   s        r)   test_dti_intersectionz-TestDatetimeIndexSetOps.test_dti_intersection  sv    SsuE2bz$B$Br
4R4 ww#&&   ""5)yyDGG###r+   setop)r"   r   r   c                    t        dddd      }t        dddd      } t        ||      |      }|j                  d      }|j                  d      } t        ||      |      }t        j                  ||       |j
                  |j
                  k(  sJ t        |      rC|d	   j
                  t        j                  u sJ |d
   j
                  t        j                  u sJ y y )Nz2012-11-15 00:00:00   r   z
US/Centralr   z2012-11-15 12:00:00r   r   r   r   )	r   getattr
tz_convertr#   r$   r3   r   r   r   )r%   r   rM   rE   r1   rl   rm   r/   s           r)   test_dti_setop_awarez,TestDatetimeIndexSetOps.test_dti_setop_aware  s     .U/V$e$T*~~e$&'74'.
fh/yyDGG###v;!9<<8<<///":==HLL000 r+   c           	         t        t        d      t        j                  g      }t        ddgd      }t        rt
        nd }t        j                  |d      5  |j                  |      }d d d        t        t        d      t        j                  t        dd      t        dd      gt              }t        j                  |       y # 1 sw Y   bxY w)	Nz
2011-01-01z
2012-01-01z
2012-01-02r   r>   zsort order is undefined)matchr   )r   r   pdNaTr   RuntimeWarningr#   assert_produces_warningr"   r	   r   r$   )r%   rM   rE   warnr1   r/   s         r)   test_dti_union_mixedz,TestDatetimeIndexSetOps.test_dti_union_mixed  s    Y|4bff=>lL9lK "2~t''4MN 	%YYt_F	%,',<8,<8	 
 	fh/	% 	%s   CCN)'__name__
__module____qualname__r3   r*   pytestmarkparametrizer   r   r
   r?   r2   rR   r\   rf   rn   ru   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r)   r   r   "   s   
B1 [[URXXvt$<=	0 >	0 [[T2&C 'C<+
++.+#"	- 00 0?(0"0" [[G=0=0B [[VeS\2+ 3+6  [[T2&9 '949$5
 [[T#EF # G #D0"$ [[W&WX1 Y1$0r+   r   c                       e Zd Zd Zd Zd Zd Zd Zd Ze	j                  d        Zej                  j                  dd	d
g      d        Zy
)TestBusinessDatetimeIndexc                    t        t        t              }|d d }|dd }|j                  ||      }t	        |t
              sJ |d d }|dd  }|j                  ||      }t	        |t              sJ |d d }|dd }|j                  ||      }t	        |t
              sJ |(t        j                  |j                  ||      |       nGt        t        |      t        |      z         }t        j                  |j                  ||      |       t        t        t        t                     }|j                  ||      }t	        |t
              sJ y )Nr   r   r   rX   )r   STARTENDr"   
isinstancer   r	   r#   r$   r?   r   r   )r%   r    rM   rl   rm   	the_unionr/   s          r)   rR   z$TestBusinessDatetimeIndex.test_union%  sF   %%3BxAb	JJu4J0	)]333 2AwBCJJu4J0	)U+++ 2AwAb	JJu4J0	)]333 <!!%++d+">	J$T%[4:%=>H!!%++d+">I )+6IIcI-	)]333r+   c                    t        ddt                     }|dd  }|d d }|j                  ||      }|t        j                  ||       n<t        t        |dd        t        |d d       z         }t        j                  ||       |dd  }|dd }|j                  ||      }|dd  }t        j                  ||       y )	Nr5   r   ra   r   r   r   rr   #   )r   r   r"   r#   r$   r   r?   )r%   r    rM   rA   rE   r  r/   s          r)   test_union_not_cacheablez2TestBusinessDatetimeIndex.test_union_not_cacheableI  s    Rfh?23x3BxJJt$J/	<!!)S1$T#bc(^d3s8n%DEH!!)X623x2bzJJt$J/	rs8
i2r+   c                    t        ddt               d      }|dd  }|d d }|j                  |      }|dd }t        j                  ||       t        |t              sJ |j                  |j                  k(  sJ |j                  |      }t        j                  ||       |d d j                  |dd        }t        g       j                  d      }t        j                  ||       y )Nr5   r   r7   )r   r8   r9   r   r   )	r   r   r   r#   r$   r  r   r8   r@   )r%   rM   rA   rE   the_intr/   s         r)   r   z+TestBusinessDatetimeIndex.test_intersectionZ  s    RfhTJ23x3Bx##D)r":
gx0'=111||sxx'''##D)
gx0 cr(''BC1 $,,T2
gx0r+   c                     t        dd      }t        dd      }|j                  |      }t        j                  ||       |j                  |j                  k(  sJ y )N
11/30/2011
12/31/2011
12/10/2011
12/20/2011r   r   r#   r$   r8   r%   r   r   r1   s       r)   test_intersection_bugz/TestBusinessDatetimeIndex.test_intersection_bugl  sN    l3l3"
fa({{aff$$$r+   c                     t        d      t        d      g}t        |d      }|j                  |      }t        j                  ||       y )Nr   z
2020-02-01r   r   )r   r   r   r#   r$   )r%   r.   rZ   ress       r)   test_intersection_listz0TestBusinessDatetimeIndex.test_intersection_listt  sD     L)9\+BCF-v&
c3'r+   c                 :   t        j                  d      }|j                  d      }t        ddd      }t        ddd      }t        ddd      }t        ddd      }t	        |||t                     }t	        |||t                     }	|j                  |	|       y )	Npytzr     r   r=   r   r   endr3   r8   r   )r  importorskipr   r   r   r   r"   )
r%   r    r'  r3   early_start	early_end
late_startlate_endearly_drlate_drs
             r)   test_month_range_union_tz_pytzz8TestBusinessDatetimeIndex.test_month_range_union_tz_pytz|  s    ""6*]]<(tQ*T1a(	dAq)
D!Q'KY2HJW:8TwT*r+   c                 
   ddl m}  |d      }t        ddd      }t        ddd      }t        ddd      }t        ddd      }t        |||t	                     }t        |||t	                     }	|j                  |	|	       y )
Nr   )dateutil_gettzr   r(  r   r=   r   r)  r   )pandas._libs.tslibs.timezonesr4  r   r   r   r"   )
r%   r    r4  r3   r,  r-  r.  r/  r0  r1  s
             r)   "test_month_range_union_tz_dateutilz<TestBusinessDatetimeIndex.test_month_range_union_tz_dateutil  s{    @L)tQ*T1a(	dAq)
D!Q'KY2HJW:8TwT*r+   r    FNc                     t        t        d      t        d      t        d      g      }|j                  ||      }t        t        d      t        d      g      }t        j                  ||       y )Nz
2019-12-13z
2019-12-12r   )r	   r   r   r#   r$   )r%   r    r   r1   r/   s        r)   test_intersection_duplicatesz6TestBusinessDatetimeIndex.test_intersection_duplicates  sk     ,',','
 ""4d"3)L19\3JKL
fh/r+   )r  r	  r
  rR   r  r   r"  r%  r2  tdskip_if_windowsr6  r  r  r  r8  r  r+   r)   r  r  $  sd    "4H3"1$%(+ + +  [[VeT]30 40r+   r  c                   ~    e Zd Zd Zd Zej                  j                  dddd e e	d            g      d	        Z
y)
TestCustomDatetimeIndexc                     t        t        t        d      }|d d }|dd }|j                  ||      }t	        |t
              sJ |d d }|dd  }|j                  ||      }t	        |t              sJ |d d }|dd }|j                  ||      }t	        |t
              sJ |'t        j                  |j                  ||      |       t        t        t        t                     }|j                  ||      }t	        |t
              sJ y )NCrX   r   r   r   )r   r  r  r"   r  r   r	   r#   r$   r   r   )r%   r    rM   rl   rm   r  s         r)   rR   z"TestCustomDatetimeIndex.test_union  s   %3/3BxAb	JJu4J0	)]333 2AwBCJJud+	)U+++ 2AwAb	JJu4J0	)]333 <!!%++d+">	J )+6IIcI-	)]333r+   c                     t        ddd      }t        ddd      }|j                  |      }t        j                  ||       |j                  |j                  k(  sJ y )Nr  r  r>  rX   r  r  r   r!  s       r)   r"  z-TestCustomDatetimeIndex.test_intersection_bug  sR    l=l="
fa({{aff$$$r+   r3   Nr   zEurope/Berlinr   r   c                 T   t        ddd|      }t        ddd|      }|j                  |      }t        ddd|      }t        j                  ||       t        dddd	      }t        d
ddd	      }|j	                  |      }t        dddd	      }t        j                  ||       y )Nz
2020-03-27r   r6   r   z
2020-03-30r{   z
2021-10-28r=   zEurope/Londonz
2021-10-30r_   r   )r   r   r#   r$   r"   )r%   r3   r   r   r1   r/   index1index2s           r)    test_intersection_dst_transitionz8TestCustomDatetimeIndex.test_intersection_dst_transition  s    
 ,C,C""4(lACBG
fh/ L!#/RL!#/Rf%lACOT
fh/r+   )r  r	  r
  rR   r"  r  r  r  r   r   rC  r  r+   r)   r<  r<    sH    4B% [[tUOXib6I-JK00r+   r<  c                      t        ddgddd      } t        dgddd      }| j                  |      }t        g dddd      }t        j                  ||       y )	N
2024-05-11
2024-05-12zdatetime64[us]Dater6   )r   r   r8   
2024-05-13)rE  rF  rH  )r   r"   r#   r$   l1l2r1   r/   s       r)   test_union_non_nano_rangelikerL    sg    		|$,<6PS
B 
~-=FQT	UBXXb\F2	H &(+r+   c                      t        ddd      } t        ddd      }| j                  |      }t        ddgdd	      }t        j                  ||       y )
Nz
2024-01-01z
2024-01-03s)r9   z
2024-01-02z
2024-01-04zdatetime64[s]r6   r   )r   r   r   r#   r$   rI  s       r)   $test_intersection_non_nano_rangelikerO    sV    	L,S	9B	L,S	9B__R F	|$H
 &(+r+   c                      t        dddd      } t        dddd      }| j                  |      }t        dddd      }t        j                  ||       y )Nz
2025-10-25z
2025-10-26r6   zEurope/Helsinkir   z
2025-10-28r!   )rA  rB  r1   r/   s       r)   test_union_across_dst_boundaryrQ    sU     lARSFlARSF\\&!F,3CTUH&(+r+   )$r   r   r   numpyr   r  pandas.compat.numpyr   pandas.util._test_decoratorsutil_test_decoratorsr9  rt   r  r   r   r	   r
   r   r   r   pandas._testing_testingr#   pandas.tseries.offsetsr   r   r   r  r  r   r  r<  rL  rO  rQ  r  r+   r)   <module>rZ     s       0 ) )      dAq!8D!Q#7
s0 0DD0 D0N:0 :0z, 
,,r+   