U
    sVcR                     @   s   d dl 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 d dl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d	d
 ZG dd dZG dd dZG dd dZdS )    )datetimeN)	DataFrameDatetimeIndexIndexSeriesbdate_range
date_range)
Int64Index)	BMonthEndMinuteMonthEndi     i  c               	   C   s4   t ddd} tt | | | g W 5 Q R X d S )N
2016-01-01   periods)r   tmassert_produces_warningFutureWarningZ
union_many)dti r   N/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/indexes/datetimes/test_setops.pytest_union_many_deprecated   s    r   c                   @   s*  e Zd Zddddddg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ejdddddg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dddgd0d1 Zd2d3 ZdS )4TestDatetimeIndexSetOpsNUTCz
Asia/Tokyo
US/Easternzdateutil/Asia/Singaporezdateutil/US/Pacificc                 C   s@   t d}|d d }|dd  }|j||d}t || d S N
      sort)r   makeDateIndexunionassert_index_equal)selfr    
everythingfirstsecondr"   r   r   r   test_union20   s
    
z#TestDatetimeIndexSetOps.test_union2boxc           	      C   sX   t d}|d d }|dd  }|j||d}||j}|j||d}t || d S r   )r   r!   r"   valuesr#   )	r$   r    r)   r%   r&   r'   expectedcaseresultr   r   r   test_union37   s    

z#TestDatetimeIndexSetOps.test_union3tzc                 C   s@  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
}t ddd|d}|}||||f|||	|
f||||ffD ]X\}}}}|j||d}t|| |j||d}|d kr.t|| qt|| qd S )N1/1/2000Dr   freqr   r/   1/6/2000r   1/4/2000   r   r/   r   )r   r   listr"   r   r#   )r$   r/   r    rng1other1	expected1Zexpected1_notsortedrng2other2	expected2Zexpected2_notsortedrng3other3	expected3Zexpected3_notsortedrngotherexpZexp_notsortedZresult_unionr   r   r   
test_unionC   s,    



z"TestDatetimeIndexSetOps.test_unionc                 C   sn   t dddg}t | dd}|j||d}t|| |d d j||d}t|| |j|jksjtd S )Nz
2000-01-03z
2000-01-01z
2000-01-02Zinferr3   r   r   )r   sort_valuesr"   r   r#   r3   AssertionError)r$   r    idxZorderedr-   r   r   r   test_union_coveragec   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 krXtt|}nt|}t|| d S )N1/1/2012   Z3Hr   r3   Z4Hr   r   )r   r"   r8   r   sortedr   r#   )r$   r    Zrng_aZrng_br-   rD   r   r   r   test_union_bug_1730m   s    z+TestDatetimeIndexSetOps.test_union_bug_1730c                 C   sV   t dg}t dddg}|j||d}t ddddg}|d krF| }t|| d S )Nz2012-05-11 15:19:49.695000z2012-05-29 13:04:21.322000z2012-05-11 15:27:24.873000z2012-05-11 15:31:05.350000r   )r   r"   rG   r   r#   )r$   r    leftrightr-   rD   r   r   r   test_union_bug_1745y   s$    
z+TestDatetimeIndexSetOps.test_union_bug_1745c                 C   sp   ddl m} tdd}||dd }|j||d}t|t| }|d krXtt|}nt|}t|| d S )Nr   
DateOffsetz
2013-01-01z
2013-02-01   )minutesr   )	pandasrT   r   r"   r8   r   rN   r   r#   )r$   r    rT   rP   rQ   r-   rD   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 ks<td S )NZ20150101r   r   r   )r   _datar3   r"   r   r#   rH   )r$   r    r+   r-   r   r   r   test_union_freq_both_none   s
    z1TestDatetimeIndexSetOps.test_union_freq_both_nonec                 C   sn   t ddd}|ddddg }|dddg }|jd ks8t|jd ksFt||}t|| |jd	ksjtd S )
