
    Owg\                         d dl m Z mZ d dl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y)    )datetime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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         a/var/www/horilla/myenv/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|      }t        ddd|      }t        ddd|      }t        t        |      t        |      z         }t        ddd|      }t        ddd|      }t        ddd|      }	t        t        |      t        |d d	       z         }
t        ddd|      }t        g |
      j                  d      }t        ddd|      }|}||||f|||	|
f||||ffD ]r  \  }}}}|j	                  ||      }t        j                  ||       |j	                  ||      }|t        j                  ||       ]t        j                  ||       t y )N1/1/2000Dr   freqr   r0   1/6/2000r   1/4/2000      r0   nsr   )r   r   listas_unitr   r    r!   )r"   r0   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?   su   *3bAJS!CzRBG	+DL4:,EF*3bAJS!CzQ2F	+DL4Ra>,IJ*3bArb)11$7zQ2F	" 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)z
2000-01-03
2000-01-01z
2000-01-02inferr5   r   r   )r   sort_valuesr   r    r!   r5   )r"   r   idxorderedr.   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   r5   4hr   r   )r   r   r<   r   sortedr    r!   )r"   r   rng_arng_br.   rL   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   )rc   rd   re   rf   )r   r   rT   r    r!   )r"   r   leftrightr.   rL   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   )	pandasrl   r   r   r<   r   r^   r    r!   )r"   r   rl   rg   rh   r.   rL   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
   _datar5   r   r    r!   )r"   r   r,   r.   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   r9   rZ   )   r9   r   r3   )r   r5   r   r    r!   )r"   dtirg   rh   r.   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/1999rY   MSrS   rv   z1/1/1980z	12/1/2001)s1s2)r   r   nprandomdefault_rngstandard_normallenr   r    r!   index)r"   r>   r{   rB   r|   dfrL   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      rv   dtypez2012-01-03 00:00:00r   r3   )startr   r5   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 )NrQ   r9   r   )r   r0   msus)r   r=   r   r    r!   )r"   idx1idx2r.   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                    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   intersectionr    r!   r}   arrayr   r<   r+   r   object)
r"   r$   r%   	intersectklasscasesr-   r.   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      }t        dddd      }t        dddd      }t        dddd      }t        dddd       }t        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      }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/2000r3   rU   )r5   namez	5/15/2000z	6/20/2000rK   z7/1/2000z	7/31/2000M8[ns])r5   r   r   )z
2011-01-05
2011-01-04
2011-01-02z
2011-01-03)r0   r   r;   )r   r   z
2011-02-02z
2011-02-03r   r   )r5   r0   r   r   )r   r   r   r    r!   r5   r=   rT   )r"   r0   r   baserB   rD   rF   rH   rng4	expected4rJ   r,   r.   s                r&   test_intersectionz)TestDatetimeIndexSetOps.test_intersection   sF   
 *k%H +{5Iz;SuM	 +{7Kz;StL	*k%H!"3U(K	 999
 	0MC
 &&s+F!!&(3;;(--///	0 DRW

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

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

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

'$- 	
 *kO!"%8@@F	~~%%% 999
 		0MC
 &&s&6F|#//1!!&(3;;(--///		0r(   r5   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)r5   r0   r   r   r9   )r   r   r   r5   r    r!   )r"   tz_aware_fixturer5   r0   rJ   r.   
check_freqs          r&   test_intersection_emptyz/TestDatetimeIndexSetOps.test_intersection_empty   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   rk   rY   rZ   12hr\   r   )hours)ro   rl   r   r   r   )r"   rl   index_1index_2r.   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/2000r2   r7   z1/5/2000r:   r6   r3   r   r4   r7   r9   )r   r   
differencer   rT   r    r!   )r"   r0   r   	rng_datesr>   r?   r@   rB   rC   rD   rF   rG   rH   rJ   rK   r,   result_diffs                    r&   test_differencez'TestDatetimeIndexSetOps.test_differenceE  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      }t        ddd      }t        ddgdd       }|j                  ||      }t        j                  ||       t        j
                  d	||       t        d
dd      }|j                  ||      }t        ddgdd      }t        j                  ||       t        j
                  d	||       y )N2016092020160925r3   rS   2016092120160924r   )r   r5   r5   20160922)r   r   r   r    r!   assert_attr_equal)r"   r   r   rK   r,   idx_diffs         r&   test_difference_freqz,TestDatetimeIndexSetOps.test_difference_freq`  s     :z<:z< *j!9PTU##E40
