U
    f/ed                    @   s  d dl m Z mZmZ d dlmZmZ d dlZd dlZd dlZ	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlmZmZ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$ d d
l%m&Z& d dl'm(Z(m)Z)m*Z* G dd dZ+G dd dZ,G dd dZ-G dd dZ.G dd dZ/G dd dZ0G dd dZ1G dd dZ2e
j34ddd dge
j34dd d d!gd"d# Z5d$d% Z6dS )&    )datetimetime	timedelta)productstarmapN)localize_pydatetime)shift_months)np_datetime64_compat)PerformanceWarning)	
DateOffsetDatetimeIndexNaTPeriodSeries	TimedeltaTimedeltaIndex	Timestamp
date_range)DatetimeArrayTimedeltaArray)	roperator)assert_invalid_addsub_typeassert_invalid_comparisonget_upcast_boxc                   @   s  e Zd Zdd Zejddddde edd	e	d
dd
 dejg	dd Zejdeedededejedeejdddjeejdddeejdddejdddeejddddjejddddeg
dd Zdd Zdd ZdS )"TestDatetime64ArrayLikeComparisonsc                 C   s   |}|}|t jt jfkr|ntj}tdd|d}t| d }t||}||k}	tdddg}
t|
|}
t	|	|
 d S )N20130101   periodstzr   TF)
pdIndexarraynpndarrayr   Zto_numpytmbox_expectedassert_equal)selftz_naive_fixturebox_with_arrayr   boxxboxdtiotherdtarrresultexpected r2   K/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/arithmetic/test_datetime64.pytest_compare_zerodim:   s    z7TestDatetime64ArrayLikeComparisons.test_compare_zerodimr.   fooc   g      @   daysi     Nc                 C   s.   |}t dd|d}t||}t||| d S )N1/1/2000
   r   )r   r%   r&   r   )r(   r.   r)   r*   r   rngr/   r2   r2   r3   test_dt64arr_cmp_scalar_invalidK   s    zBTestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_scalar_invalidr=   Z1nsr   1 Dayz
1971-01-01Dfreqr   c                 C   s(   |}t ddd|dj}t||tj d S )N
1970-01-01nsr=   rD   r   r   )r   _datar   r%   to_array)r(   r.   r)   r   dtar2   r2   r3   "test_dt64arr_cmp_arraylike_invalide   s    zETestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_arraylike_invalidc              	   C   s  |}t ddd|dj}tddd|d tdd	g}||k}td
d
d
dd
g}t|| ||k}t||  d}tjt	|d ||k  W 5 Q R X tjt	|d ||k W 5 Q R X tjt	|d ||k W 5 Q R X tjt	|d ||k W 5 Q R X d S )NrE   h   rG   r   r;   r8   r   r9   FTzDInvalid comparison between|Cannot compare type|not supported betweenmatch)
r   rH   r#   r"   r   r%   assert_numpy_array_equalpytestraises	TypeError)r(   r)   r   rJ   r.   r0   r1   msgr2   r2   r3   test_dt64arr_cmp_mixed_invalid|   s"    zATestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_mixed_invalidc                 C   sz   |}|}|t jt jfkr|ntj}t|}t|tg}t	
||}tddgtjd}	t	
|	|}	||k}
t	|
|	 d S )NTFdtype)r    r!   r"   r#   r$   r   nowr   r   r%   r&   Zbool_r'   )r(   r)   r*   r   r+   r,   tsserobjr1   r0   r2   r2   r3   test_dt64arr_nat_comparison   s    
z>TestDatetime64ArrayLikeComparisons.test_dt64arr_nat_comparison)__name__
__module____qualname__r4   rQ   markparametrizeobjectr   r   dater#   nanr?   listrangeZarangeastypeZfloat32r    timedelta_ranger"   Zperiod_rangerK   rU   r\   r2   r2   r2   r3   r   5   s@   


r   c                   @   s  e Zd Zejdedeedgeeedgfedeedgeeedgfe	dddee	d	ddgeee	d	ddgfgejd
ddgejdde
gejdejedddgfejedddgfejedddgfejedddgfejedddgfejedddgfgdd Zdd Zejdedeedgedeedge	dddee	d	ddggejdde
gdd Zejdedddedddgdd Zejddd d!d"gd#d$ Zd%d& ZdS )'TestDatetime64SeriesComparisonpair
2011-01-01
2011-01-031 daysz3 daysz2011-01MrD   z2011-03reverseTFrW   Nzop, expectedc                 C   sL   |}|\}}	|r|	| }}	t ||d}
||	|d}||
|}t|| d S )NrV   )r   r%   assert_series_equal)r(   rW   index_or_seriesrp   rj   opr1   r+   lrleftrightr0   r2   r2   r3   test_nat_comparisons   s    '

z3TestDatetime64SeriesComparison.test_nat_comparisonsc                 C   sJ   |}t td}t tdd|d}t||}t||}t||| d S )NrM   20010101r   )r   rf   r   r%   r&   r   )r(   r)   r*   r   rZ   Zser2r2   r2   r3   test_comparison_invalid   s    z6TestDatetime64SeriesComparison.test_comparison_invaliddatac                 C   s  |}|t jkr|tkrd S |tjtjfkr.|ntj}t||d}t 	||}dddg}t 	||}|tjkr|tkrtj|dd}t 
|tk| t 
t|k| dddg}t 	||}|tjkr|tkrtj|dd}t 
|tk| t 
t|k| dddg}t 	||}|tjkr2|tkr2tj|dd}t 
|tk | t 
t|k| t 
|tk| t 
t|k| t 
|tk| t 
t|k | t 
|tk| t 
t|k| d S )NrV   FboolT)r%   rI   rb   r    r!   r"   r#   r$   r   r&   r'   r   )r(   rW   r{   r*   r+   r,   rv   r1   r2   r2   r3   test_nat_comparisons_scalar   s<    



z:TestDatetime64SeriesComparison.test_nat_comparisons_scalarvali  r;      rM   c                    s>   t tddd}| k}t  fdd|D }t|| d S )Nr<   r=   r@   c                    s   g | ]}| kqS r2   r2   .0xr~   r2   r3   
<listcomp>  s     zQTestDatetime64SeriesComparison.test_series_comparison_scalars.<locals>.<listcomp>)r   r   r%   rq   )r(   r~   Zseriesr0   r1   r2   r   r3   test_series_comparison_scalars  s    z=TestDatetime64SeriesComparison.test_series_comparison_scalarsz
left,right)ltgt)lege)eqr   )ner   c           	      C   s   t tddddd}|jdd}td|d	< td|d
< tt|}tt|}||td}|td|}t|| ||td}|td|}t|| ||td}|td|}t|| ||td}|td|}t|| d S )Nry   r=   r@   datesnameT)deepnatr   r   Z20010109)r   r   copyr   getattroperatorr%   rq   )	r(   rv   rw   rZ   Zs_natZleft_fZright_fr1   r0   r2   r2   r3   test_timestamp_compare_series"  s$    

z<TestDatetime64SeriesComparison.test_timestamp_compare_seriesc              	   C   s  |t jt jfkr|ntj}ttdtdtg}t	||}||k}t	dddg|}t
|| |t jkrptnd }t| ||d k}W 5 Q R X t	dddg|}t
|| t| ||d k}W 5 Q R X t	dddg|}t
|| ||k}t	dddg|}t
|| t| ||d k}W 5 Q R X t	dddg|}t
|| t| ||d k}W 5 Q R X t	dddg|}t
|| d S )Nz2000-01-29 01:59:00z
2000-01-30FTr   r8   )r    r!   r"   r#   r$   r   r   r   r%   r&   r'   	DataFrameFutureWarningassert_produces_warning)r(   r*   r,   rZ   r0   r1   warnr2   r2   r3   test_dt64arr_timestamp_equalityE  s6    z>TestDatetime64SeriesComparison.test_dt64arr_timestamp_equality)r]   r^   r_   rQ   r`   ra   r   r   r   r   rb   r   r   r   r   r   r   r   r   rx   rz   r}   r   r   r   r   r2   r2   r2   r3   ri      sX   ) 
 

 ri   c                	   @   s  e Zd Zejdejejej	ej