Nr   r   r   r   r   r   rL      r1   )r   r3   rH   r"   r   r#   )r$   r   rP   rQ   r-   r   r   r   test_union_freq_infer   s    
z-TestDatetimeIndexSetOps.test_union_freq_inferc                 C   sv   t dddd}ttjt||}t dddd}ttjt||}t||d}t dddd}t|j	| d S )Nz1/1/1999rK   ZMSrF   z1/1/1980z	12/1/2001)s1s2)
r   r   nprandomZrandnlenr   r   r#   index)r$   r9   r]   r<   r^   ZdfrD   r   r   r   test_union_dataframe_index   s    z2TestDatetimeIndexSetOps.test_union_dataframe_indexc                 C   s@   t tddd}tdddd}|j||d |j||d d S )	Nr      r[   z2012-01-03 00:00:00r   r1   )startr   r3   r   )r	   r_   Zaranger   r"   )r$   r    i1i2r   r   r   test_union_with_DatetimeIndex   s    z5TestDatetimeIndexSetOps.test_union_with_DatetimeIndexc                    s   t d}|dd   | }t | s0t fddtjttfD }|D ]}||}t | sNtqNt	dddg}||}t	g t
d}t || d S )	Nr   r   c                    s   g | ]}| j qS r   )r*   ).0klassr'   r   r   
<listcomp>   s     z>TestDatetimeIndexSetOps.test_intersection2.<locals>.<listcomp>abc)Zdtype)r   r!   intersectionZequalContentsrH   r_   arrayr   r8   r   objectr#   )r$   r&   Z	intersectZcasesr,   r-   thirdr+   r   rk   r   test_intersection2   s    



z*TestDatetimeIndexSetOps.test_intersection2c                 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}	||f||f||	ffD ].\}
}||
}t|| |j|jkstqtddddg|dd}tddddg|dd}tddg|dd}tddddg|dd}tddg|d d}t d	d
d|dd}tg |dd}	|	jd ksJt||f||f||	ffD ]H\}
}|j|
|d}|d kr| }t|| |j|jks`tq`d S )N6/1/2000z	6/30/2000r1   rI   )r3   namez	5/15/2000z	6/20/2000rC   z7/1/2000z	7/31/2000z
2011-01-05z
2011-01-04z
2011-01-02z
2011-01-03)r/   rv   z
2011-02-02z
2011-02-03)r3   r/   rv   r   )r   r   rp   r   r#   r3   rH   rG   )r$   r/   r    baser<   r>   r?   rA   Zrng4Z	expected4rB   r+   r-   r   r   r   test_intersection   sV    

  
  

z)TestDatetimeIndexSetOps.test_intersectionr3   TBc                 C   s  |}t dd||d}|dd |}t|dks6t|j|jksFt||dd }t|dksht|j|jksxt|dk}|d d |dd  }t||d d  |r|j|jkst|dd  |d d }t||d d  |r|j|jkstd S )Nru   z	6/15/2000)r3   r/   r   ry   r   )r   rp   ra   rH   r3   r   r#   )r$   Ztz_aware_fixturer3   r/   rB   r-   Z
check_freqr   r   r   test_intersection_empty  s"    z/TestDatetimeIndexSetOps.test_intersection_emptyc              	   C   sZ   ddl m} tdddd}||dd }tt ||@ }W 5 Q R X t|dksVtd S )	Nr   rS   rK   rL   Z12HrM   r   )hours)rW   rT   r   r   r   r   ra   rH   )r$   rT   Zindex_1Zindex_2r-   r   r   r   test_intersection_bug_17085  s    z2TestDatetimeIndexSetOps.test_intersection_bug_1708c                 C   s   dddddg}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 krt|r| }t|| qd S )Nz1/2/2000z1/3/2000r0   r5   z1/5/2000r7   r4   r1   r   r2   r   )r   r   
differencera   rG   r   r#   )r$   r/   r    Z	rng_datesr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   r+   Zresult_diffr   r   r   test_difference?  s$    z'TestDatetimeIndexSetOps.test_differencec                 C   s   t dddd}t dddd}tddgd d}|||}t|| td|| t dddd}|||}tddgd d}t|| td|| d S )	NZ20160920Z20160925r1   rF   Z20160921Z20160924r3   Z20160922)r   r   r   r   r#   Zassert_attr_equal)r$   r    rb   rC   r+   Zidx_diffr   r   r   test_difference_freqZ  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sDtd S )	NzQ-JANi        d   )r3   re   r   b   r[   )r   r   ra   r   rH   )r$   r    Zdti1Zdti2r   r   r   test_datetimeindex_diffj  s    z/TestDatetimeIndexSetOps.test_datetimeindex_diffc                 C   s  t ddd|d}|d d |dd }|j|jks:t|j|jksJt|j|jksZt|d d |dd }|j|jkst|j|jkst|j|jkst|d d |dd }|j|jkst|jd kst|j|jkst|d d |d	d
 }|j|jkst|jdks(t|j|jks:ttt	|d	d
 dd}|d d |}|jd kstt|j|jkst|j|jkst|d d |}|jd kst|j|jkst|j|jkstd S )Nr0   z1/1/2002rI   )rv   r/   2   r      <      K   r1   rC   rv   )
