
    .im                         d dl m Z mZmZ d dlZd dl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)	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         h/var/www/app/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_union33   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   r2   unit1/6/2000r   1/4/2000      r2   r   )r   r   listas_unitr!   r"   r#   )r$   r2   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r7   r   r   )r   sort_valuesr!   r"   r#   r7   )r$   r   idxorderedr0   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   r7   4hr   r   )r   r!   r>   r   sortedr"   r#   )r$   r   rng_arng_br0   rN   s         r(   test_union_bug_1730z+TestDatetimeIndexSetOps.test_union_bug_1730h   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   )rg   rh   ri   rj   )r   r!   rX   r"   r#   )r$   r   leftrightr0   rN   s         r(   test_union_bug_1745z+TestDatetimeIndexSetOps.test_union_bug_1745t   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   )	pandasrp   r   r!   r>   r   rb   r"   r#   )r$   r   rp   rk   rl   r0   rN   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   _datar7   r!   r"   r#   )r$   r   r.   r0   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   r5   )r   r7   r!   r"   r#   )r$   dtirk   rl   r0   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]   MSrW   rz   z1/1/1980z	12/1/2001)s1s2)r   r	   nprandomdefault_rngstandard_normallenr   r"   r#   index)r$   r@   r   rD   r   dfrN   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      rz   dtypez2012-01-03 00:00:00r   r5   )startr   r7   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 )NrT   r<   r   r   r2   msus)r   r?   r!   r"   r#   )r$   idx1idx2r0   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:00rT   r<   r   r   r6   )r   r?   r2   r   r!   r"   r#   )r$   r2   r   r   r0   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   rT   r<   r   r   rS   )rT   rU   rS   
2000-01-04z
2000-01-05r=   )r   r?   r!   r   r"   r#   )r$   r2   r   idx3r0   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?   r2   r   intersectionr"   r#   )r$   r2   r   r   r0   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   rT   r<   r   r   rU   r6   r   r=   )r   r?   r2   r   symmetric_differencer   r"   r#   )r$   r2   r   idx4r0   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casesr/   r0   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/2000r5   rY   r6   )r7   namer8   z	5/15/2000z	6/20/2000rM   z7/1/2000z	7/31/2000M8[ns])r7   r   r   )z
2011-01-05
2011-01-04
2011-01-02z
2011-01-03)r2   r   )r   r   z
2011-02-02z
2011-02-03r   r   )r7   r2   r8   r   r   )r   r   r   r"   r#   r7   r?   rX   )r$   r2   r   baserD   rF   rH   rJ   rng4	expected4rL   r.   r0   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*   r7   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r7   r2   r   r   r<   )r   r   r   r7   r"   r#   )r$   tz_aware_fixturer7   r2   rL   r0   
check_freqs          r(   test_intersection_emptyz/TestDatetimeIndexSetOps.test_intersection_emptye  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   ro   r]   r^   12hr`   r   hours)rs   rp   r   r   r   )r$   rp   index_1index_2r0   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/2000r4   r:   z1/5/2000r=   r9   r5   r   )r7   r   r2   r:   r<   )r   r   
differencer   rX   r"   r#   )r$   r2   r   	rng_datesr@   rA   rB   rD   rE   rF   rH   rI   rJ   rL   rM   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20160925r5   r6   )r7   r8   2016092120160924r   r   r7   r7   20160922)r   r   r   r"   r#   assert_attr_equal)r$   r   r   rM   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   )r7   r   r   b   rz   )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 )Nr4   z1/1/2002rY   )r   r2   2   r      <      K   r5   rM   r   )	r   r!   r   r7   r2   r   freqstrr   r>   )r$   r2   rL   r0   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-DECrW   rz   r   r   )r   r   r"   r#   )r$   r{   r0   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   r7   r2   r   Z   r   P   )r   r2   r   )r$   rL   rk   rl   r0   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#   r2   r   r   r   )r$   r   rL   rD   r0   rk   rl   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      }|j	                  |      }t        t        d      t        j                  t        dd      t        dd      gt              }t        j                  ||       y )Nz
2011-01-01z
2012-01-01z
2012-01-02r   r=   r   )	r   r
   pdNaTr!   r   r   r"   r#   )r$   rL   rD   r0   r.   s        r(   test_dti_union_mixedz,TestDatetimeIndexSetOps.test_dti_union_mixed  s    Y|4bff=>lL9lK4,',<8,<8	 
 	fh/r*   N)'__name__
__module____qualname__r2   r)   pytestmarkparametrizer   r   r	   r>   r1   rQ   r[   re   rm   rt   rx   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   rW   )r   STARTENDr!   
isinstancer   r   r"   r#   r>   r   r   )r$   r   rL   rk   rl   	the_unionr.   s          r(   rQ   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 )	Nr4   r   r`   r   r   r   rq   #   )r   r   r!   r"   r#   r   r>   )r$   r   rL   r@   rD   r  r.   s          r(   test_union_not_cacheablez2TestBusinessDatetimeIndex.test_union_not_cacheableD  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 )Nr4   r   r6   )r   r7   r8   r   r   )	r   r   r   r"   r#   r  r   r7   r?   )r$   rL   r@   rD   the_intr.   s         r(   r   z+TestBusinessDatetimeIndex.test_intersectionU  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#   r7   r$   r   r   r0   s       r(   test_intersection_bugz/TestBusinessDatetimeIndex.test_intersection_bugg  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-   rY   ress       r(   test_intersection_listz0TestBusinessDatetimeIndex.test_intersection_listo  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   endr2   r7   r   )r  importorskipr   r   r   r   r!   )
r$   r   r"  r2   early_start	early_end
late_startlate_endearly_drlate_drs
             r(   test_month_range_union_tz_pytzz8TestBusinessDatetimeIndex.test_month_range_union_tz_pytzw  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.timezonesr/  r   r   r   r!   )
