o
    _~#g\                     @   s   d dl m Z mZ d dlZd dlZd dlZd dlm  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ZZG dd	 d	ZG d
d dZG dd dZdS )    )datetimetimezoneN)	DataFrameDatetimeIndexIndexSeries	Timestampbdate_range
date_range)	BMonthEndMinuteMonthEndi     i  c                   @   sN  e Zd Zg dZdd Zejdej	e
egdd Zejdedd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejdg ddd  Zejd!d"d#gd$d% Zd&d' Zejded(d) Zd*d+ Zd,d- Zejdg d.d/d0 Zd1d2 Zd3d4 Z ejd5g d6d7d8 Z!d9d: Z"d;S )<TestDatetimeIndexSetOps)NUTC
Asia/Tokyo
US/Easternzdateutil/Asia/Singaporedateutil/US/Pacificc                 C   sB   t ddd}|d d }|dd  }|j||d}t|| d S N
2020-01-01
   periods   sort)r
   uniontmassert_index_equal)selfr   
everythingfirstsecondr    r#   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/indexes/datetimes/test_setops.pytest_union2,   s
   z#TestDatetimeIndexSetOps.test_union2boxc           	      C   sZ   t ddd}|d d }|dd  }|j||d}||j}|j||d}t|| d S r   )r
   r   valuesr   r   )	r   r   r&   r    r!   r"   expectedcaseresultr#   r#   r$   test_union33   s   
z#TestDatetimeIndexSetOps.test_union3tzc                 C   sD  t ddd|d}t ddd|d}t ddd|d}tt|t| }t ddd|d}t ddd|d}t ddd|d}	tt|t|d d	  }
t ddd|d}tg |d
d}t ddd|d}|}||||f|||	|
f||||ffD ]+\}}}}|j||d}t|| |j||d}|d u rt|| qtt|| qtd S )N1/1/2000Dr   freqr   r,   1/6/2000r   1/4/2000      r,   nsr   )r
   r   listas_unitr   r   r   )r   r,   r   rng1other1	expected1expected1_notsortedrng2other2	expected2expected2_notsortedrng3other3	expected3expected3_notsortedrngotherexpexp_notsortedresult_unionr#   r#   r$   
test_union?   s.   


z"TestDatetimeIndexSetOps.test_unionc                 C   sl   t g d}t | dd}|j||d}t|| |d d j||d}t|| |j|jks4J d S )N)z
2000-01-03
2000-01-01z
2000-01-02inferr0   r   r   )r   sort_valuesr   r   r   r0   )r   r   idxorderedr*   r#   r#   r$   test_union_coverage^   s   z+TestDatetimeIndexSetOps.test_union_coveragec                 C   sp   t dddd}t dddd}|j||d}t|t|dd   }|d u r,tt|}nt|}t|| d S )N1/1/2012   3hr   r0   4hr   r   )r
   r   r7   r   sortedr   r   )r   r   rng_arng_br*   rG   r#   r#   r$   test_union_bug_1730h   s   z+TestDatetimeIndexSetOps.test_union_bug_1730c                 C   sP   t dg}t g d}|j||d}t g d}|d u r | }t|| d S )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   )r[   r\   r]   r^   )r   r   rN   r   r   )r   r   leftrightr*   rG   r#   r#   r$   test_union_bug_1745t   s   
z+TestDatetimeIndexSetOps.test_union_bug_1745c                 C   sp   ddl m} tdd}||dd }|j||d}t|t| }|d u r,tt|}nt|}t|| d S )Nr   
DateOffsetz
2013-01-01z
2013-02-01   )minutesr   )	pandasrc   r
   r   r7   r   rW   r   r   )r   r   rc   r_   r`   r*   rG   r#   r#   r$   test_union_bug_4564   s   
z+TestDatetimeIndexSetOps.test_union_bug_4564c                 C   s@   t ddd}d |j_|j||d}t|| |jd u sJ d S )N20150101r   r   r   )r	   _datar0   r   r   r   )r   r   r(   r*   r#   r#   r$   test_union_freq_both_none   s
   z1TestDatetimeIndexSetOps.test_union_freq_both_nonec                 C   sh   t ddd}|g d }|g d }|jd u sJ |jd u s J ||}t|| |jdks2J d S )Nz
2016-01-01r   r   )r   r   r4   rS   )   r4   r   r.   )r
   r0   r   r   r   )r   dtir_   r`   r*   r#   r#   r$   test_union_freq_infer   s   
