U
    -e]                    @   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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! d d	l"m#Z#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Z,G dd dZ-G dd dZ.e
j/0ddd dge
j/0ddd dgd d! Z1d"d# Z2d$d% Z3d&d' Z4d(d) Z5dS )*    )datetimetime	timedelta)productstarmapN)localize_pydatetime)shift_months)PerformanceWarning)	
DateOffsetDatetimeIndexNaTPeriodSeries	TimedeltaTimedeltaIndex	Timestamp
date_range)	roperator)assert_cannot_add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   st   |}|}t dd|d}t| d }t||}t||d}||k}	tdddg}
t|
|}
t|	|
 d S )N20130101   periodstzr   TF)r   nparrayZto_numpytmbox_expectedr   assert_equal)selftz_naive_fixturebox_with_arrayr   boxdtiotherdtarrxboxresultexpected r-   h/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pandas/tests/arithmetic/test_datetime64.pytest_compare_zerodim6   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)   r-   r-   r.   test_dt64arr_cmp_scalar_invalidE   s    zBTestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_scalar_invalidr8   Z1nsr   1 Dayz
1971-01-01Dfreqr   c                 C   s2   |}t ddd|dj}t||}t||| d S )N
1970-01-01nsr8   r?   r   r   )r   _datar    r!   r   )r#   r(   r$   r%   r   dtaobjr-   r-   r.   "test_dt64arr_cmp_arraylike_invalid_   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 )Nr@   h   rB   r   r6   r3   r   r4   FTzDInvalid comparison between|Cannot compare type|not supported betweenmatch)
r   rC   r   r   r   r    assert_numpy_array_equalpytestraises	TypeError)r#   r$   r   rD   r(   r+   r,   msgr-   r-   r.   test_dt64arr_cmp_mixed_invalidx   s"    zATestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_mixed_invalidc                 C   sn   |}|}t d|d}t|tg}t||}t||d}tddgtjd}	t|	|}	||k}
t|
|	 d S )Nz
2021-01-01r   TFdtype)	r   r   r   r    r!   r   r   Zbool_r"   )r#   r$   r%   r   r&   tsserrE   r*   r,   r+   r-   r-   r.   test_dt64arr_nat_comparison   s    z>TestDatetime64ArrayLikeComparisons.test_dt64arr_nat_comparison)__name__
__module____qualname__r/   rL   markparametrizeobjectr   r   dater   nanr:   listrangeZarangeastypeZfloat32pdtimedelta_ranger   Zperiod_rangerF   rP   rV   r-   r-   r-   r.   r   1   s@   


	r   c                   @   sT  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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ejd%ed&ed'dded(d)gejd*ejddddgfejddddgfejddddgfejddddgfgd+d, ZdS )-TestDatetime64SeriesComparisonpair
2011-01-01
2011-01-031 daysz3 daysz2011-01Mr?   z2011-03reverseTFrS   Nzop, expectedc                 C   sL   |}|\}}	|r|	| }}	t ||d}
||	|d}||
|}t|| d S )NrR   )r   r    assert_series_equal)r#   rS   index_or_seriesrk   re   opr,   r&   lhsrhsleftrightr+   r-   r-   r.   test_nat_comparisons   s    '

z3TestDatetime64SeriesComparison.test_nat_comparisonsdatac                 C   s  |}t ||d}t||}t|td}dddg}t||}|tjkr^|tkr^t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r|tkrt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 )NrR   TFbool)	r   r    r!   r   r   rb   r   r\   r"   )r#   rS   rt   r%   r&   rq   r*   r,   r-   r-   r.   test_nat_comparisons_scalar   s8    



z:TestDatetime64SeriesComparison.test_nat_comparisons_scalarvali  r6      rH   c                    s>   t tddd}| k}t  fdd|D }t|| d S )Nr7   r8   r;   c                    s   g | ]}| kqS r-   r-   .0xrw   r-   r.   
<listcomp>
  s     zQTestDatetime64SeriesComparison.test_series_comparison_scalars.<locals>.<listcomp>)r   r   r    rl   )r#   rw   Zseriesr+   r,   r-   r|   r.   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}|t|}t|| d S )NZ20010101r8   r;   datesnameT)deepnatr   r   Z20010109)	r   r   copyr   getattroperatorr    rl   r   )	r#   rq   rr   rU   Zs_natZleft_fZright_fr,   r+   r-   r-   r.   test_timestamp_compare_series  s$    