r   r"   rv   rH   r3   r/   rp   Zfreqstrr   r8   )r$   r/   rB   r-   Znofreqr   r   r   test_setops_preserve_freqo  s4    z1TestDatetimeIndexSetOps.test_setops_preserve_freqc                 C   sR   t ddddddgdd}|d d d	 |d
d d	 }|d d }t|| d S )Nz
2018-12-31z
2019-03-31z
2019-06-30z
2019-09-30z
2019-12-31z
2020-03-31zQ-DECrF   r[   r   r   )r   rp   r   r#   )r$   r   r-   r+   r   r   r   &test_intersection_non_tick_no_fastpath  s    z>TestDatetimeIndexSetOps.test_intersection_non_tick_no_fastpath)__name__
__module____qualname__r/   r(   pytestmarkparametrizer_   rq   r   r8   r.   rE   rJ   rO   rR   rX   rZ   r\   rc   rh   rt   rx   r|   r~   r   r   r   r   r   r   r   r   r   r   %   sH   



		 

;



"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>t|d d }|dd  }|j||d}t|tsrt|d d }|dd }|j||d}t|tst|d krt	|j||d| n*tt
|t
| }t	|j||d| tttt d}|j||d}t|tstd S )Nr   r   r   rF   )r   STARTENDr"   
isinstancer   rH   r   r   r#   r8   r   r
   )r$   r    rB   rP   rQ   	the_unionr+   r   r   r   rE     s(    
z$TestBusinessDatetimeIndex.test_unionc                 C   s   t ddt d}|dd  }|d d }|j||d}|d krLt|| n0tt|dd  t|d d  }t|| |dd  }|dd }|j||d}|dd  }t|| d S )	Nr0   r   rM   r   r   r   rU   #   )r   r   r"   r   r#   r   r8   )r$   r    rB   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sXt|j|jksht||	t}t|| |d d |dd  }tg }t|| d S )Nr0   r   rM   r   r   )
r   r   rp   r   r#   r   r   rH   r3   view)r$   rB   r9   r<   Zthe_intr+   r   r   r   rx     s    
z+TestBusinessDatetimeIndex.test_intersectionc                 C   s>   t dd}t dd}||}t|| |j|jks:td S )N
11/30/2011
12/31/2011
12/10/2011
12/20/2011r   rp   r   r#   r3   rH   r$   rm   rn   r-   r   r   r   test_intersection_bug  s
    


z/TestBusinessDatetimeIndex.test_intersection_bugc                 C   s:   t dt dg}t|dd}||}t|| d S )Nz
2020-01-01z
2020-02-01rm   r   )pd	Timestampr   rp   r   r#   )r$   r*   rI   resr   r   r   test_intersection_list  s    
z0TestBusinessDatetimeIndex.test_intersection_listc           
      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   )timezoner     r   r   r   re   endr/   r3   r   )pytzr   r   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_pytz  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   r   r   r   r   )Z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   sV   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   rp   r   r#   )r$   r    idx1r-   r+   r   r   r   test_intersection_duplicates  s    z6TestBusinessDatetimeIndex.test_intersection_duplicates)r   r   r   rE   r   rx   r   r   r   tdZ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sBt|d d }|dd  }|||}t|tstt|d d }|dd }|j||d}t|tst|d krt	|j||d| t
ttt d}|j||d}t|tstd S )NCrF   r   r   r   )r   r   r   r"   r   r   rH   r   r   r#   r   r
   )r$   r    rB   rP   rQ   r   r   r   r   rE   -  s$    z"TestCustomDatetimeIndex.test_unionc                 C   sF   t dddd}t dddd}||}t|| |j|jksBtd S )Nr   r   r   rF   r   r   r   r   r   r   r   r   N  s
    
z-TestCustomDatetimeIndex.test_intersection_bugr/   Nr   zEurope/Berlinic                 C   sJ   t ddd|d}t ddd|d}||}t ddd|d}t|| d S )Nz
2020-03-27r   r1   )r   r3   r/   z
2020-03-30r[   )r   rp   r   r#   )r$   r/   r   Zidx2r-   r+   r   r   r    test_intersection_dst_transitionV  s
    
z8TestCustomDatetimeIndex.test_intersection_dst_transition)r   r   r   rE   r   r   r   r   r   ZFixedOffsetr   r   r   r   r   r   ,  s   ! r   ) r   Znumpyr_   r   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   rW   r   r   r   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.core.apir	   Zpandas.tseries.offsetsr
   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s$        	