z-TestDatetimeIndexSetOps.test_union_freq_inferc                 C   s   t dddd}ttjdt||}t dddd}ttjdt||}t||d}t dddd}t	|j
| d S )	Nz1/1/1999rR   MSrM   rk   z1/1/1980z	12/1/2001)s1s2)r
   r   nprandomdefault_rngstandard_normallenr   r   r   index)r   r9   ro   r=   rp   dfrG   r#   r#   r$   test_union_dataframe_index   s   z2TestDatetimeIndexSetOps.test_union_dataframe_indexc                 C   sF   t tjdddtjd}tdddd}|j||d	 |j||d	 d S )
Nr      rk   dtypez2012-01-03 00:00:00r   r.   )startr   r0   r   )r   rq   arangeint64r
   r   )r   r   i1i2r#   r#   r$   test_union_with_DatetimeIndex   s   z5TestDatetimeIndexSetOps.test_union_with_DatetimeIndexc                 C   sV   t ddddd}t ddddd}||}t ddddd}t|| d S )NrK   r4   r   )r   r,   msus)r
   r8   r   r   r   )r   idx1idx2r*   r(   r#   r#   r$   (test_union_same_timezone_different_units   s
   
z@TestDatetimeIndexSetOps.test_union_same_timezone_different_unitsc                    s   t ddd}|dd   | }t|   fddtjttfD }|D ]}||}t|  q&tg d}||}tg t	d}t|| d S )	Nr   r   r   r   c                    s   g | ]}| j qS r#   )r'   ).0klassr"   r#   r$   
<listcomp>   s    z>TestDatetimeIndexSetOps.test_intersection2.<locals>.<listcomp>)abcrz   )
r
   intersectionr   r   rq   arrayr   r7   r   object)r   r!   	intersectcasesr)   r*   thirdr(   r#   r   r$   test_intersection2   s   


z*TestDatetimeIndexSetOps.test_intersection2)Nr   r   r   c                 C   s  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d}	||f||f||	ffD ]\}
}||
}t|| |j|jksZJ qCtg d|ddd}tg d|ddd}tddg|ddd}tg d|ddd}tddg|d dd}t d	d
d|dd}tg |ddd}	|	jd u sJ ||f||f||	ffD ]!\}
}|j|
|d}|d u r| }t|| |j|jksJ qd S )N6/1/2000z	6/30/2000r.   rO   )r0   namez	5/15/2000z	6/20/2000rF   z7/1/2000z	7/31/2000M8[ns])r0   r   r{   )z
2011-01-05
2011-01-04
2011-01-02z
2011-01-03)r,   r   r6   )r   r   z
2011-02-02z
2011-02-03r   r   )r0   r,   r   r   )r
   r   r   r   r   r0   r8   rN   )r   r,   r   baser=   r?   rA   rC   rng4	expected4rE   r(   r*   r#   r#   r$   test_intersection   sl   




z)TestDatetimeIndexSetOps.test_intersectionr0   minBc                 C   s  |}t dd||d}|dd |}t|dksJ |j|jks#J ||dd }t|dks4J |j|jks<J |dk}|d d |dd  }t||d d  |ra|j|jksaJ |dd  |d d }t||d d  |r|j|jksJ d S d S )Nr   z	6/15/2000)r0   r,   r   r   r4   )r
   r   ru   r0   r   r   )r   tz_aware_fixturer0   r,   rE   r*   
check_freqr#   r#   r$   test_intersection_empty   s&   z/TestDatetimeIndexSetOps.test_intersection_emptyc                 C   sF   ddl m} tdddd}||dd }||}t|dks!J d S )	Nr   rb   rR   rS   12hrU   r   )hours)rf   rc   r
   r   ru   )r   rc   index_1index_2r*   r#   r#   r$   test_intersection_bug_1708<  s
   
z2TestDatetimeIndexSetOps.test_intersection_bug_1708c                 C   s   g d}t ||d}tddd|d}t ||d}t ||d}tddd|d}t |d d |d}	t ||d}
t g |d}t ||d}|||f|||	f|
||ffD ]\}}}|||}|d u rgt|rg| }t|| qPd S )	N)z1/2/2000z1/3/2000r-   r2   z1/5/2000r5   r1   r.   r   r/   r2   r4   )r   r
   