z<TestDatetime64SeriesComparison.test_timestamp_compare_seriesc              	   C   s  |}t tdtdtg}t||}t||d}||k}tdddg|}t|| |tjkrt	j
tdd ||d k W 5 Q R X n*||d k}tdddg|}t|| |tjkrt	j
tdd ||d k W 5 Q R X n*||d k}tdddg|}t|| ||k}tdddg|}t|| |tjkrjt	j
tdd ||d k W 5 Q R X n*||d k}tdddg|}t|| |tjkrt	j
tdd ||d k W 5 Q R X n*||d k}tdddg|}t|| d S )	Nz2000-01-29 01:59:00z
2000-01-30TFznot alignedrI   r   r3   )r   r   r   r    r!   r   r"   rb   	DataFramerL   rM   
ValueError)r#   r%   r&   rU   r*   r+   r,   r-   r-   r.   test_dt64arr_timestamp_equality0  sD    

z>TestDatetime64SeriesComparison.test_dt64arr_timestamp_equalitydatetimeliker   i  z2013-01-01T00:00rA   zop,expectedc                 C   sH   t tdtdtjtdgdd}|||}t |dd}t|| d S )N20120101r   Z20130103Ar   )r   r   r   r^   r    rl   )r#   r   rn   r,   rU   r+   r-   r-   r.   !test_dt64_compare_datetime_scalari  s    	
z@TestDatetime64SeriesComparison.test_dt64_compare_datetime_scalar)rW   rX   rY   rL   rZ   r[   r   r   r   r   r\   r   r   r   r   r   r   r   r   rs   rv   r   r~   r   r   r   
datetime64r   r-   r-   r-   r.   rd      sv   $ 
 

 9

	rd   c                   @   s  e Zd Z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dd Zdd Zejdedddede	
dgejddd Z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 )'TestDatetimeIndexComparisonsc                 C   sd   t d}|t|d  }t| }t|}|||}|||}t|tjsTt	t 
|| d S )Nd   r3   )r    ZmakeDateIndexlenr   to_datetime64r   r   
isinstanceZndarrayAssertionErrorrK   )r#   comparison_opindexelementZarrZ
arr_resultZindex_resultr-   r-   r.   test_comparators  s    



z-TestDatetimeIndexComparisons.test_comparatorsr(     r6   
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   r3   r   TF)	r   r   r   r   r   tzinfor   r    rK   )r#   r(   r$   r   r'   r+   r,   r-   r-   r.   test_dti_cmp_datetimelike  s*    z6TestDatetimeIndexComparisons.test_dti_cmp_datetimelikerS   Nc           
      C   s  t tdttdg}t tttdg}t||}t||}t||d}|| }}|tkrt|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 )Nrf   rg   TF)r   r   r   r    r!   r   r\   ra   r   r   r"   )
r#   rS   r%   rq   rr   r*   ro   rp   r+   r,   r-   r-   r.   test_dti_cmp_nat  s8    
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:00z2014-03-01 00:00r   z2014-06-01 00:00z2014-07-01 00:00TFr   i  r6   )rb   Indexr   r^   r   r   r   r   r    assert_produces_warningrK   r   )r#   Zfidx1Zfidx2Zdidx1Zdidx2darrZcasesZidx1Zidx2r+   r,   rw   r-   r-   r.   +test_dti_cmp_nat_behaves_like_float_cmp_nan  s    "zHTestDatetimeIndexComparisons.test_dti_cmp_nat_behaves_like_float_cmp_nanc           	   	   C   st  |}|}t ddd}|d}t||}t||}|tjkrJd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stt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sNtt|tj||td	ksptd S )
Nr      r;   
US/Pacificc                 S   s   |  tj d S )Nr   )ra   r\   valuestolistr{   r-   r-   r.   <lambda>K      zQTestDatetimeIndexComparisons.test_comparison_tzawareness_compat.<locals>.<lambda>z^Invalid comparison between dtype=datetime64\[ns.*\] and (Timestamp|DatetimeArray|list|ndarray)rI   rR   )r   tz_localizer    r!   rb   r   r_   r   r   r   rL   rM   rN   r   r   r\   allr   )	r#   r   r%   rn   r&   drdzr   rO   r-   r-   r.   "test_comparison_tzawareness_compat?  sD    