r$   r   r/  r2   r'  r(  r)  r*  r+  r,  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   r0   r.   s        r(   test_intersection_duplicatesz6TestBusinessDatetimeIndex.test_intersection_duplicates  sk     ,',','
 ""4d"3)L19\3JKL
fh/r*   )r  r  r  rQ   r  r   r  r   r-  tdskip_if_windowsr1  r  r  r  r3  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CrW   r   r   r   )r   r  r  r!   r  r   r   r"   r#   r   r   )r$   r   rL   rk   rl   r  s         r(   rQ   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  r9  rW   r  r  r  r  s       r(   r  z-TestCustomDatetimeIndex.test_intersection_bug  sR    l=l="
fa({{aff$$$r*   r2   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   r5   r   z
2020-03-30rz   z
2021-10-28r<   zEurope/Londonz
2021-10-30r^   r   )r   r   r"   r#   r!   )r$   r2   r   r   r0   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  rQ   r  r  r  r  r   r   r>  r	  r*   r(   r7  r7    sH    4B% [[tUOXib6I-JK00r*   r7  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]Dater5   )r   r   r7   
2024-05-13)r@  rA  rC  )r   r!   r"   r#   l1l2r0   r.   s       r(   test_union_non_nano_rangelikerG    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)r8   z
2024-01-02z
2024-01-04zdatetime64[s]r5   r   )r   r   r   r"   r#   rD  s       r(   $test_intersection_non_nano_rangelikerJ    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-26r5   zEurope/Helsinkir   z
2025-10-28r    )r<  r=  r0   r.   s       r(   test_union_across_dst_boundaryrL     sU     lARSFlARSF\\&!F,3CTUH&(+r*   )"r   r   r   numpyr   r  pandas.util._test_decoratorsutil_test_decoratorsr4  rs   r   r   r   r   r	   r
   r   r   pandas._testing_testingr"   pandas.tseries.offsetsr   r   r   r  r  r   r  r7  rG  rJ  rL  r	  r*   r(   <module>rT     s       ) )      dAq!8D!Q#7
s{0 {0|D0 D0N:0 :0z, 
,,r*   