differenceru   rN   r   r   )r   r,   r   	rng_datesr9   r:   r;   r=   r>   r?   rA   rB   rC   rE   rF   r(   result_diffr#   r#   r$   test_differenceE  s&   z'TestDatetimeIndexSetOps.test_differencec                 C   s   t dddd}t dddd}tddgdd d}|||}t|| td	|| t d
ddd}|||}tddgddd}t|| td	|| d S )N2016092020160925r.   rM   2016092120160924r   )r{   r0   r0   20160922)r
   r   r   r   r   assert_attr_equal)r   r   rv   rF   r(   idx_diffr#   r#   r$   test_difference_freq`  s   z,TestDatetimeIndexSetOps.test_difference_freqc                 C   sH   t dtddddd}t dtddddd}t|||dks"J d S )	NzQE-JANi        d   )r0   r|   r   b   rk   )r
   r   ru   r   )r   r   dti1dti2r#   r#   r$   test_datetimeindex_diffr  s   z/TestDatetimeIndexSetOps.test_datetimeindex_diff)Nr   r   c                 C   s  t ddd|d}|d d |dd }|j|jksJ |j|jks%J |j|jks-J |d d |dd }|j|jksBJ |j|jksJJ |j|jksRJ |d d |dd }|j|jksgJ |jd u snJ |j|jksvJ |d d |d	d
 }|j|jksJ |jdksJ |j|jksJ tt|d	d
 dd}|d d |}|jd u sJ |j|jksJ |j|jksJ |d d |}|jd u sJ |j|jksJ |j|jksJ d S )Nr-   z1/1/2002rO   )r   r,   2   r      <      K   r.   rF   r   )	r
   r   r   r0   r,   r   freqstrr   r7   )r   r,   rE   r*   nofreqr#   r#   r$   test_setops_preserve_freqw  s4   z1TestDatetimeIndexSetOps.test_setops_preserve_freqc                 C   sJ   t g ddd}|d d d |dd d }|d d }t|| d S )N)z
2018-12-31z
2019-03-31z
2019-06-30z
2019-09-30z
2019-12-31z
2020-03-31zQE-DECrM   rk   r   r   )r   r   r   r   )r   rl   r*   r(   r#   r#   r$   &test_intersection_non_tick_no_fastpath  s   z>TestDatetimeIndexSetOps.test_intersection_non_tick_no_fastpathc                 C   sj   t ddddd}|dd d d d }|d	d
 d d d }|j|jks&J ||}|j|jks3J d S )Nz1/1/2011r   hutcr   r0   r,   r   Z   ry   P   )r
   r,   r   )r   rE   r_   r`   r*   r#   r#   r$   test_dti_intersection  s   
z-TestDatetimeIndexSetOps.test_dti_intersectionsetop)r   r   symmetric_differencec                 C   s   t ddddd}t ddddd}t|||}|d}|d}t|||}t|| |j|jks6J t|rN|d	 jtju sDJ |d
 jtju sPJ d S d S )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   r,   ru   r   r   )r   r   rE   r=   r*   r_   r`   r(   r#   r#   r$   test_dti_setop_aware  s   

z,TestDatetimeIndexSetOps.test_dti_setop_awarec                 C   sf   t tdtjg}t ddgdd}||}ttdtjtdddtdddgtd}t|| d S )Nz
2011-01-01z
2012-01-01z
2012-01-02r   r5   rz   )	r   r   pdNaTr   r   r   r   r   )r   rE   r=   r*   r(   r#   r#   r$   test_dti_union_mixed  s   


	z,TestDatetimeIndexSetOps.test_dti_union_mixedN)#__name__
__module____qualname__r,   r%   pytestmarkparametrizerq   r   r   r7   r+   rJ   rQ   rZ   ra   rg   rj   rm   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   r   !   sF    



		
?
	