"""""z?TestDatetimeIndexComparisons.test_comparison_tzawareness_compatc           	   	   C   s  |}t ddd}|d}t||}t||}td}tddd}t||ksXt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/AmsterdamrQ   zAInvalid comparison between dtype=datetime64\[ns.*\] and TimestamprI   )r   r   r    r!   r   r   r   r   r   r   r   rL   rM   rN   )	r#   r   r%   rn   r   r   rT   Zts_tzrO   r-   r-   r.   *test_comparison_tzawareness_compat_scalarsp  s&    
zGTestDatetimeIndexComparisons.test_comparison_tzawareness_compat_scalarsz*ignore:elementwise comp:DeprecationWarningc              	   C   s   |}|}t dd|d}t||}t||d}	|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   r3   r   TrR   z:Invalid comparison between dtype=datetime64\[ns, .*\] and rI   )r   r    r!   r   r   r   r   r   r   ru   r"   typerW   rL   rM   rN   )r#   r   r(   tz_aware_fixturer%   rn   r   r'   r)   r*   Zexboolr,   r+   rO   r-   r-   r.   "test_scalar_comparison_tzawareness  s&    


z?TestDatetimeIndexComparisons.test_scalar_comparison_tzawarenessc                 C   sh   |}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    rK   r   )r#   r   rn   r'   r,   r+   r-   r-   r.   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 )Nr7   r8   r   TF	   )r   r   r   r    rK   )r#   r$   r   r9   r(   r+   r,   r-   r-   r.   test_dti_cmp_str  s*    z-TestDatetimeIndexComparisons.test_dti_cmp_strc                 C   s0   t ddd}|t|k}||k}t|| d S )Nr7   r8   r;   )r   r_   r    rK   )r#   r9   r+   r,   r-   r-   r.   test_dti_cmp_list  s    z.TestDatetimeIndexComparisons.test_dti_cmp_listZ1Dr8   r;   m8[ns]c                 C   s
   t | jS N)r   rW   r   r-   r-   r.   r     r   z%TestDatetimeIndexComparisons.<lambda>)Z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-01r8   
Asia/Tokyor   FTzInvalid comparison betweenrI   )r   r   r   r    rK   rL   rM   rN   )r#   r(   r'   r+   r,   rO   r-   r-   r.   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   r8   r   r   OTrH   r6   r4   FzB>=' not supported between instances of 'Timestamp' and 'Timedelta'rI   )r   ra   r   r   r    rK   r   r_   r   rL   rM   rN   )r#   r'   r(   r+   r,   rO   r-   r-   r.   test_dti_cmp_object_dtype  s    

&z6TestDatetimeIndexComparisons.test_dti_cmp_object_dtype)rW   rX   rY   r   rL   rZ   r[   r   r   r   r   r   r\   r   r   r   r   filterwarningsr   r   r   r   rb   rc   Z	to_seriesasi8viewr   r   r-   r-   r-   r.   r     s<   

%_1
	
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ejdeded ed eddg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!d"d#d$d%gejd&d%d'gd(d) Zejd*d+ed,d-ged.dd/ed0d1d2gejd3d%dgd4d5 Zejd6dd d#dgejd3d%dgd7d8 Zd9d: 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?d0d@ed0gdAdB Z"d%S )CTestDatetime64Arithmeticc                 C   sx   |}t dd|d}t dd|d}t||}t||}|| }t|| || }t|| ||7 }t|| d S )Nr   
2000-02-01rQ   z2000-01-01 02:00z2000-02-01 02:00r   r    r!   r"   r#   r$   Z	two_hoursr%   r   r9   r,   r+   r-   r-   r.   %test_dt64arr_add_timedeltalike_scalar*  s    z>TestDatetime64Arithmetic.test_dt64arr_add_timedeltalike_scalarc                 C   sd   |}t dd|d}t dd|d}t||}t||}|| }t|| ||8 }t|| d S )Nr   r   rQ   z1999-12-31 22:00z2000-01-31 22:00r   r   r-   r-   r.   %test_dt64arr_sub_timedeltalike_scalar@  s    z>TestDatetime64Arithmetic.test_dt64arr_sub_timedeltalike_scalarc              	   C   s   t dddd}t||}tdd}td}|| }tddd	g}t||}t|| || }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 d S )Nr   r   r;   
US/EasternCETi5)30 days 06:00:00z1 days 06:00:00z2 days 06:00:00-1 days +18:00:00z-2 days +18:00:00z-3 days +18:00:00;Cannot subtract tz-naive and tz-aware datetime-like objectsrI   )
r   r   r    r!   r   r   r"   rL   rM   rN   r#   r%   t1t2Ztnaiver+   r,   rO   r-   r-   r.   .test_dt64_array_sub_dt_with_different_timezoneQ  s*    zGTestDatetime64Arithmetic.test_dt64_array_sub_dt_with_different_timezonec              	   C   s   t dddd}t||}t dddd}t||}t ddd}|| }tdddg}t||}t|| || }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 d S )
Nr   r   r;   r   r   r   r   r   rI   )	r   r   r    r!   r   r"   rL   rM   rN   r   r-   r-   r.   6test_dt64_array_sub_dt64_array_with_different_timezonel  s,    zOTestDatetime64Arithmetic.test_dt64_array_sub_dt64_array_with_different_timezonec           
   	   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   r?   r   rQ   cannot subtractrI   )
r   r   timedelta64r   r    r!   r"   rL   rM   rN   )
r#   r%   r$   r   r'   r(   r,   rE   r+   rO   r-   r-   r.   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-31z
2016-01-02z
2016-01-04z8cannot subtract|(bad|unsupported) operand type for unaryrI   )	r   r   r   r    r!   r"   rL   rM   rN   )r#   r$   r%   r   r'   tdiZtdarrr,   r)   r+   rO   r-   r-   r.    test_dt64arr_add_sub_td64ndarray  s$    z9TestDatetime64Arithmetic.test_dt64arr_add_sub_td64ndarrayrT   
2013-01-01r=   c                 C   st   t dddd }t||}tdddg}t||}|| }t|| || }t||  t||  d S )Nr   r   r;   z0 Daysr<   z2 Days)r   
_with_freqr    r!   r   r"   )r#   r%   rT   idxr,   r+   r-   r-   r.   test_dt64arr_sub_dtscalar  s    z2TestDatetime64Arithmetic.test_dt64arr_sub_dtscalarc                 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-17r3   r=   r   r   r?   r   r   r6   )r   r   r    r!   r   r   r   r"   )r#   r%   rU   rT   Zdelta_seriesr,   r-   r-   r.   "test_dt64arr_sub_timestamp_tzaware  s    
z;TestDatetime64Arithmetic.test_dt64arr_sub_timestamp_tzawarec                 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]rR   r   )r   r   r   r    r!   r   r"   r   )r#   r%   r'   rU   r+   r,   dti_tzZser_tzr-   r-   r.   test_dt64arr_sub_NaT  s    
z-TestDatetime64Arithmetic.test_dt64arr_sub_NaTc              	   C   sh   t dd|d}|| }t||}t||t}tt ||t }W 5 Q R X t|| d S Nr   r   r   )r   r    r!   ra   r\   r   r	   r"   )r#   r%   r$   r'   r,   rE   r+   r-   r-   r.   !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)   r,   r+   r-   r-   r.   "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.Cannot subtract tz-naive and tz-aware datetimerI   )r   r   r    r!   rL   rM   rN   )r#   r   r%   r   r'   r   r)   rO   r-   r-   r.   )test_dt64arr_aware_sub_dt64ndarray_raises  s    zBTestDatetime64Arithmetic.test_dt64arr_aware_sub_dt64ndarray_raisesc                 C   s   |}t dd|d}|d kr&|d}n
|d }t||}t||j t|| t|| t||d  t||d   t||d   t||d  t||d   t|t	dd d S )Nr   r   r   r   r   rf   r=   )
r   r   r    r!   r   r   to_pydatetimer   r   r   )r#   r$   r%   r   r'   dti2r)   r-   r-   r.   test_dt64arr_add_dtlike_raises  s    


z7TestDatetime64Arithmetic.test_dt64arr_add_dtlike_raisesr?   HWri   ZMSQBNrS   Zuint8c           
      C   s  |}|t jkrd S |d kr,tddg|d}ntdd||d}||}tddg}|d k	rd||}d	d
ddddg}	t|d|	 t|t	d|	 t|tjdtj	d|	 t|||	 t|t||	 t|t ||	 t|t 
||	 t|t ||	 t|t||	 d S )Nr   z2017-04-05 06:07:08rQ   r   r3   r   rx   r1   |z Addition/subtraction of integersz"cannot subtract DatetimeArray fromz(can only perform ops with numeric valuesz%unsupported operand type.*Categoricalz:unsupported operand type\(s\) for -: 'int' and 'Timestamp'r6   r   rR   )rb   r   r   r   r   r   ra   joinr   Zint64ZCategoricalr   r   )
r#   rS   r%   r?   r$   r   r'   rE   r(   rO   r-   r-   r.   test_dt64arr_addsub_intlike9  s6    


z4TestDatetime64Arithmetic.test_dt64arr_addsub_intliker(   gQ	@r   r   rf   rj   r6   r3   r   dti_freqc                 C   s@   t ddg|d}t||}dddddd	g}t||| d S )
Nrf   
2011-01-02rj   r   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!   r   r   )r#   r   r(   r%   r'   r)   rO   r-   r-   r.   test_dt64arr_add_sub_invalidb  s    	z5TestDatetime64Arithmetic.test_dt64arr_add_sub_invalidpi_freqc           
      C   sT   t ddg|d}||}t||}t||}dddddg}	t|||	 d S )	Nrf   r   rj   r   r   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parrrO   r-   r-   r.   test_dt64arr_add_sub_parr|  s    
z2TestDatetime64Arithmetic.test_dt64arr_add_sub_parrc              	   C   s   |}t dd|d}dd tdD }t||}t||}dddg}tjd	d
  tdt t	|||d W 5 Q R X d S )N
2012-01-01r   r   c                 S   s   g | ]}t |||qS r-   )r   )rz   ir-   r-   r.   r}     s     zTTestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raises.<locals>.<listcomp>r   r  z*cannot subtract DatetimeArray from ndarrayTrecordignore)rO   )
r   r`   r    r!   r   warningscatch_warningssimplefilterr	   r   )r#   r%   r$   r   Zobj1obj2rO   r-   r-   r.   'test_dt64arr_addsub_time_objects_raises  s    z@TestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raisesdt64_seriesr   datetime64[ns]rR   oner   c              	   C   s   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 d S )Nz&cannot perform .* with this index typerI   )r    r!   rL   rM   rN   )r#   r  r  r%   rE   rO   r-   r-   r.   !test_dt64_mul_div_numeric_invalid  s    
z:TestDatetime64Arithmetic.test_dt64_mul_div_numeric_invalid)#rW   rX   rY   rL   rZ   Zarm_slowr   r   r   r   r   r   r[   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r  r-   r-   r-   r.   r   #  s`   




'

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 )N20130101 9:0120130101 9:02z20130101 9:01:05z20130101 9:02:05rH   )r   r   r    r!   rb   offsetsSecondr"   )r#   r%   rU   r,   r+   result2r-   r-   r.   '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:55rH   ((bad|unsupported) operand type for unaryrI   )r   r   r    r!   rb   r  r  r"   rL   rM   rN   )r#   r%   rU   r,   r+   r  rO   r-   r-   r.   '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  rH   )r   r   r    r!   r   rb   r  )r#   r  r%   rU   
offset_clsr-   r-   r.   *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	ddt
ddfD ]p}|| }t|| || }t|| || }t|| dddg}	tjt|	d ||  W 5 Q R X qd S )Nr   z
2012-11-01r   r   rH   r   z2010-11-01 00:00r   r   z2010-11-01 05:00z2010-11-01 06:00z2010-11-01 07:00)r?   r   rG   )hoursr   zbad operand type for unary -zcannot subtract DatetimeArrayrI   )r   rb   r  r  r   r   r    r!   r   r   r   r"   r   rL   rM   rN   )
r#   r   r%   r   r   offsetr,   ZscalarZ	roundtriprO   r-   r-   r.   test_dti_add_tick_tzaware  s2     $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   )yearsr3   )monthsrH   )r5   r   )r#  rH   )minutesr8   )secondsr3   )microsecondsrH   c                    s   g | ]}|  qS r-   r-   ry   offr-   r.   r}   C  s     zaTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsets.<locals>.<listcomp>c                    s   g | ]}|  qS r-   r-   ry   r2  r-   r.   r}   G  s     r6   c                    s   g | ]}|  qS r-   r-   ry   r2  r-   r.   r}   M  s     c                    s   g | ]}|  qS r-   r-   ry   r2  r-   r.   r}   Q  s     r  rI   )r   r   r    r!   rb   r   iloc	enumerater
   r"   dictrL   rM   rN   )
r#   r%   vec	vec_itemsZrelative_kwargsr  unitvaluer,   rO   r-   r2  r.   *test_dt64arr_add_sub_relativedelta_offsets%  sN    	zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsetscls_and_kwargsZ	YearBeginmonthrH   ZYearEndZ
MonthBeginMonthEndZSemiMonthEndZSemiMonthBeginZWeekweekdayr   r   ZBusinessDayZBDayZ
QuarterEndZQuarterBeginZCustomBusinessDayZCDayZ
CBMonthEndZCBMonthBeginZBMonthBeginZ	BMonthEndZBusinessHourZ
BYearBeginZBYearEndZBQuarterBeginLastWeekOfMonthr3   FY5253Quarterr6   Znearest)Zqtr_with_extra_weekstartingMonthr?  	variationFY5253r   )r?  rB  rC  WeekOfMonth)r?  weekZEasterr
   dayrx   	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   )rE  r@  rA  rD  r&  r'  r   r(  r)  r*  r+  r,  Tr  r	  rH  c                    s   g | ]}|  qS r-   r-   ry   r$  r-   r.   r}     s     zWTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsets.<locals>.<listcomp>c                    s   g | ]}|  qS r-   r-   ry   rJ  r-   r.   r}     s     c                    s   g | ]} | qS r-   r-   ry   rJ  r-   r.   r}     s     r  rI   )r   tupler   r   r    r!   rb   r   r4  r   r  r
  r  r  r	   r"   rL   rM   rN   )r#   r%   rI  rH  r<  r  kwargsr7  r8  r!  r,   rO   r-   rJ  r.    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   r6   r-  z
2001-01-01z
2001-01-31z
1999-01-01z
1999-01-31z2000-01-15 00:15:00z
US/CentralrQ   z
2000-02-15z2000-01-16 00:15:00z
2000-02-16z2000-01-31 00:15:00r)  )r   r    r!   r
   r   r"   r   r   rb   r  r  r>  )r#   r%   sr+   r  expr-   r-   r.   test_dt64arr_add_sub_DateOffset  s`    







zBTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsetr(   rI  rO  rn   	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||t}|rt||tjkrtjkrtj|td}tt |}	W 5 Q R X t|	| d S )N
2017-01-01r3   r   rS  c                    s   g | ]} | | qS r-   r-   rz   rI  r'   rn   r(   r-   r.   r}     s     zXTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_array.<locals>.<listcomp>rR   )r   r    r!   r   r   rb   r  r>  r  r   r`   r   ra   r\   r   raddr   r	   r"   )
r#   r$   r%   rT  rn   r(   r   r)   r,   resr-   rW  r.   !test_dt64arr_add_sub_offset_array  s    "zDTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_arrayzop, offset, exp, exp_freq__add__r8   )r.  r5   z
2014-04-11z
2015-04-11z
2016-04-11z
2017-04-11N)r.  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endr?   r   FrQ   )r   r    r!   r   r   r"   )r#   rn   r$  rQ  Zexp_freqr   r%   r   r]   Zmthr+   r,   r-   r-   r.   #test_dti_add_sub_nonzero_mth_offset+  s    5
zFTestDatetime64DateOffsetArithmetic.test_dti_add_sub_nonzero_mth_offset)rW   rX   rY   r  r  rL   rZ   r[   r"  r%  r;  rM  rR  r   r   rb   r  r>  r  r
   r   addr   rX  subrZ  r   r_  r-   r-   r-   r.   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%   rq   rr   r,   r+   r-   r-   r.   test_dt64_overflow_maskingn  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100Yrx   r>   Overflow in int64 additionrI   r1   z
2004-10-03z
2104-10-04z
2204-10-04r   r  rR   r6   z
91279 Daysr   )r   r   r   r   rL   rM   OverflowErrorr   r4  r    rl   )r#   dttdr'   rU   rO   r,   rY  r-   r-   r.   test_dt64_series_arith_overflow|  s8    

 z>TestDatetime64OverflowHandling.test_dt64_series_arith_overflowc              
   C   sJ  t dtjg}t dtjg}tdd}|| | d| dg}td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 )
N2021-12-28 17:19
1950-01-01rA   r  zdatetime64[D]
1980-01-01rd  rI   r6   )rb   to_datetimer   maxminZas_unitr   r   ra   rL   rM   re  _valuer   )r#   dtimaxdtiminZtsnegZts_neg_variantsZtsposZts_pos_variantsrO   variantr,   rY  r-   r-   r.   )test_datetimeindex_sub_timestamp_overflow  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 )Nri  rj  rk  r6   rd  rI   Z1us)rb   rl  r   rm  rn  ro  r   rL   rM   re  r   )r#   rp  rq  Zts_negZts_posr,   r+   rO   Ztminr   Ztmaxr   r-   r-   r.   -test_datetimeindex_sub_datetimeindex_overflow  s.    zLTestDatetime64OverflowHandling.test_datetimeindex_sub_datetimeindex_overflowN)rW   rX   rY   rc  rh  rs  rt  r-   r-   r-   r.   rb  k  s    &rb  c                   @   s  e Zd Zdd Zdd Zdd Zejde	de	d	e
ge	d
e	de	dgddgge	de	d	e
gedddeddde
gdddgge	ddde	ddde
geddde
edddgdddgggdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$S )%TestTimestampSeriesArithmeticc              	   C   s~   t dd}t dd}||}||}t|||  t|||  t|||  d}tjt|d ||  W 5 Q R X d S )NzM8[ns]rR   r   r   rI   )r   r    r"   rL   rM   rN   )r#   r%   rN  brO   r-   r-   r.   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 )NrH   r   r/  r0  r3   20111230r   Z20120103201112312012010220120104)r   r   r   r^   r4  r   )r#   td1dt1dt2r-   r-   r.   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  r6            r   r      r   )	r   r   r   rb   Zto_timedeltar   absrS   r   )r#   rT   rf  rU   r+   r-   r-   r.   test_dt64ser_sub_datetime_dtype  s
    
z=TestTimestampSeriesArithmetic.test_dt64ser_sub_datetime_dtypezleft, right, op_failry  r   rz  r{  r|  r\  __rsub__rH   r   rx  r[  __radd__r   rQ   c           	   	   C   sX   |}t |}t |}t||d }||krLtjtdd || W 5 Q R X n|| d S )Nz%operate|[cC]annot|unsupported operandrI   )r   r   rL   rM   rN   )	r#   rq   rr   Zop_failZall_arithmetic_operatorsZop_strZarg1Zarg2rn   r-   r-   r.   #test_operators_datetimelike_invalid  s     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_PaulorQ   z
2016-02-08Z2daysz-2days)r   r   r   r    rl   )r#   s1s2r+   r,   r-   r-   r.   test_sub_single_tzM  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-30r8   r   r   Z0days)r   r   r   r    rl   )r#   r'   rU   r,   rY  r-   r-   r.   test_dt64tz_series_sub_dtitzX  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  rh   )	r   r   pytzutcr   r   r    rl   r   )r#   rP  rf  rQ  r-   r-   r.   test_sub_datetime_compatd  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  rH   z20130101 9:01:00.005z20130101 9:02:00.005z20130101 9:06:00.005z20130101 9:07:00.005)r   r   rb   r  r   r    rl   r  )r#   rP  r+   r  r,   r-   r-   r.   *test_dt64_series_add_mixed_tick_DateOffsetl  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   r  rR   z-bad operand type for unary -: 'DatetimeArray'rI   )r   r   r   r    rl   rL   rM   rN   )r#   datetime_seriesnat_series_dtype_timestampsingle_nat_dtype_datetimerO   r-   r-   r.   test_datetime64_ops_nat  s:         z5TestTimestampSeriesArithmetic.test_datetime64_ops_natc           	   	   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   z2000-01-01 09:00:00rH   r   r0   r   r3   z1 days 1 minr   )r   r?   r6   r   r  rI   r   )r   r   r   r   r^   r4  rb   rc   _valuesr?   r   rf  r   r    rl   rL   rM   rN   )	r#   r   r~  r  r}  Ztd2r+   rQ  rO   r-   r-   r.   *test_operators_datetimelike_with_timezones  s`    zHTestTimestampSeriesArithmetic.test_operators_datetimelike_with_timezonesN)rW   rX   rY   rw  r  r  rL   rZ   r[   r   r   r   r  r  r  r  r  r  r  r-   r-   r-   r.   ru    s:   !


$ru  c                   @   s   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ejejgdd Zdd Zdd Zdd Ze	j
dejejejgdd Ze	j
dejejgdd ZdS )TestDatetimeIndexArithmeticc                 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 NrU  rQ   r8   0 daysr;   r   	r   r   rb   rc   r   r   r    assert_index_equalr   r#   r$   r   r'   r   r,   r+   r-   r-   r.   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  r-   r-   r.   test_dti_iadd_tdi  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 )NrU  rQ   r8   r  r;   -1Dr   z cannot subtract .*TimedeltaArrayrI   0cannot subtract a datelike from a TimedeltaArray)r   r   rb   rc   r   r   r    r  rL   rM   rN   r   )r#   r$   r   r'   r   r,   r+   rO   r-   r-   r.   test_dti_sub_tdi  s    

z,TestDatetimeIndexArithmetic.test_dti_sub_tdic           
   	   C   sZ  |}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|| |j	 }||8 }t
||j |j	 }tj|||d t
||j d	}	tjt|	d
 ||8 }W 5 Q R X t td|dgd }||j8 }t|| tjt|	d
 | j|8  _W 5 Q R X tjt|	d
 | j|8  _W 5 Q R X d S )NrU  rQ   r8   r  r;   r  r   )outr  rI   )r   r   rb   rc   r   r   r    r  rC   r   Zassert_datetime_array_equalr   subtractrL   rM   rN   r   r  )
r#   r$   r   r'   r   r,   r+   rD   r  rO   r-   r-   r.   test_dti_isub_tdi.  s0    



z-TestDatetimeIndexArithmetic.test_dti_isub_tdic                 C   sp   t dd|d}|j}|| }|| }t|| |}|| }|| }t|| || }|| }t|| d S )Nr   r   r   )r   r   r    r  )r#   r$   r'   rD   r+   r,   r   r-   r-   r.   test_dta_add_sub_indexZ  s    z2TestDatetimeIndexArithmetic.test_dta_add_sub_indexc              	   C   s8  t 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 ||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   r   r   rI   rx   z$cannot add indices of unequal lengthr  z
2012-01-03z
2012-01-02rh   )r   r   r   r    r  rL   rM   rN   r   r   r   r^   )r#   r'   r   r,   r+   rO   Zdti1r   r-   r-   r.   test_sub_dti_dtik  s0    z,TestDatetimeIndexArithmetic.test_sub_dti_dtirn   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|| qTd S )NZ20130301z20130228 23:00:00z20130228 22:00:00z20130228 21:00:00r=   rG   mrP  usc                     s   t ttt jt|  S r   )r   sumr_   r   r   zip)argsZ	intervalsr-   r.   r     s    z_TestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_ops.<locals>.timedelta64r3   rH   )r5   r#  r/  r0  r1  )r   r   r   r`   r   r    r"   )r#   rn   r%   rU   rE   r   drG   r  rP  r  ZnptdZpytdro   rp   r-   r  r.   .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   rR   r  zcannot subtract a datelikerI   )	r   r   r   r   r    rl   rL   rM   rN   )r#   Ztimedelta_seriesr  Znat_series_dtype_timedeltar  r  Zsingle_nat_dtype_timedeltarO   r-   r-   r.   )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 )Nrf   r   Z2Dr{   )r   r?   r   r6   r=   r   z
2010-12-31r3   z
2011-01-05z
2011-01-08r   )r   r   r   r`  r   r   r   r    r  r?   r  r   r   )r#   r   deltarQ  r+   r-   r-   r.   test_ufunc_coercions  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   rH   )r0  r3   r6   )r   r   )
r   r   r   r   rS   r   r    rl   r   r  )r#   r$   namesr   r   rU   r,   r+   r  Zresult3Zresult4r-   r-   r.   test_dti_add_series	  s&      


z/TestDatetimeIndexArithmetic.test_dti_add_seriesc           
   	      s   |}|}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}	t||	 d S )NrU  r3   r   )r   r   r   rS  r6   r   c                    s   g | ]} | | qS r-   r-   rV  rW  r-   r.   r}   ?	  s     zPTestDatetimeIndexArithmetic.test_dti_addsub_offset_arraylike.<locals>.<listcomp>Zinfer)r   r?   )r   rb   r  r>  r  r   r    r   r	   r   r`   r   r!   ra   r\   r"   )
r#   r$   r  rn   rm   	other_boxr   r*   rY  r,   r-   rW  r.    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t || }
W 5 Q R X t|
|	 td	d
g|d}	t|	|	t
}	tt || }
W 5 Q R X t|
|	 d S )NrU  r3   r   rx   r4   z
2017-01-31z
2017-01-06rQ   z
2016-12-31z
2016-12-29)r   r    r!   rb   r  r>  r   r   r   ra   r\   r   r	   r"   )r#   r$   r%   r  r   r'   r)   r(   r*   r,   r+   r-   r-   r.    test_dti_addsub_object_arraylikeD	  s    
z<TestDatetimeIndexArithmetic.test_dti_addsub_object_arraylikeN)rW   rX   rY   r  r  r  r  r  r  rL   rZ   r[   r   r`  ra  r  r  r  r  r   rX  r  rb   r   r   r   r  r-   r-   r-   r.   r    s   ,*
E#
r  r-  r1   r6   r.  r3   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&  r'  r   r)  r*  r  c                    s    g | ]}|t jj d  qS ))r-  r.  )rb   r  r
   ry   r.  r-  r-   r.   r}   l	  s     z%test_shift_months.<locals>.<listcomp>)r   r   r   r   r    r  )r-  r.  r'   actualrawr,   r-   r  r.   test_shift_months^	  s    	r  c               	   C   s   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	t
 ||t }W 5 Q R X |jdksttdd | D std S )Nz
1994-02-13Z2Wrx   r>   )rx   r6   c                 S   s   g | ]}t j|gqS r-   )rb   r  r  rV  r-   r-   r.   r}   w	  s     z7test_dt64arr_addsub_object_dtype_2d.<locals>.<listcomp>r   r1   r6   c                 s   s   | ]}|j d kV  qdS )r   N)ro  )rz   rg  r-   r-   r.   	<genexpr>	  s     z6test_dt64arr_addsub_object_dtype_2d.<locals>.<genexpr>)r   rC   Zreshaper   r   r`   shaper   r    r   r	   rK   ra   r\   r   Zravel)r'   rD   r(   r+   r,   r  r-   r-   r.   #test_dt64arr_addsub_object_dtype_2dq	  s    2r  c                  C   sr   t dddgdd} | tdd }t tgd d	d}t|| | tdd }t tgd dd}t|| d S )
N   CE|   |<    ({?M5datetime64[ms]rR   r   msr   ztimedelta64[ms]r   r   r   r   r    rl   r   rU   r+   r,   r-   r-   r.   (test_non_nano_dt64_addsub_np_nat_scalars	  s    r  c                  C   sn   t dddgdd} | td }t tgd dd}t|| | td }t tgd d	d}t|| d S )
Nr  r  r  r  rR   r   r   r   r  r  r  r-   r-   r.   1test_non_nano_dt64_addsub_np_nat_scalars_unitless	  s    r  c                  C   sr   t dddgdd} | tdd }t tgd d	d}t|| | tdd }t tgd dd}t|| d S )
Ni,0  iZ  iہ  zdatetime64[s]rR   r   r=   r   ztimedelta64[s]r  r  r-   r-   r.   9test_non_nano_dt64_addsub_np_nat_scalars_unsupported_unit	  s    r  )6r   r   r   	itertoolsr   r   r   r
  numpyr   rL   r  Zpandas._libs.tslibs.conversionr   Zpandas._libs.tslibs.offsetsr   Zpandas.errorsr	   Zpandasrb   r
   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr    Zpandas.core.opsr   Zpandas.tests.arithmetic.commonr   r   r   r   r   rd   r   r   r  rb  ru  r  rZ   r[   r  r  r  r  r  r-   r-   r-   r.   <module>   sT   ,p k      )   %z ~  ~