ejejgdd Zejdedddededgdd	 Zejd
degdd Zdd Zejdejejej	ejej
ejgdd Zejdejejej	ejej
ejgdd Zejdejejej	ejej
ejgejdedddededgejdejddd Zejdejejej	ejej
ejgdd Zdd Zdd Zejjdejddd ejddd  ejddd j !d!gd"d# d$d%d& Z"d'd( Z#dS ))TestDatetimeIndexComparisonsrs   c                 C   sd   t d}|t|d  }t| }t|}|||}|||}t|tjsTt	t 
|| d S )Nd   r8   )r%   ZmakeDateIndexlenr   to_datetime64r#   r"   
isinstancer$   AssertionErrorrP   )r(   rs   indexelementZarrZ
arr_resultZindex_resultr2   r2   r3   test_comparatorss  s    



z-TestDatetimeIndexComparisons.test_comparatorsr.     r;   
2016-01-01c                 C   s   |}t dd|d}|d k	r6t|tjr*d S t||j}||k}tddg}t|| ||k}tddg}t|| ||k}tddg}t|| ||k }tddg}t|| ||k}tddg}t|| d S )Nr   r8   r   TF)	r   r   r#   
datetime64r   tzinfor"   r%   rP   )r(   r.   r)   r   r-   r0   r1   r2   r2   r3   test_dti_cmp_datetimelike  s*    z6TestDatetimeIndexComparisons.test_dti_cmp_datetimelikerW   Nc           
      C   s  |t jkr|tkrd S |tjtjfkr*|ntj}tt	dt
t	dg}tt
t
t	dg}t ||}t ||}|| }}|tkr|t|t }}||k}tdddg}	t |	|}	t ||	 ||k}tdddg}	t |	|}	t ||	 tdddg}	t |	|}	t |t
k|	 t t
|k|	 tdddg}	t |	|}	t |t
k|	 t t
|k|	 tdddg}	t |	|}	t |t
k |	 t t
|k|	 d S )Nrk   rl   FT)r%   rI   rb   r    r!   r"   r#   r$   r   r   r   r&   rg   r'   )
r(   rW   r*   r,   rv   rw   lhsrhsr0   r1   r2   r2   r3   test_dti_cmp_nat  s>    
z-TestDatetimeIndexComparisons.test_dti_cmp_natc              
   C   s  t dtjdtjddg}t ddtjtjddg}tdtdtd	d
g}tddttdd
g}ttdtdtdtdtdtdg}||f||f||fg}t	
d  |D ]\}}||k }	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 qW 5 Q R X t	
d  |tjf|tffD ]\}}||k }	tddddddg}
t	|	|
 ||k}	t	|	|
 ||k}	t	|	|
 ||k}	t	|	|
 ||k}	t	|	|
 ||k}	tddddddg}
t	|	|
 qW 5 Q R X t	
d ( |df|tdddffD ]\}}||k }	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 ||k}	tddddddg}
t	|	|
 qW 5 Q R X d S )N      ?      @g      @g      @       @g      @
2014-01-01
2014-03-01
2014-05-01
2014-07-01z
2014-02-01z
2014-06-01z2014-02-01 00:00Zz2014-03-01 00:00Zr   z2014-06-01 00:00Zz2014-07-01 00:00ZTFr   i  r;   )r    r!   r#   rd   r   r   r"   r	   r   r%   r   rP   r   )r(   Zfidx1Zfidx2Zdidx1Zdidx2darrZcasesZidx1Zidx2r0   r1   r~   r2   r2   r3   +test_dti_cmp_nat_behaves_like_float_cmp_nan  s    "zHTestDatetimeIndexComparisons.test_dti_cmp_nat_behaves_like_float_cmp_nanc              	   C   sp  |}t ddd}|d}t||}t||}|tjkrFdd }nt}|tjtj	fkr\d}t
jt|d ||| W 5 Q R X t
jt|d |||| W 5 Q R X t
jt|d ||tj||td	 W 5 Q R X t
jt|d ||| W 5 Q R X t
jt|d |||| W 5 Q R X t
jt|d ||tj||td	 W 5 Q R X t||ksptt|||kstt|||kstttj||td	|kstt|tj||td	kstt||kstt|||kstt|||ks(tttj||td	|ksJtt|tj||td	ksltd S )
Nr      r@   
US/Pacificc                 S   s   |  tj d S )Nr   )rg   rb   valuestolistr   r2   r2   r3   <lambda>A      zQTestDatetimeIndexComparisons.test_comparison_tzawareness_compat.<locals>.<lambda>z^Invalid comparison between dtype=datetime64\[ns.*\] and (Timestamp|DatetimeArray|list|ndarray)rN   rV   )r   tz_localizer%   r&   r    r   re   r   r   r   rQ   rR   rS   r#   r"   rb   allr   )r(   rs   r*   r+   drdzr   rT   r2   r2   r3   "test_comparison_tzawareness_compat2  sB    