"
r   c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dd Zejdddgdd ZdS )TestBusinessDatetimeIndexc                 C   s   t tt}|d d }|dd }|j||d}t|tsJ |d d }|dd  }|j||d}t|ts9J |d d }|dd }|j||d}t|tsSJ |d u rct|j||d| ntt	|t	| }t|j||d| t
ttt d}|j||d}t|tsJ d S )Nr   r   r   rM   )r	   STARTENDr   
isinstancer   r   r   r   r7   r
   r   )r   r   rE   r_   r`   	the_unionr(   r#   r#   r$   rJ     s(   
z$TestBusinessDatetimeIndex.test_unionc                 C   s   t ddt d}|dd  }|d d }|j||d}|d u r&t|| ntt|dd  t|d d  }t|| |dd  }|dd }|j||d}|dd  }t|| d S )	Nr-   r   rU   r   r   r   rd   #   )r
   r   r   r   r   r   r7   )r   r   rE   r9   r=   r   r(   r#   r#   r$   test_union_not_cacheable  s   $z2TestBusinessDatetimeIndex.test_union_not_cacheablec                 C   s   t ddt d}|dd  }|d d }||}|dd }t|| t|ts,J |j|jks4J ||}t|| |d d |dd  }tg d}t|| d S )Nr-   r   rU   r   r   r6   )	r
   r   r   r   r   r   r   r0   r8   )r   rE   r9   r=   the_intr(   r#   r#   r$   r     s   

z+TestBusinessDatetimeIndex.test_intersectionc                 C   s>   t dd}t dd}||}t|| |j|jksJ d S )N
11/30/2011
12/31/2011
12/10/2011
12/20/2011r	   r   r   r   r0   r   r   r   r*   r#   r#   r$   test_intersection_bug"  s
   


z/TestBusinessDatetimeIndex.test_intersection_bugc                 C   s6   t dt dg}t|dd}||}t|| d S )Nr   z
2020-02-01r   r   )r   r   r   r   r   )r   r'   rO   resr#   r#   r$   test_intersection_list*  s   
z0TestBusinessDatetimeIndex.test_intersection_listc           	      C   sp   t d}tddd}tddd}tddd}tddd}t|||t d}t|||t d}|j||d d S )Nr     r   r4   r   r|   endr,   r0   r   )pytzr   r   r
   r   r   )	r   r   r,   early_start	early_end
late_startlate_endearly_drlate_drr#   r#   r$   test_month_range_union_tz_pytz2  s   
z8TestBusinessDatetimeIndex.test_month_range_union_tz_pytzc           
      C   sz   ddl m} |d}tddd}tddd}tddd}tddd}t|||t d}t|||t d}	|j|	|d	 d S )
Nr   )dateutil_gettzr   r   r   r4   r   r   r   )pandas._libs.tslibs.timezonesr   r   r
   r   r   )
r   r   r   r,   r   r   r   r   r   r   r#   r#   r$   "test_month_range_union_tz_dateutil@  s   z<TestBusinessDatetimeIndex.test_month_range_union_tz_dateutilr   FNc                 C   sL   t tdtdtdg}|j||d}t tdtdg}t|| d S )Nz
2019-12-13z
2019-12-12r   )r   r   r   r   r   )r   r   r   r*   r(   r#   r#   r$   test_intersection_duplicatesQ  s   z6TestBusinessDatetimeIndex.test_intersection_duplicates)r   r   r   rJ   r   r   r   r   r   tdskip_if_windowsr   r   r   r   r   r#   r#   r#   r$   r     s    $
r   c                	   @   s@   e Zd Zdd Zdd Zejdddde	d	gd
d Z
dS )TestCustomDatetimeIndexc                 C   s   t ttdd}|d d }|dd }|j||d}t|ts!J |d d }|dd  }|||}t|ts:J |d d }|dd }|j||d}t|tsTJ |d u rct|j||d| t	ttt
 d}|j||d}t|tsyJ d S )NCrM   r   r   r   )r	   r   r   r   r   r   r   r   r   r
   r   )r   r   rE   r_   r`   r   r#   r#   r$   rJ   a  s$   z"TestCustomDatetimeIndex.test_unionc                 C   sF   t dddd}t dddd}||}t|| |j|jks!J d S )Nr   r   r   rM   r   r   r   r   r#   r#   r$   r     s
   
z-TestCustomDatetimeIndex.test_intersection_bugr,   Nr   zEurope/Berlinic                 C   s   t ddd|d}t ddd|d}||}t ddd|d}t|| t dddd	d}t d
ddd	d}||}t dddd	d}t|| d S )Nz
2020-03-27r   r.   r   z
2020-03-30rk   z
2021-10-28r4   zEurope/Londonz
2021-10-30rS   r   )r
   r   r   r   r   )r   r,   r   r   r*   r(   index1index2r#   r#   r$    test_intersection_dst_transition  s   

z8TestCustomDatetimeIndex.test_intersection_dst_transition)r   r   r   rJ   r   r   r   r   r   FixedOffsetr  r#   r#   r#   r$   r   `  s    !r   )r   r   numpyrq   r   r   pandas.util._test_decoratorsutil_test_decoratorsr   rf   r   r   r   r   r   r   r	   r
   pandas._testing_testingr   pandas.tseries.offsetsr   r   r   r   r   r   r   r   r#   r#   r#   r$   <module>   s"    $	   < 