h1
VXx8 :z<##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   )r5   r   r   b   rv   )r   r   r   r   )r"   r   dti1dti2s       r&   test_datetimeindex_diffz/TestDatetimeIndexSetOps.test_datetimeindex_diffr  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 )Nr2   z1/1/2002rU   )r   r0   2   r      <      K   r3   rK   r   )	r   r   r   r5   r0   r   freqstrr   r<   )r"   r0   rJ   r.   nofreqs        r&   test_setops_preserve_freqz1TestDatetimeIndexSetOps.test_setops_preserve_freqw  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-DECrS   rv   r   r   )r   r   r    r!   )r"   rw   r.   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   r5   r0   r   Z   r   P   )r   r0   r   )r"   rJ   rg   rh   r.   s        r&   test_dti_intersectionz-TestDatetimeIndexSetOps.test_dti_intersection  sv    SsuE2bz$B$Br
4R4 ww#&&   ""5)yyDGG###r(   setop)r   r   symmetric_differencec                    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!   r0   r   r   r   )r"   r   rJ   rB   r.   rg   rh   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"   rJ   rB   r.   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__r0   r'   pytestmarkparametrizer}   r   r   r<   r/   rO   rW   ra   ri   rp   rt   rx   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" [[G;0;0~ [[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   rS   )r
   STARTENDr   
isinstancer   r   r    r!   r<   r   r   )r"   r   rJ   rg   rh   	the_unionr,   s          r&   rO   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 )	Nr2   r   r\   r   r   r   rm   #   )r   r   r   r    r!   r   r<   )r"   r   rJ   r>   rB   r   r,   s          r&   test_union_not_cacheablez2TestBusinessDatetimeIndex.test_union_not_cacheable  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 }|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 )Nr2   r   r\   r   r   r;   )	r   r   r   r    r!   r   r   r5   r=   )r"   rJ   r>   rB   the_intr,   s         r&   r   z+TestBusinessDatetimeIndex.test_intersection  s    Rfh?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!   r5   r"   r   r   r.   s       r&   test_intersection_bugz/TestBusinessDatetimeIndex.test_intersection_bug"  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+   rU   ress       r&   test_intersection_listz0TestBusinessDatetimeIndex.test_intersection_list*  sD     L)9\+BCF-v&
c3'r(   c                    t        j                  d      }t        ddd      }t        ddd      }t        ddd      }t        ddd      }t        |||t	                     }t        |||t	                     }|j                  ||       y )Nr     r   r9   r   r   endr0   r5   r   )pytzr   r   r   r   r   )	r"   r   r0   early_start	early_end
late_startlate_endearly_drlate_drs	            r&   test_month_range_union_tz_pytzz8TestBusinessDatetimeIndex.test_month_range_union_tz_pytz2  s|    ]]<(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   r9   r   r  r   )pandas._libs.tslibs.timezonesr  r   r   r   r   )
r"   r   r  r0   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   r.   r,   s        r&   test_intersection_duplicatesz6TestBusinessDatetimeIndex.test_intersection_duplicatesQ  sk     ,',','
 ""4d"3)L19\3JKL
fh/r(   )r   r   r   rO   r   r   r  r
  r  tdskip_if_windowsr  r   r   r   r  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j                  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CrS   r   r   r   )r
   r   r   r   r   r   r   r    r!   r   r   )r"   r   rJ   rg   rh   r   s         r&   rO   z"TestCustomDatetimeIndex.test_uniona  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"  rS   r  r  r  r  s       r&   r  z-TestCustomDatetimeIndex.test_intersection_bug  sR    l=l="
fa({{aff$$$r(   r0   Nr   zEurope/Berlinic                 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   r3   r   z
2020-03-30rv   z
2021-10-28r9   zEurope/Londonz
2021-10-30rZ   r   )r   r   r    r!   r   )r"   r0   r   r   r.   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   rO   r  r   r   r   r  FixedOffsetr'  r   r(   r&   r   r   `  sL    4B% [[tUO-=T-=-=c-BC00r(   r   )r   r   numpyr}   r   r  pandas.util._test_decoratorsutil_test_decoratorsr  ro   r   r   r   r   r   r	   r
   r   pandas._testing_testingr    pandas.tseries.offsetsr   r   r   r   r   r   r   r   r   r(   r&   <module>r0     s   
    ) )      dAq!8D!Q#7
sv0 v0rC0 C0L:0 :0r(   