"""""z?TestDatetimeIndexComparisons.test_comparison_tzawareness_compatc              	   C   s  t ddd}|d}t||}t||}td}tddd}t||ksTtd}|tj	tj
fkrtjt|d	 ||| W 5 Q R X t||kst|tj	tj
fkrtjt|d	 ||| W 5 Q R X |tj	tj
fkrtjt|d	 ||| W 5 Q R X d S )
Nr   r   r@   r   z2000-03-14 01:59zEurope/Amsterdamr   zAInvalid comparison between dtype=datetime64\[ns.*\] and TimestamprN   )r   r   r%   r&   r   r#   r   r   r   r   r   rQ   rR   rS   )r(   rs   r*   r   r   rY   Zts_tzrT   r2   r2   r3   *test_comparison_tzawareness_compat_scalarsf  s$    
zGTestDatetimeIndexComparisons.test_comparison_tzawareness_compat_scalarsz*ignore:elementwise comp:DeprecationWarningz.ignore:Converting timezone-aware:FutureWarningc              	   C   s   |}|}t dd|d}|tjtjfkr*|ntj}t||}	|tj	tj
fkr|tj
k}
tj|
|
gtd}t||}||	|}t|| |||	}t|| nXdt|j }tjt|d ||	| W 5 Q R X tjt|d |||	 W 5 Q R X d S )Nr   r8   r   rV   z:Invalid comparison between dtype=datetime64\[ns, .*\] and rN   )r   r    r!   r"   r#   r$   r%   r&   r   r   r   r|   r'   typer]   rQ   rR   rS   )r(   rs   r.   tz_aware_fixturer*   r+   r   r-   r,   r/   Zexboolr1   r0   rT   r2   r2   r3   "test_scalar_comparison_tzawareness  s&    


z?TestDatetimeIndexComparisons.test_scalar_comparison_tzawarenessc                 C   sd   t dtdtddg}t|tjkgt| }||t}t|| ||	dt}t|| d S )Nr   r   r   r   r   )
r   r   r#   r"   r   r   r   r%   rP   r   )r(   rs   r-   r1   r0   r2   r2   r3   test_nat_comparison_tzawareness  s    
z<TestDatetimeIndexComparisons.test_nat_comparison_tzawarenessc                 C   s
  |}t dd|d}d}||k}tdgdgd  }t|| ||k}tdgdgd  }t|| ||k }tdgd }t|| ||k}tdgdgd  }t|| ||k}tdgdgd  }t|| ||k}tdgd }t|| d S )Nr<   r=   r   TF	   )r   r#   r"   r%   rP   )r(   r)   r   r>   r.   r0   r1   r2   r2   r3   test_dti_cmp_str  s*    z-TestDatetimeIndexComparisons.test_dti_cmp_strc                 C   s0   t ddd}|t|k}||k}t|| d S )Nr<   r=   r@   )r   re   r%   rP   )r(   r>   r0   r1   r2   r2   r3   test_dti_cmp_list  s    z.TestDatetimeIndexComparisons.test_dti_cmp_listZ1Dr=   r@   m8[ns]c                 C   s
   t | jS Nr   r]   r   r2   r2   r3   r     r   z%TestDatetimeIndexComparisons.<lambda>idsc              	   C   s   t dddd}||k}tdgd }t|| ||k}tdgd }t|| d}tjt|d ||k  W 5 Q R X tjt|d ||k W 5 Q R X tjt|d ||k W 5 Q R X tjt|d ||k W 5 Q R X d S )	N
2000-01-01r=   
Asia/Tokyor   FTzInvalid comparison betweenrN   )r   r#   r"   r%   rP   rQ   rR   rS   )r(   r.   r-   r0   r1   rT   r2   r2   r3   test_dti_cmp_tdi_tzawareness  s     z9TestDatetimeIndexComparisons.test_dti_cmp_tdi_tzawarenessc              	   C   s   t dddd}|d}||k}tdgd }t|| |d }||k}t|| tt|d d tdd	gd  }||k}tdgd d
gd  }t|| d}t	j
t|d ||k W 5 Q R X d S )Nr   r=   r   r   OTrM   r;   r9   FzB>=' not supported between instances of 'Timestamp' and 'Timedelta'rN   )r   rg   r#   r"   r%   rP   r   re   r   rQ   rR   rS   )r(   r-   r.   r0   r1   rT   r2   r2   r3   test_dti_cmp_object_dtype  s    

&z6TestDatetimeIndexComparisons.test_dti_cmp_object_dtype)$r]   r^   r_   rQ   r`   ra   r   r   r   r   r   r   r   r   r   r   r#   r   r   rb   r   r   r   r   filterwarningsr   r   r   r   r    rh   Z	to_seriesasi8viewr   r   r2   r2   r2   r3   r   p  sf   


-`
0



	
r   c                
   @   s>  e Zd Zejjdd Zdd Zdd Zdd Z	d	d
 Z
dd Zdd Zejdeded ed g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$ed%d&ged'd(d)ed*d+d,gejd-d.d(gd/d0 Zejd1d(d2d3d4gejd-d.d(gd5d6 Zd7d8 Z d.S )9TestDatetime64Arithmeticc                 C   sP   |}t dd|d}t dd|d}t||}t||}|| }t|| d S Nr   
2000-02-01r   z2000-01-01 02:00z2000-02-01 02:00r   r%   r&   r'   r(   r)   	two_hoursr*   r   r>   r1   r0   r2   r2   r3   %test_dt64arr_add_timedeltalike_scalar)  s    z>TestDatetime64Arithmetic.test_dt64arr_add_timedeltalike_scalarc                 C   sP   |}t dd|d}t dd|d}t||}t||}||7 }t|| d S r   r   r(   r)   r   r*   r   r>   r1   r2   r2   r3   &test_dt64arr_iadd_timedeltalike_scalar9  s    z?TestDatetime64Arithmetic.test_dt64arr_iadd_timedeltalike_scalarc                 C   sP   |}t dd|d}t dd|d}t||}t||}|| }t|| d S Nr   r   r   z1999-12-31 22:00z2000-01-31 22:00r   r   r2   r2   r3   %test_dt64arr_sub_timedeltalike_scalarG  s    z>TestDatetime64Arithmetic.test_dt64arr_sub_timedeltalike_scalarc                 C   sP   |}t dd|d}t dd|d}t||}t||}||8 }t|| d S r   r   r   r2   r2   r3   &test_dt64arr_isub_timedeltalike_scalarU  s    z?TestDatetime64Arithmetic.test_dt64arr_isub_timedeltalike_scalarc                 C   s   t tdtdg}t tdtdg}t||}t||}|tdd }t|| tdd| }t|| t tdtdg}t||}|td	d
 }t|| td	d
| }t|| d S )N20130101 9:0120130101 9:02z20130101 9:01:01z20130101 9:02:01r;   s20130101 9:01:00.00520130101 9:02:00.005rM   ms)r   r   r%   r&   r#   timedelta64r'   )r(   r*   rZ   r1   r/   r0   r2   r2   r3   test_dt64arr_add_td64_scalard  s$    z5TestDatetime64Arithmetic.test_dt64arr_add_td64_scalarc           
   	   C   s   |}t dd|dd}td}tdgd |d}t||}t||}|| }t|| || }t|| || }t|| d}	tjt	|	d ||  W 5 Q R X d S )	Nz
1994-04-01r   ZQSr   r   rD   r   r   cannot subtractrN   )
r   r#   r   r   r%   r&   r'   rQ   rR   rS   )
r(   r*   r)   r   r-   r.   r1   r[   r0   rT   r2   r2   r3   test_dt64arr_add_sub_td64_nat  s    
z6TestDatetime64Arithmetic.test_dt64arr_add_sub_td64_natc              	   C   s   |}t dd|d}tdddg}|j}t ddd|d}t||}t||}|| }	t|	| || }	t|	| t ddd|d}t||}|| }	t|	| d}
tjt|
d	 ||  W 5 Q R X d S )
Nr   r   r   z-1 Dayz
2015-12-31
2016-01-02z
2016-01-04z8cannot subtract|(bad|unsupported) operand type for unaryrN   )	r   r   r   r%   r&   r'   rQ   rR   rS   )r(   r)   r*   r   r-   tdiZtdarrr1   r/   r0   rT   r2   r2   r3    test_dt64arr_add_sub_td64ndarray  s$    z9TestDatetime64Arithmetic.test_dt64arr_add_sub_td64ndarrayrY   
2013-01-01c                 C   sP   t dddd }t||}tdddg}t||}|| }t|| d S )Nr   r   r@   0 DaysrA   2 Days)r   
_with_freqr%   r&   r   r'   )r(   r*   rY   idxr1   r0   r2   r2   r3   test_dt64arr_sub_dtscalar  s    
z2TestDatetime64Arithmetic.test_dt64arr_sub_dtscalarc                 C   s~   t d}|jdksttdddd }t||}tdddg}t||}|| }t	|| || }t	||  d S )	Nr   datetime64[D]r   r   r@   r   rA   r   )
r#   r   rW   r   r   r   r%   r&   r   r'   )r(   r*   Zdt64r-   r/   r1   r0   r2   r2   r3   "test_dt64arr_sub_datetime64_not_ns  s    
z;TestDatetime64Arithmetic.test_dt64arr_sub_datetime64_not_nsc                 C   s|   t ddddd}|d }|d }t||}ttddtddg}t||}t|| | t|| |  d S )Nz
2014-03-17r8   rB   
US/Eastern)r   rD   r   r   r;   )r   r   r%   r&   r   r#   r   r'   )r(   r*   rZ   rY   Zdelta_seriesr1   r2   r2   r3   test_dt64arr_sub_timestamp  s    
z3TestDatetime64Arithmetic.test_dt64arr_sub_timestampc                 C   s   t ttdg}t||}|t }tttgdd}t||}t|| |d}t||}|t }tttgdd}t||}t|| d S )N19900315timedelta64[ns]rV   r   )r   r   r   r%   r&   r   r'   r   )r(   r*   r-   rZ   r0   r1   dti_tzZser_tzr2   r2   r3   test_dt64arr_sub_NaT  s    
z-TestDatetime64Arithmetic.test_dt64arr_sub_NaTc              	   C   sb   t dd|d}|| }t||}t||}tt ||t }W 5 Q R X t|| d S Nr   r   r   )r   r%   r&   r   r
   rg   rb   r'   )r(   r*   r)   r-   r1   r[   r0   r2   r2   r3   !test_dt64arr_sub_dt64object_array  s    z:TestDatetime64Arithmetic.test_dt64arr_sub_dt64object_arrayc                 C   sT   t ddd d}|j}t||}|| }|| }t|| || }t|| d S r   )r   r   r%   r&   r'   )r(   r*   r-   dt64valsr/   r1   r0   r2   r2   r3   "test_dt64arr_naive_sub_dt64ndarray  s    z;TestDatetime64Arithmetic.test_dt64arr_naive_sub_dt64ndarrayc              	   C   sp   |}t dd|d}|j}t||}d}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d S )Nr   r   r   z+subtraction must have the same timezones orrN   r   r   r%   r&   rQ   rR   rS   )r(   r   r*   r   r-   r   r/   rT   r2   r2   r3   )test_dt64arr_aware_sub_dt64ndarray_raises  s    zBTestDatetime64Arithmetic.test_dt64arr_aware_sub_dt64ndarray_raisesc              	   C   sp   |}t dd|d}|j}t||}d}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d S )Nr   r   r   
cannot addrN   r  )r(   r)   r*   r   r-   r   r/   rT   r2   r2   r3   #test_dt64arr_add_dt64ndarray_raises!  s    z<TestDatetime64Arithmetic.test_dt64arr_add_dt64ndarray_raisesc              	   C   sl   t ddg}t||}d}tjt|d |td  W 5 Q R X tjt|d td|  W 5 Q R X d S )Nrk   
2011-01-02r  rN   )r   r%   r&   rQ   rR   rS   r   )r(   r*   r   rT   r2   r2   r3   !test_dt64arr_add_timestamp_raises.  s    z:TestDatetime64Arithmetic.test_dt64arr_add_timestamp_raisesr.   gQ	@r   r   rk   rB   ro   r;   r8   r   dti_freqNc                 C   s@   t ddg|d}t||}dddddd	g}t||| d S )
Nrk   r  ro   |zunsupported operand typecannot (add|subtract)zcannot use operands with typesz7ufunc '?(add|subtract)'? cannot use operands with typesz;Concatenation operation is not implemented for NumPy arrays)r   r%   r&   joinr   )r(   r  r.   r*   r-   r/   rT   r2   r2   r3   test_dt64arr_add_sub_invalid;  s    	z5TestDatetime64Arithmetic.test_dt64arr_add_sub_invalidpi_freqWQHc           
      C   sT   t ddg|d}||}t||}t||}dddddg}	t|||	 d S )	Nrk   r  ro   r	  r
  zunsupported operandzdescriptor.*requireszufunc.*cannot use operands)r   Z	to_periodr%   r&   r  r   )
r(   r  r  r*   Zbox_with_array2r-   pir/   ZparrrT   r2   r2   r3   test_dt64arr_add_sub_parrU  s    
z2TestDatetime64Arithmetic.test_dt64arr_add_sub_parrc              
   C   s  |}t dd|d}dd tdD }t||}t||}tjdd tdt d	}tj	t
|d
 ||  W 5 Q R X dddg}tj	t
|d
 ||  W 5 Q R X d}tj	t
|d
 ||  W 5 Q R X dddg}tj	t
|d
 ||  W 5 Q R X W 5 Q R X d S )N
2012-01-01r   r   c                 S   s   g | ]}t |||qS r2   )r   )r   ir2   r2   r3   r   p  s     zTTestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raises.<locals>.<listcomp>TrecordignorezTunsupported operand type\(s\) for -: '(Timestamp|DatetimeArray)' and 'datetime.time'rN   r	  z*cannot subtract DatetimeArray from ndarrayz`ufunc (subtract|'subtract') cannot use operands with types dtype\('O'\) and dtype\('<M8\[ns\]'\)zUunsupported operand type\(s\) for \+: '(Timestamp|DatetimeArray)' and 'datetime.time'zVufunc (add|'add') cannot use operands with types dtype\('O'\) and dtype\('<M8\[ns\]'\))r   rf   r%   r&   warningscatch_warningssimplefilterr
   rQ   rR   rS   r  )r(   r*   r)   r   Zobj1obj2rT   r2   r2   r3   'test_dt64arr_addsub_time_objects_raisesj  s:    z@TestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raises)!r]   r^   r_   rQ   r`   Zarm_slowr   r   r   r   r   r   r   ra   r   to_pydatetimer   r   r   r   r   r   r  r  r  r  r#   r"   r   r   r  r  r  r2   r2   r2   r3   r   "  sL   





r   c                &   @   s  e Zd Zdd Zdd Zejddddd	d
ddgdd Zdd Z	dd Z
ejdddddifddddifddddddddifddddifd d!d"d#d$d%d&d'd(d)d*d+d,d-d.dd/ifd0d1d1d/d2d3fd4d5d/d2d6fd7d/d/d8fd9d:d;d<ifd:ddifg!ejd=d>d?gejd@d5dgdAdB ZdCdD ZejdEeej ejjd/dFgeejjd1dGej geejjd1dGejjd1dGggejdHejejejgejdId>d?gdJdK ZejdLdMeddNdOedPedQedRedSgdTfdMeddUedVedWedXedYgdZfd[eddNdOed\ed]ed^ed_gdTfd[eddUed`edaedbedcgddfgdedf ZdTS )g"TestDatetime64DateOffsetArithmeticc                 C   s|   t tdtdg}t tdtdg}t||}t||}|tjd }t|| tjd| }t|| d S )Nr   r   z20130101 9:01:05z20130101 9:02:05rM   )r   r   r%   r&   r    offsetsSecondr'   )r(   r*   rZ   r1   r0   result2r2   r2   r3   'test_dt64arr_series_add_tick_DateOffset  s    zJTestDatetime64DateOffsetArithmetic.test_dt64arr_series_add_tick_DateOffsetc              	   C   s   t tdtdg}t tdtdg}t||}t||}|tjd }t|| tjd | }t|| d}tj	t
|d tjd|  W 5 Q R X d S )Nr   r   z20130101 9:00:55z20130101 9:01:55rM   ((bad|unsupported) operand type for unaryrN   )r   r   r%   r&   r    r  r   r'   rQ   rR   rS   )r(   r*   rZ   r1   r0   r!  rT   r2   r2   r3   'test_dt64arr_series_sub_tick_DateOffset  s    zJTestDatetime64DateOffsetArithmetic.test_dt64arr_series_sub_tick_DateOffsetcls_nameDayHourMinuter   MilliZMicroZNanoc                 C   sT   t tdtdg}t||}ttj|}||d  |d|  ||d  d S )Nr   r   rM   )r   r   r%   r&   r   r    r  )r(   r%  r*   rZ   
offset_clsr2   r2   r3   *test_dt64arr_add_sub_tick_DateOffset_smoke  s    zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_tick_DateOffset_smokec                 C   s   |}|dkrJt dd|d}|tjd }|d tjd |d ksJtt dd|dd	}td
ddgd|d}t||}t||}|tjd }t|| |t	
dd }t|| |tdd }t|| d S )Nr   z
2012-11-01r   r   rM   r   z2010-11-01 00:00r  r   z2010-11-01 05:00z2010-11-01 06:00z2010-11-01 07:00)rD   r   rL   )hours)r   r    r  r'  r   r   r%   r&   r'   r#   r   r   )r(   r   r*   r   r   offsetr1   r2   r2   r3   test_dti_add_tick_tzaware  s&     z<TestDatetime64DateOffsetArithmetic.test_dti_add_tick_tzawarec           
   
      s  t tdtdtdtdtdtdtdtdg}t||}|tjkrX|jd	 n|}d
ddddddg}t|D ]"\}\}}tf ||i t  fdd|D }t||}t	||   t  fdd|D }t||}t	||   tf t
|d |d   t  fdd|D }t||}t	||   t  fdd|D }t||}t	||   d}	tjt|	d  |  W 5 Q R X qvd S )N2000-01-05 00:15:002000-01-31 00:23:00r   
2000-03-31
2000-02-29
2000-12-31
2000-05-15
2001-06-15r   )yearsr8   )monthsrM   )r:   r   )r,  rM   )minutesr=   )secondsr8   )microsecondsrM   c                    s   g | ]}|  qS r2   r2   r   offr2   r3   r     s     zaTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsets.<locals>.<listcomp>c                    s   g | ]}|  qS r2   r2   r   r;  r2   r3   r     s     r;   c                    s   g | ]}|  qS r2   r2   r   r;  r2   r3   r     s     c                    s   g | ]}|  qS r2   r2   r   r;  r2   r3   r   #  s     r#  rN   )r   r   r%   r&   r    r   iloc	enumerater   r'   dictrQ   rR   rS   )
r(   r*   vec	vec_itemsZrelative_kwargsr  unitvaluer1   rT   r2   r;  r3   *test_dt64arr_add_sub_relativedelta_offsets  sN    	zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsetscls_and_kwargsZ	YearBeginmonthrM   ZYearEndZ
MonthBeginMonthEndZSemiMonthEndZSemiMonthBeginZWeekweekdayr   r   ZBusinessDayZBDayZ
QuarterEndZQuarterBeginZCustomBusinessDayZCDayZ
CBMonthEndZCBMonthBeginZBMonthBeginZ	BMonthEndZBusinessHourZ
BYearBeginZBYearEndZBQuarterBeginLastWeekOfMonthr8   FY5253Quarterr;   Znearest)Zqtr_with_extra_weekstartingMonthrH  	variationFY5253r   )rH  rK  rL  WeekOfMonth)rH  weekZEasterr   dayr   	normalizeTFnc              
      s  t |tr|\}}n|}i }|dkr0|dkr0d S ttdtdtdtdtdtdtd	td
g}t||}|tjkr|jd n|}t	tj
|}	tjdd tdt |	|fd|i| t fdd|D }
t|
|}
t|
|   t fdd|D }
t|
|}
t|
|   t fdd|D }
t|
|}
t|
 |  d}tjt|d  |  W 5 Q R X W 5 Q R X d S )Nr   )rN  rI  rJ  rM  r/  r0  r   r1  r2  r3  r4  r5  Tr  r  rQ  c                    s   g | ]}|  qS r2   r2   r   r-  r2   r3   r     s     zWTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsets.<locals>.<listcomp>c                    s   g | ]}|  qS r2   r2   r   rS  r2   r3   r     s     c                    s   g | ]} | qS r2   r2   r   rS  r2   r3   r     s     r#  rN   )r   tupler   r   r%   r&   r    r   r=  r   r  r  r  r  r
   r'   rQ   rR   rS   )r(   r*   rR  rQ  rE  r%  kwargsr@  rA  r*  r1   rT   r2   rS  r3    test_dt64arr_add_sub_DateOffsets/  sF    6

zCTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsetsc                 C   s  t dddd}t||}|tdd }tdd| }t ddddd }t||}t|| t|| |tdd }t d	d
ddd }t||}t|| ttdddtdddgdd}t||}|tj	
  }tj	
 | }ttdddtdddgdd}t||}t|| t|| ttdddtdddgdd}t||}|tj	  }tj	 | }ttdddtdddgdd}t||}t|| t|| d S )Nr   z
2000-01-31ar   r;   r6  z
2001-01-01z
2001-01-31z
1999-01-01z
1999-01-31z2000-01-15 00:15:00z
US/Centralr   z
2000-02-15z2000-01-16 00:15:00z
2000-02-16z2000-01-31 00:15:00r2  )r   r%   r&   r   r   r'   r   r   r    r  r&  rG  )r(   r*   r   r0   r!  expr2   r2   r3   test_dt64arr_add_sub_DateOffset  s`    







zBTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsetr.   rR  rX  rs   	box_otherc           
   	      s   |}t dd|d t |}ttj tjjddgt	 fddt
t D }t||}|rzt|tt |}	W 5 Q R X t|	| d S )N
2017-01-01r8   r   r[  c                    s   g | ]} | | qS r2   r2   r   rR  r-   rs   r.   r2   r3   r     s     zXTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_array.<locals>.<listcomp>)r   r%   r&   r#   r"   r    r  rG  r&  r   rf   r   r   r
   r'   )
r(   r)   r*   r\  rs   r.   r   r/   r1   resr2   r_  r3   !test_dt64arr_add_sub_offset_array  s    "zDTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_arrayzop, offset, exp, exp_freq__add__r=   )r7  r:   z
2014-04-11z
2015-04-11z
2016-04-11z
2017-04-11N)r7  z
2014-04-01z
2015-04-01z
2016-04-01z
2017-04-01zAS-APR__sub__z
2013-09-21z
2014-09-21z
2015-09-21z
2016-09-21z
2013-10-01z
2014-10-01z
2015-10-01z
2016-10-01zAS-OCTc                 C   s^   |}t ddd|d}t||d}t||}	|	|}
t||d}t||d}t|
| d S )Nz01 Jan 2014z01 Jan 2017ZAS)startendrD   r   Fr   )r   r%   r&   r   r   r'   )r(   rs   r-  rY  Zexp_freqr   r*   r   rc   Zmthr0   r1   r2   r2   r3   #test_dti_add_sub_nonzero_mth_offset  s    5
zFTestDatetime64DateOffsetArithmetic.test_dti_add_sub_nonzero_mth_offset)r]   r^   r_   r"  r$  rQ   r`   ra   r+  r.  rD  rV  rZ  r#   r"   r    r  rG  r&  r   r   addr   raddsubra  r   rf  r2   r2   r2   r3   r    s    
8




	

.?:


1r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestDatetime64OverflowHandlingc                 C   s^   t tdg}t tg}t||}t||}ttg}t||}|| }t|| d S )Nz
1969-12-31)r   r   r   r%   r&   r   r'   )r(   r*   rv   rw   r1   r0   r2   r2   r3   test_dt64_overflow_masking=  s    

z9TestDatetime64OverflowHandling.test_dt64_overflow_maskingc              	   C   sH  t d}td}tdddd}t|}d}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X t|jd	< td
dddgdd}|| }t	
|| || }t	
|| t|jdd < tddddgdd}|| }t	
|| || }t	
||  d S )Nz
1700-01-31z
20000 Daysz
1949-09-30Z100Yr   rC   Overflow in int64 additionrN   r6   z
2004-10-03z
2104-10-04z
2204-10-04r   datetime64[ns]rV   r;   z
91279 Daysr   )r   r   r   r   rQ   rR   OverflowErrorr   r=  r%   rq   )r(   dttdr-   rZ   rT   r1   r`  r2   r2   r3   test_dt64_series_arith_overflowK  s8    

 z>TestDatetime64OverflowHandling.test_dt64_series_arith_overflowc              
   C   s>  t dtjg}t dtjg}td}|| | d| dg}td}|| | d| dg}d}|D ]&}tj	t
|d ||  W 5 Q R X qtjj|j }	|D ]}|| }
|
d j|	kstqtjj|j }	|D ]}|| }
|
d j|	kstq|D ](}tj	t
|d ||  W 5 Q R X qd S )	NrX   
1950-01-01rm  r   
1980-01-01rl  rN   r;   )r    to_datetimer   maxminr  r   rg   rQ   rR   rn  rC  r   )r(   dtimaxdtiminZtsnegZts_neg_variantsZtsposZts_pos_variantsrT   variantr1   r`  r2   r2   r3   )test_datetimeindex_sub_timestamp_overflowk  s:    zHTestDatetime64OverflowHandling.test_datetimeindex_sub_timestamp_overflowc              	   C   sd  t dtjg}t dtjg}t ddg}t ddg}tjj|d j }|| }|d j|kshttjj|d j }|| }|d j|kstd}tjt	|d ||  W 5 Q R X tjt	|d ||  W 5 Q R X t tjg}|t
j t
d }	tjt	|d |	|  W 5 Q R X t tjg}
|
t
j t
d }tjt	|d |
|  W 5 Q R X d S )NrX   rr  rs  r;   rl  rN   Z1us)r    rt  r   ru  rv  rC  r   rQ   rR   rn  r   )r(   rw  rx  Zts_negZts_posr1   r0   rT   Ztmint1Ztmaxt2r2   r2   r3   -test_datetimeindex_sub_datetimeindex_overflow  s.    zLTestDatetime64OverflowHandling.test_datetimeindex_sub_datetimeindex_overflowN)r]   r^   r_   rk  rq  rz  r}  r2   r2   r2   r3   rj  :  s    &rj  c                	   @   s   e Z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eededgeeedgeeegddgejdddedgdd Zejddddd gd!d" Zd#d$ Zd%S )&TestTimestampSeriesArithmeticc              	   C   sn   t dd}t dd}t|||  t|||  t|||  d}tjt|d ||  W 5 Q R X d S )NzM8[ns]rV   r   r   rN   )r   r%   rq   rQ   rR   rS   )r(   rW  brT   r2   r2   r3   test_empty_series_add_sub  s    

z7TestTimestampSeriesArithmetic.test_empty_series_add_subc                 C   s   t tdddgd }tj|jd< t tdtdtdg}tj|jd< t tdtd	td
g}||  ||  ||  ||  ||  ||  ||  d S )NrM   r   r8  r9  r8   201112302012010120120103201112312012010220120104)r   r   r#   rd   r=  r   )r(   td1dt1dt2r2   r2   r3   test_operators_datetimelike  s,    z9TestTimestampSeriesArithmetic.test_operators_datetimelikec                 C   sV   t tdddddd}tddddd}t|g}tt|| }|jd	ksRtd S )
Ni  r;            r   r      r   )	r   r   r   r    Zto_timedeltar#   absrW   r   )r(   rY   ro  rZ   r0   r2   r2   r3   test_dt64ser_sub_datetime_dtype  s
    
z=TestTimestampSeriesArithmetic.test_dt64ser_sub_datetime_dtypec                    s  |  fdd}t tdddgd }tj|jd< t tdtdtd	g}tj|jd< t td
tdtdg} dkr|||  dkr||| d}t tdd|ddd}| }tj|jd< t tj	dddd}| }tj|jd<  dkr||| d S )Nc              	      s2   t |  d }tjtdd || W 5 Q R X d S )Nz%operate|[cC]annot|unsupported operandrN   )r   rQ   rR   rS   )Zget_serZtest_serrs   Zop_strr2   r3   check  s     zPTestTimestampSeriesArithmetic.test_operators_datetimelike_invalid.<locals>.checkrM   r   r  r8   r  r  r  r  r  r  )rc  __rsub__)rb  __radd__rc  r   2000-01-01 09:00:00r   r5   r   1 days 1 minr  r   rD   r;   )rb  r  rc  r  )
r   r   r#   rd   r=  r   r   r   r    rh   )r(   Zall_arithmetic_operatorsr  r  r  r  r   td2r2   r  r3   #test_operators_datetimelike_invalid  s0    

zATestTimestampSeriesArithmetic.test_operators_datetimelike_invalidc                 C   sl   t tdddg}t tdddg}|| }t tdg}t|| || }t tdg}t|| d S )Nz
2016-02-10zAmerica/Sao_Paulor   z
2016-02-08Z2daysz-2days)r   r   r   r%   rq   )r(   s1s2r0   r1   r2   r2   r3   test_sub_single_tz  s    z0TestTimestampSeriesArithmetic.test_sub_single_tzc                 C   sT   t dddd}t|}ttdgd }|| }t|| || }t|| d S )Nz
1999-09-30r=   r   r   Z0days)r   r   r   r%   rq   )r(   r-   rZ   r1   r`  r2   r2   r3   test_dt64tz_series_sub_dtitz*  s    z:TestTimestampSeriesArithmetic.test_dt64tz_series_sub_dtitzc                 C   sh   t tddddtjdtg}tddddtjd}t tdtg}t|| | t|t| | d S )Nr            )r   r  rm   )	r   r   pytzutcr   r   r%   rq   r   )r(   r   ro  rY  r2   r2   r3   test_sub_datetime_compat6  s
    z6TestTimestampSeriesArithmetic.test_sub_datetime_compatc                 C   s   t tdtdg}|tjd }tjd| }t tdtdg}t|| t|| |tjd tjd }t tdtdg}t|| d S )Nr   r   rM   r   r   z20130101 9:06:00.005z20130101 9:07:00.005)r   r   r    r  r)  r%   rq   r(  )r(   r   r0   r!  r1   r2   r2   r3   *test_dt64_series_add_mixed_tick_DateOffset>  s    zHTestTimestampSeriesArithmetic.test_dt64_series_add_mixed_tick_DateOffsetc              	   C   s   t ttdg}t ttgdd}t tgdd}tt | | d}tjt|d | |  W 5 Q R X tt | | tjt|d | |  W 5 Q R X t|t | tt| | t|t | tt| | d S )Nr   rm  rV   zUnary negative expectsrN   )r   r   r   r%   rq   rQ   rR   rS   )r(   datetime_seriesnat_series_dtype_timestampsingle_nat_dtype_datetimerT   r2   r2   r3   test_datetime64_ops_natQ  s:         z5TestTimestampSeriesArithmetic.test_datetime64_ops_natdt64_seriesr   rm  rV   oner;   r   c              	   C   s   d}t jt|d ||  W 5 Q R X t jt|d ||  W 5 Q R X t jt|d ||  W 5 Q R X t jt|d ||  W 5 Q R X d S )Nz&cannot perform .* with this index typerN   )rQ   rR   rS   )r(   r  r  rT   r2   r2   r3   !test_dt64_mul_div_numeric_invalidv  s    z?TestTimestampSeriesArithmetic.test_dt64_mul_div_numeric_invalidrs   rb  r  rc  r  c           	   	   C   s   |}t dddg|d}t|}tdddgdd	}t||}d
ddg}tjt|d |d W 5 Q R X tjt|d || W 5 Q R X tjt|d |t| W 5 Q R X tjt|d |t	
| W 5 Q R X d S )Nr   z
2016-02-03r   r      r  (   Zuint8rV   r	  z3Addition/subtraction of integers and integer-arrayszcannot subtract .* from ndarrayrN   r;   )r   r   r   r  rQ   rR   rS   r#   r"   r    r!   )	r(   r)   rs   r   r-   rZ   r.   methodrT   r2   r2   r3   test_dt64_series_add_intlike  s$    
z:TestTimestampSeriesArithmetic.test_dt64_series_add_intlikec           	   	   C   s  d}t tdd|ddd}| }tj|jd< t tjddd	d
}| }tj|jd< |jj	d ksft
||d  }|jd |d  j|}t|| ||d  }|jd |d  j|}t|| |d | }|jd |d  j|}t|| |d | }|jd |d  j|}t|| ||d  }|jd |d  j|}t|| d}tjt|d |d |  W 5 Q R X ||d  }|jd |d  j|}t|| tjt|d |d |  W 5 Q R X || }|jd | j|}t|| || }|jd | j|}t|| || }|jd | j|}t|| || }|jd | j|}t|| d}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d S )Nr   r  rM   r   r5   r   r8   r  r  r  r;   r   r#  rN   r
  )r   r   r   r#   rd   r=  r    rh   Z_valuesrD   r   ro  r   r%   rq   rQ   rR   rS   )	r(   r   r  r  r  r  r0   rY  rT   r2   r2   r3   *test_operators_datetimelike_with_timezones  s`    zHTestTimestampSeriesArithmetic.test_operators_datetimelike_with_timezonesN)r]   r^   r_   r  r  r  r  r  r  r  r  r  rQ   r`   ra   r   r   r   r#   r"   r  r  r  r2   r2   r2   r3   r~    s*   "2%
r~  c                   @   s  e Zd Zdd Zejdddgejdeje	j
gdd Zejdd	d
ddgejdeje	j
gdd Zejdeje	j
gdd Zdd Zdd Zdd Zdd Zejjdedddeddgeddgdededgdd  d!ejd"d#dgd$d% Zd&d' Zd(d) Zejd*ejejgd+d, Zd-d. Zd/d0 Zd1d2 Z ejd*eje!j"ejgd3d4 Z#ejd5e	j
ejgd6d7 Z$d#S )8TestDatetimeIndexArithmeticc              	   C   s   |}t ddd|d}d}tjt|d ||  W 5 Q R X tjt|d ||7 }W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||8 }W 5 Q R X d S )Nz2000-01-01 09:00r  r=   rG    Addition/subtraction of integersrN   )r   rQ   rR   rS   )r(   r)   r  r   r>   rT   r2   r2   r3   test_dti_addsub_int  s    z/TestDatetimeIndexArithmetic.test_dti_addsub_intrD   r  rB   
int_holderc                 C   s.   t dd|d}|ddg}d}t||| d S Nr   r8   r  r   r6   zCAddition/subtraction of integers|cannot subtract DatetimeArray fromr   r   r(   r  rD   r-   r.   rT   r2   r2   r3   test_dti_add_intarray_tick   s    z6TestDatetimeIndexArithmetic.test_dti_add_intarray_tickr  rn   ZMSr  c                 C   s.   t dd|d}|ddg}d}t||| d S r  r  r  r2   r2   r3   test_dti_add_intarray_non_tick
  s    z:TestDatetimeIndexArithmetic.test_dti_add_intarray_non_tickc                 C   s:   t dddg}|dddg}ddd	g}t||| d S )
Nr   r   z2017-04-05 06:07:08r   r   r6   r	  "cannot subtract DatetimeArray fromr  )r   r  r   )r(   r  r-   r.   rT   r2   r2   r3   test_dti_add_intarray_no_freq  s    z9TestDatetimeIndexArithmetic.test_dti_add_intarray_no_freqc                 C   s   |}t td|dgd }tjddd}tdd|d}|d }|| }t|| || }t|| ||j }t|| |j| }t|| d S Nr]  r   r=   0 daysr@   r   	r   r   r    rh   r   r   r%   assert_index_equalr   r(   r)   r   r-   r   r1   r0   r2   r2   r3   test_dti_add_tdi!  s    


z,TestDatetimeIndexArithmetic.test_dti_add_tdic                 C   s   |}t td|dgd }tjddd}tdd|d}|d }t td|dgd }||7 }t|| tjddd}||7 }t|| t td|dgd }||j7 }t|| tjddd}||7 }t|| d S r  r  r  r2   r2   r3   test_dti_iadd_tdi7  s"    

z-TestDatetimeIndexArithmetic.test_dti_iadd_tdic              	   C   s   |}t td|dgd }tjddd}tdd|dd}|d }|| }t|| d}tj	t
|d	 ||  W 5 Q R X ||j }t|| d
}tj	t
|d	 |j|  W 5 Q R X d S )Nr]  r   r=   r  r@   -1Dr   z cannot subtract .*TimedeltaArrayrN   r  )r   r   r    rh   r   r   r%   r  rQ   rR   rS   r   r(   r)   r   r-   r   r1   r0   rT   r2   r2   r3   test_dti_sub_tdiQ  s    

z,TestDatetimeIndexArithmetic.test_dti_sub_tdic              	   C   s   |}t td|dgd }tjddd}tdd|dd}|d }t td|dgd }||8 }t|| d}tj	t
|d	 ||8 }W 5 Q R X t td|dgd }||j8 }t|| d
dddg}tj	t
|d	 | j|8  _W 5 Q R X d S )Nr]  r   r=   r  r@   r  r   z(cannot subtract .* from a TimedeltaArrayrN   r	  z,cannot perform __neg__ with this index type:z-ufunc subtract cannot use operands with typesr  )r   r   r    rh   r   r   r%   r  rQ   rR   rS   r   r  r  r2   r2   r3   test_dti_isub_tdii  s,    

z-TestDatetimeIndexArithmetic.test_dti_isub_tdiaddendi  r;   rk   r  r   c                 C   s
   t | jS r   r   r   r2   r2   r3   r     r   z$TestDatetimeIndexArithmetic.<lambda>r   r   Nc              	   C   sj   t ddg|}t||}d}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d S )Nrk   r  zcannot add DatetimeArray andrN   )r   r   r%   r&   rQ   rR   rS   )r(   r*   r  r   r-   r/   rT   r2   r2   r3   test_add_datetimelike_and_dtarr  s    z;TestDatetimeIndexArithmetic.test_add_datetimelike_and_dtarrc                 C   sp   t dd|d}|j}|| }|| }t|| |}|| }|| }t|| || }|| }t|| d S )Nr   r   r   )r   r"   r%   r  )r(   r)   r-   rJ   r0   r1   r   r2   r2   r3   test_dta_add_sub_index  s    z2TestDatetimeIndexArithmetic.test_dta_add_sub_indexc           	   	   C   sl  t ddd}t dddd}t dddd}tdddg}|| }t|| || }t|| d}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X ||8 }t|| t ddd}t dd	d}d
}tjt|d ||  W 5 Q R X t	dt
jdg}t	ddt
jg}tdt
jt
jg}|| }t|| d S )Nr   r   r@   r   UTCr   z9DatetimeArray subtraction must have the same timezones orrN   r   z$cannot add indices of unequal lengthr  z
2012-01-03z
2012-01-02rm   )r   r   r   r%   r  rQ   rR   rS   
ValueErrorr   r#   rd   )	r(   r-   r   Zdti_tz2r1   r0   rT   Zdti1Zdti2r2   r2   r3   test_sub_dti_dti  s6    z,TestDatetimeIndexArithmetic.test_sub_dti_dtirs   c                    s   t tdtdtdtdg}ddddd	g  fd
d}ttdgd  D ]P\}}}}}||||||}	t|||||d}
|||	}|||
}t|| qLd S )NZ20130301z20130228 23:00:00z20130228 22:00:00z20130228 21:00:00rB   rL   mr   usc                     s   t ttt jt|  S r   )r#   sumre   r   r   zip)argsZ	intervalsr2   r3   r     s    z_TestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_ops.<locals>.timedelta64r8   rM   )r:   r,  r8  r9  r:  )r   r   r   rf   r   r%   rq   )r(   rs   rZ   r   drL   r  r   r  ZnptdZpytdr   r   r2   r  r3   .test_timedelta64_equal_timedelta_supported_ops  s    	 

zJTestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_opsc              	   C   sJ  t ttdg}t ttdg}t ttgdd}t ttgdd}t tgdd}t tgdd}t|| | t|| | t| | | t|| | t|| | t| | | d}tjt|d ||  W 5 Q R X t|| | t|| | t|| | t|| | t|| | t|| | d S )NZ1sr   r   rV   rm  zcannot subtract a datelikerN   )	r   r   r   r   r%   rq   rQ   rR   rS   )r(   Ztimedelta_seriesr  Znat_series_dtype_timedeltar  r  Zsingle_nat_dtype_timedeltarT   r2   r2   r3   )test_ops_nat_mixed_datetime64_timedelta64  sr       zETestDatetimeIndexArithmetic.test_ops_nat_mixed_datetime64_timedelta64c                 C   s  t ddddd}tdd}t ddddd}|| t||fD ],}t|tsRtt|| |j	dks@tq@t d	dddd}|| t
||fD ],}t|tstt|| |j	dkstq|d }ttddtd
dtddg}tdddgdd}|| t||fD ]$}t|| |j	|j	kstqtd	ddgdd}|| t
||fD ]4}t|tsxtt|| |j	|j	ksdtqdd S )Nrk   r   Z2Dr   )r   rD   r   r;   rB   r  z
2010-12-31r8   z
2011-01-05z
2011-01-08r   )r   r#   r   rg  r   r   r   r%   r  rD   subtractr   r"   )r(   r   deltarY  r0   r2   r2   r3   test_ufunc_coercionsD	  s2    
 z0TestDatetimeIndexArithmetic.test_ufunc_coercionsc                 C   s   |}t ddg||d d}ttddgd ||d d	}t|tdd ||d d	}|d |_|j|jksnt|| }t|| || }t|| |tdd }|j| }	t	|	| ||j }
t	|
| d S )
Nz2016-06-28 05:30z2016-06-28 05:31r   )r   r   rM   )r9  r8   r;   )r   r   )
r   r   r   r   rW   r   r%   rq   r   r  )r(   r)   namesr   r   rZ   r1   r0   r!  Zresult3Zresult4r2   r2   r3   test_dti_add_seriesg	  s&      


z/TestDatetimeIndexArithmetic.test_dti_add_seriesc              	      s   t j}|}|}tdd||d d |t j t jjddg|d dt|}tt	  }	W 5 Q R X t
 fdd	tt D |d d
d}
t|
|}
t|	|
 d S )Nr]  r8   r   )r   r   r   r[  r;   r   c                    s   g | ]} | | qS r2   r2   r^  r_  r2   r3   r   	  s     zPTestDatetimeIndexArithmetic.test_dti_addsub_offset_arraylike.<locals>.<listcomp>Zinfer)r   rD   )r    r!   r   r  rG  r&  r   r%   r   r
   r   rf   r   r&   r'   )r(   r)   r  rs   rr   r+   	other_boxr   r,   r`  r1   r2   r_  r3    test_dti_addsub_offset_arraylike~	  s    $
  z<TestDatetimeIndexArithmetic.test_dti_addsub_offset_arrayliker  c              	   C   s   |}t dd|d}t||}|tj tddg}t||}tddg|d}	t|	|}	t	t
 || }
W 5 Q R X t|
|	 td	d
g|d}	t|	|}	t	t
 || }
W 5 Q R X t|
|	 d S )Nr]  r8   r   r   r9   z
2017-01-31z
2017-01-06r   z
2016-12-31z
2016-12-29)r   r%   r&   r    r  rG  r   r   r   r   r
   r'   )r(   r)   r*   r  r   r-   r/   r.   r,   r1   r0   r2   r2   r3    test_dti_addsub_object_arraylike	  s    
z<TestDatetimeIndexArithmetic.test_dti_addsub_object_arraylike)%r]   r^   r_   r  rQ   r`   ra   r#   r"   r    r!   r  r  r  r  r  r  r  r   r   r   r   r   r  r  r  r   rg  ri  r  r  r  r  r   rh  r  r  r2   r2   r2   r3   r    sH   
%

.
E#
r  r6  r6   r;   r7  r8   c                    sj   t tdtdtdtdtdg}t t|jd   } fdd|D }t |}t|| d S )	Nr/  r0  r   r2  r3  r  c                    s    g | ]}|t jj d  qS ))r6  r7  )r    r  r   r   r7  r6  r2   r3   r   	  s     z%test_shift_months.<locals>.<listcomp>)r   r   r   r   r%   r  )r6  r7  r-   actualrawr1   r2   r  r3   test_shift_months	  s    	r  c               	   C   s4  t dddd} | jd}tdd tdD }|j|jksBtt	t
 || }W 5 Q R X t	t
. |d d df |d d df  d	d
}W 5 Q R X t|tst|jd kstt|j|j t	t
 ||t }W 5 Q R X t|tst|jdkst|jd kst|jdk s0td S )Nz
1994-02-13Z2Wr   rC   )r   r;   c                 S   s   g | ]}t j|gqS r2   )r    r  r&  r^  r2   r2   r3   r   	  s     z7test_dt64arr_addsub_object_dtype_2d.<locals>.<listcomp>r   r6   r;   )r   rH   Zreshaper#   r"   rf   shaper   r%   r   r
   r   r   rD   rP   rg   rb   r   r   r   )r-   rJ   r.   r0   r1   r!  r2   r2   r3   #test_dt64arr_addsub_object_dtype_2d	  s"    2r  )7r   r   r   	itertoolsr   r   r   r  Znumpyr#   rQ   r  Zpandas._libs.tslibs.conversionr   Zpandas._libs.tslibs.offsetsr   Zpandas.compatr	   Zpandas.errorsr
   Zpandasr    r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr%   Zpandas.core.arraysr   r   Zpandas.core.opsr   Zpandas.tests.arithmetic.commonr   r   r   r   ri   r   r   r  rj  r~  r  r`   ra   r  r  r2   r2   r2   r3   <module>   sV   ,
p L   5      z  7   I