a
    Pf`                    @   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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./dg de	j./dg de	j./dg dd d! Z0d"d# Z1d$d% Z2d&d' Z3d(d) Z4d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   sr   |}|}t dd|d}t| d }t||}t||d}||k}	tg d}
t|
|}
t|	|
 d S )N20130101   periodstzr   TTFF)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.   `/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/arithmetic/test_datetime64.pytest_compare_zerodim5   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_invalidD   s    zBTestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_scalar_invalidr9   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nsr9   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   sP  |}t ddd|dj}tddd|d tdd	g}||k}tg d
}t|| ||k}t||  d}tjt	|d ||k  W d    n1 s0    Y  tjt	|d ||k W d    n1 s0    Y  tjt	|d ||k W d    n1 s
0    Y  tjt	|d ||k W d    n1 sB0    Y  d S )NrA   h   rC   r   r7   r4   r   r5   )FFFTFzDInvalid comparison between|Cannot compare type|not supported betweenmatch)
r   rD   r   r    r   r!   assert_numpy_array_equalpytestraises	TypeError)r$   r%   r   rE   r)   r,   r-   msgr.   r.   r/   test_dt64arr_cmp_mixed_invalidw   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serrF   r+   r-   r,   r.   r.   r/   test_dt64arr_nat_comparison   s    z>TestDatetime64ArrayLikeComparisons.test_dt64arr_nat_comparison)__name__
__module____qualname__r0   rM   markparametrizeobjectr   r   dater   nanr;   listrangeZarangeastypeZfloat32pdtimedelta_ranger    Zperiod_rangerG   rQ   rW   r.   r.   r.   r/   r   0   s@   


	r   c                   @   s4  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g dfejeg dfejeg dfejeg dfejeg dfejeg d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g d d!d" Zd#d$ Zejd%ed&ed'dded(d)gejd*ejg d+fejg d,fejg d-fejg d.fgd/d0 ZdS )1TestDatetime64SeriesComparisonpair
2011-01-01
2011-01-031 daysz3 daysz2011-01Mr@   z2011-03reverseTFrT   Nzop, expectedFFTTTFFFFc                 C   sL   |}|\}}	|r|	| }}	t ||d}
||	|d}||
|}t|| d S )NrS   )r   r!   assert_series_equal)r$   rT   index_or_seriesrl   rf   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}g d}t||}|tju r\|tu r\tj|dd}t|tk| tt|k| g d}t||}|tju r|tu rtj|dd}t|tk| tt|k| g d}t||}|tju r|tu 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 )NrS   Tro   boolTTT)	r   r!   r"   r   r   rc   r    r]   r#   )r$   rT   rx   r&   r'   ru   r+   r-   r.   r.   r/   test_nat_comparisons_scalar   s8    
z:TestDatetime64SeriesComparison.test_nat_comparisons_scalarvali  r7      rI   c                    s>   t tddd}| k}t  fdd|D }t|| d S )Nr8   r9   r<   c                    s   g | ]}| kqS r.   r.   .0xr|   r.   r/   
<listcomp>	      zQTestDatetime64SeriesComparison.test_series_comparison_scalars.<locals>.<listcomp>)r   r   r!   rp   )r$   r|   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20010101r9   r<   datesnameT)deepnatr   r   Z20010109)	r   r   copyr   getattroperatorr!   rp   r   )	r$   ru   rv   rV   Zs_natZleft_fZright_fr-   r,   r.   r.   r/   test_timestamp_compare_series  s$    



z<TestDatetime64SeriesComparison.test_timestamp_compare_seriesc                 C   sB  |}t tdtdtg}t||}t||d}||k}tg d|}t|| |tju rt	j
tdd ||d k W d    q1 s0    Y  n(||d k}tg d|}t|| |tju rt	j
tdd ||d	 k W d    n1 s0    Y  n(||d	 k}tg d
|}t|| ||k}tg d|}t|| |tju rt	j
tdd ||d k W d    n1 s0    Y  n(||d k}tg d|}t|| |tju rt	j
tdd ||d	 k W d    n1 s
0    Y  n(||d	 k}tg d|}t|| d S )Nz2000-01-29 01:59:00z
2000-01-30Trm   znot alignedrJ   r   )FTTr4   rz   rn   r   ro   )r   r   r   r!   r"   r   r#   rc   	DataFramerM   rN   
ValueError)r$   r&   r'   rV   r+   r,   r-   r.   r.   r/   test_dt64arr_timestamp_equality/  sD    
,...z>TestDatetime64SeriesComparison.test_dt64arr_timestamp_equalitydatetimeliker   i  z2013-01-01T00:00rB   zop,expected)TFFF)TTFF)FTFF)FFFTc                 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!   rp   )r$   r   rr   r-   rV   r,   r.   r.   r/   !test_dt64_compare_datetime_scalarh  s    	
z@TestDatetime64SeriesComparison.test_dt64_compare_datetime_scalar)rX   rY   rZ   rM   r[   r\   r   r   r   r   r]   r   r   r   r   r   r   r   r   rw   r{   r   r   r   r   r   
datetime64r   r.   r.   r.   r/   re      st   $ 

 9

	re   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   sf   t ddd}|t|d  }t| }t|}|||}|||}t|tjsVJ t	|| d S )Nz
2020-01-01r9   r<   r4   )
r   lenr   to_datetime64r   r    
isinstanceZndarrayr!   rL   )r$   comparison_opindexelementZarrZ
arr_resultZindex_resultr.   r.   r/   test_comparators  s    


z-TestDatetimeIndexComparisons.test_comparatorsr)     r7   
2016-01-01c                 C   s   |}t dd|d}|d urHt|tjr<tt|j d 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   r4   r   z is not tz awareTF)r   r   r   r   rM   skiptyperX   r   tzinfor    r!   rL   )r$   r)   r%   r   r(   r,   r-   r.   r.   r/   test_dti_cmp_datetimelike  s*    z6TestDatetimeIndexComparisons.test_dti_cmp_datetimelikerT   Nc           
      C   s  t tdttdg}t tttdg}t||}t||}t||d}|| }}|tu rt|t|t }}||k}t	g d}	t|	|}	t
||	 ||k}t	g d}	t|	|}	t
||	 t	g d}	t|	|}	t
|tk|	 t
t|k|	 t	g d}	t|	|}	t
|tk|	 t
t|k|	 t	g d}	t|	|}	t
|tk |	 t
t|k|	 d S )Nrg   rh   Trm   rn   ro   rz   )r   r   r   r!   r"   r   r]   rb   r   r    r#   )
r$   rT   r&   ru   rv   r+   rs   rt   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g d}
t
|	|
 ||k}	tg d}
t
|	|
 ||k}	tg d}
t
|	|
 ||k}	tg d}
t
|	|
 ||k}	tg d}
t
|	|
 ||k}	tg d}
t
|	|
 qW d    n1 s0    Y  t	d  |tjf|tffD ]\}}||k }	tg d}
t
|	|
 ||k}	t
|	|
 ||k}	t
|	|
 ||k}	t
|	|
 ||k}	t
|	|
 ||k}	tg d}
t
|	|
 qW d    n1 s0    Y  t	d   |df|tdddffD ]\}}||k }	tg d}
t
|	|
 ||k}	tg d}
t
|	|
 ||k}	tg d}
t
|	|
 ||k}	tg d}
t
|	|
 ||k}	tg d}
t
|	|
 ||k}	tg d }
t
|	|
 qW d    n1 s0    Y  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:00)TFFFTF)TFFFTT)FFFFFT)TTTTTF)FFFFFF)TTTTTTr   i  r7   )TFFFFF)FFFFTT)TFTFFF)FFTFTT)FFTFFF)TTFTTT)rc   Indexr   r_   r   r   r    r   r!   assert_produces_warningrL   r   )r$   Zfidx1Zfidx2Zdidx1Zdidx2darrZcasesZidx1Zidx2r,   r-   r|   r.   r.   r/   +test_dti_cmp_nat_behaves_like_float_cmp_nan  s    .0 zHTestDatetimeIndexComparisons.test_dti_cmp_nat_behaves_like_float_cmp_nanc           	      C   s  |}|}t ddd}|d}t||}t||}|tju rJdd }nt}|tjtj	fvrd}t
jt|d ||| W d    n1 s0    Y  t
jt|d |||| W d    n1 s0    Y  t
jt|d( ||tj||td	 W d    n1 s0    Y  t
jt|d ||| W d    n1 sP0    Y  t
jt|d |||| W d    n1 s0    Y  t
jt|d( ||tj||td	 W d    n1 s0    Y  t||ksJ t|||ksJ t|||ks$J ttj||td	|ksFJ t|tj||td	kshJ t||ks|J t|||ksJ t|||ksJ ttj||td	|ksJ t|tj||td	ksJ d S )
Nr      r<   
US/Pacificc                 S   s   |  tj d S )Nr   )rb   r]   valuestolistr   r.   r.   r/   <lambda>I  r   zQTestDatetimeIndexComparisons.test_comparison_tzawareness_compat.<locals>.<lambda>z^Invalid comparison between dtype=datetime64\[ns.*\] and (Timestamp|DatetimeArray|list|ndarray)rJ   rS   )r   tz_localizer!   r"   rc   r   r`   r   r   r   rM   rN   rO   r   r    r]   all)	r$   r   r&   rr   r'   drdzr   rP   r.   r.   r/   "test_comparison_tzawareness_compat=  sD    


(,8*.8"""z?TestDatetimeIndexComparisons.test_comparison_tzawareness_compatc           	      C   sN  |}t ddd}|d}t||}t||}td}tddd}t||ksXJ d}|tjtj	fvrt
jt|d	 ||| W d    n1 s0    Y  t||ksJ |tjtj	fvrt
jt|d	 ||| W d    n1 s0    Y  |tjtj	fvrJt
jt|d	 ||| W d    n1 s@0    Y  d S )
Nr   r   r<   r   z2000-03-14 01:59zEurope/AmsterdamrR   zAInvalid comparison between dtype=datetime64\[ns.*\] and TimestamprJ   )r   r   r!   r"   r   r   r   r   r   r   rM   rN   rO   )	r$   r   r&   rr   r   r   rU   Zts_tzrP   r.   r.   r/   *test_comparison_tzawareness_compat_scalarsn  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v r|tju }
tj|
|
gt	d}t||	}|||}t
|| |||}t
|| ndt|j }tjt|d ||| W d    n1 s0    Y  tjt|d ||| W d    n1 s0    Y  d S )Nr   r4   r   TrS   z:Invalid comparison between dtype=datetime64\[ns, .*\] and rJ   )r   r!   r"   r   r   r   r   r   r    ry   r#   r   rX   rM   rN   rO   )r$   r   r)   tz_aware_fixturer&   rr   r   r(   r*   r+   Zexboolr-   r,   rP   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!   rL   r   )r$   r   rr   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 )Nr8   r9   r   TF	   )r   r   r    r!   rL   )r$   r%   r   r:   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 )Nr8   r9   r<   )r   r`   r!   rL   )r$   r:   r,   r-   r.   r.   r/   test_dti_cmp_list  s    z.TestDatetimeIndexComparisons.test_dti_cmp_listZ1Dr9   r<   m8[ns]c                 C   s
   t | jS N)r   rX   r   r.   r.   r/   r     r   z%TestDatetimeIndexComparisons.<lambda>)Zidsc                 C   s8  t dddd}||k}tdgd }t|| ||k}tdgd }t|| d}tjt|d ||k  W d    n1 s0    Y  tjt|d ||k W d    n1 s0    Y  tjt|d ||k W d    n1 s0    Y  tjt|d ||k W d    n1 s*0    Y  d S )	N
2000-01-01r9   
Asia/Tokyor   FTzInvalid comparison betweenrJ   )r   r   r    r!   rL   rM   rN   rO   )r$   r)   r(   r,   r-   rP   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 d    n1 s0    Y  d S )Nr   r9   r   r   OTrI   r7   r5   FzB>=' not supported between instances of 'Timestamp' and 'Timedelta'rJ   )r   rb   r   r    r!   rL   r   r`   r   rM   rN   rO   )r$   r(   r)   r,   r-   rP   r.   r.   r/   test_dti_cmp_object_dtype  s    

&z6TestDatetimeIndexComparisons.test_dti_cmp_object_dtype)rX   rY   rZ   r   rM   r[   r\   r   r   r   r   r   r]   r   r   r   r   filterwarningsr   r   r   r   rc   rd   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g dejd d!d"g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d1g d2ejd.d!dgd3d4 Zejd5d6d7 Z ejd8e!ed9ed9ge!e"ed9ge!e"e"gd:d;gejd<d+d=ed+gd>d? Z#d!S )@TestDatetime64Arithmeticc                 C   sx   |}t dd|d}t dd|d}t||}t||}|| }t|| || }t|| ||7 }t|| d S )Nr   
2000-02-01rR   z2000-01-01 02:00z2000-02-01 02:00r   r!   r"   r#   r$   r%   Z	two_hoursr&   r   r:   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   rR   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g d}t||}t|| || }tg d}t||}t|| d	}tjt	|d
 ||  W d    n1 s0    Y  tjt	|d
 ||  W d    n1 s0    Y  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 objectsrJ   )
r   r   r!   r"   r   r   r#   rM   rN   rO   r$   r&   t1t2Ztnaiver,   r-   rP   r.   r.   r/   .test_dt64_array_sub_dt_with_different_timezoneO  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g d}t||}t|| || }tg d}t||}t|| d}tjt|d	 ||  W d    n1 s0    Y  tjt|d	 ||  W d    n1 s0    Y  d S )
Nr   r   r<   r   r   )r   r   r   )r   r   r   r   rJ   )	r   r   r!   r"   r   r#   rM   rN   rO   r   r.   r.   r/   6test_dt64_array_sub_dt64_array_with_different_timezonej  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d}t||}t||}|| }t|| || }t|| || }t|| d}	tj	t
|	d	 ||  W d    n1 s0    Y  d S )
Nz
1994-04-01r   ZQSr   r   r@   r   rR   rB   cannot subtractrJ   )r   r   timedelta64r   as_unitr!   r"   r#   rM   rN   rO   )
r$   r&   r%   r   r(   r)   r-   rF   r,   rP   r.   r.   r/   test_dt64arr_add_sub_td64_nat  s    
z6TestDatetime64Arithmetic.test_dt64arr_add_sub_td64_natc                 C   s   |}t dd|d}tg d}|j}t ddd|d}t||}t||}|| }	t|	| || }	t|	| t ddd|d}t||}|| }	t|	| d}
tjt|
d	 ||  W d    n1 s0    Y  d S )
Nr   r   r   )-1 Dayr   r   z
2015-12-31z
2016-01-02z
2016-01-04z8cannot subtract|(bad|unsupported) operand type for unaryrJ   )	r   r   r   r!   r"   r#   rM   rN   rO   )r$   r%   r&   r   r(   tdiZtdarrr-   r*   r,   rP   r.   r.   r/    test_dt64arr_add_sub_td64ndarray  s$    z9TestDatetime64Arithmetic.test_dt64arr_add_sub_td64ndarrayrU   
2013-01-01r>   c                 C   sr   t dddd }t||}tg d}t||}|| }t|| || }t||  t||  d S )Nr   r   r<   )z0 Daysr=   z2 Days)r   
_with_freqr!   r"   r   r#   )r$   r&   rU   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-17r4   r>   r   r   r@   r   r   r7   )r   r   r!   r"   r   r   r   r#   )r$   r&   rV   rU   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d}t||}t|| |d}t||}|t }tttgd| dd}t||}t|| d S )N19900315timedelta64[]rS   r   )	r   r   r   r   r!   r"   r   r#   r   )	r$   r&   unitr(   rV   r,   r-   dti_tzZser_tzr.   r.   r/   test_dt64arr_sub_NaT  s    
z-TestDatetime64Arithmetic.test_dt64arr_sub_NaTc                 C   s|   t dd|d}|| }t||}t||t}tt ||t }W d    n1 sb0    Y  t|| d S Nr   r   r   )r   r!   r"   rb   r]   r   r	   r#   )r$   r&   r%   r(   r-   rF   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   s   |}t dd|d}|j}t||}d}tjt|d ||  W d    n1 sT0    Y  tjt|d ||  W d    n1 s0    Y  d S )Nr   r   r   z.Cannot subtract tz-naive and tz-aware datetimerJ   )r   r   r!   r"   rM   rN   rO   )r$   r   r&   r   r(   r   r*   rP   r.   r.   r/   )test_dt64arr_aware_sub_dt64ndarray_raises
  s    &zBTestDatetime64Arithmetic.test_dt64arr_aware_sub_dt64ndarray_raisesc                 C   s   |}t dd|d}|d u 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   rg   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@   )rH   r>   WZ2MEZMSZQEBNrT   NZuint8c                 C   s  |}|d u rt ddg|d}ntdd||d}||}tddg}	|d urV|	|}	d	g d
}
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:08rR   r   r4   r   r}   r2   |)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'r7   r   rS   )r   r   r   r    rb   joinr   Zint64rc   ZCategoricalr   r   )r$   requestrT   Zindex_or_series_or_arrayr@   r%   r   r(   rF   r)   rP   r.   r.   r/   test_dt64arr_addsub_intlike7  s(    

z4TestDatetime64Arithmetic.test_dt64arr_addsub_intliker)   gQ	@r   r   rg   rk   r7   r4   r   dti_freqc                 C   s:   t ddg|d}t||}dg d}t||| d S )Nrg   
2011-01-02rk   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*   rP   r.   r.   r/   test_dt64arr_add_sub_invalid_  s    	z5TestDatetime64Arithmetic.test_dt64arr_add_sub_invalidpi_freq)r>   r   QrH   c           
      C   sP   t ddg|d}||}t||}t||}dg d}	t|||	 d S )Nrg   r  rk   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parrrP   r.   r.   r/   test_dt64arr_add_sub_parry  s    
z2TestDatetime64Arithmetic.test_dt64arr_add_sub_parr(ignore::pandas.errors.PerformanceWarningc                 C   s\   |}t dd|d}dd tdD }t||}t||}dddg}t|||d	 d S )
N
2012-01-01r   r   c                 S   s   g | ]}t |||qS r.   )r   )r   ir.   r.   r/   r     r   zTTestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raises.<locals>.<listcomp>r   r
  z*cannot subtract DatetimeArray from ndarray)rP   )r   ra   r!   r"   r  r   )r$   r&   r%   r   Zobj1obj2rP   r.   r.   r/   'test_dt64arr_addsub_time_objects_raises  s    	z@TestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raisesdt64_seriesr   datetime64[ns]rS   oner   c                 C   s   t ||}d}tjt|d ||  W d    n1 s<0    Y  tjt|d ||  W d    n1 sr0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  d S )Nz&cannot perform .* with this index typerJ   )r!   r"   rM   rN   rO   )r$   r  r  r&   rF   rP   r.   r.   r/   !test_dt64_mul_div_numeric_invalid  s    
&&&z:TestDatetime64Arithmetic.test_dt64_mul_div_numeric_invalid)$rX   rY   rZ   rM   r[   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/   r   !  sb   




&



r   c                '   @   s  e Zd Zejdg ddd Zdd Zejdg dd	d
 Zdd Z	ejdg ddd Z
ejd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d-d.d.d,d/d0fd1d2d,d/d3fd4d,d,d5fd6d7d8d9ifd7ddifg!ejd:d;d<gejd=d2dgejdg dejd>d?d@gdAdB ZejdCeej ejjd,dDgeejjd.dEej geejjd.dEejjd.dEggejdFejejejgdGdH ZejdIdJeddKdLedMedNedOedPgd?fdJeddQedRedSedTedUgdVfdWeddKdLedXedYedZed[gd?fdWeddQed\ed]ed^ed_gd`fgdadb Zdcdd Zd?S )e"TestDatetime64DateOffsetArithmeticr   smsusrB   c                 C   s   t tdtdgj|}t tdtdgj|}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:05rI   )
r   r   dtr   r!   r"   rc   offsetsSecondr#   )r$   r&   r   rV   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 d    n1 s0    Y  d S )Nr  r  z20130101 9:00:55z20130101 9:01:55rI   ((bad|unsupported) operand type for unaryrJ   )r   r   r!   r"   rc   r  r  r#   rM   rN   rO   )r$   r&   rV   r-   r,   r   rP   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  rI   )r   r   r!   r"   r   rc   r  )r$   r$  r&   rV   
offset_clsr.   r.   r/   *test_dt64arr_add_sub_tick_DateOffset_smoke  s    zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_tick_DateOffset_smokec           
   	   C   s6  |}|dkrJt dd|d}|tjd }|d tjd |d ksJJ t dd|dd	}tg d
d|dd}t||}t||}tjdt	ddt
ddfD ]}|| }t|| || }t|| || }t|| dddg}	tjt|	d ||  W d    q1 s&0    Y  qd S )Nr   z
2012-11-01r   r   rI   r   z2010-11-01 00:00rH   r   )z2010-11-01 05:00z2010-11-01 06:00z2010-11-01 07:00)r@   r   rB   )hoursr   zbad operand type for unary -zcannot subtract DatetimeArrayrJ   )r   rc   r  r&  r   r   r!   r"   r   r   r   r#   r  rM   rN   rO   )
r$   r   r&   r   r   offsetr-   ZscalarZ	roundtriprP   r.   r.   r/   test_dti_add_tick_tzaware  s6     $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u r^|jd	 n|}g d
}t|D ]p\}\}}t	f i ||i |}	|dkr|dkrd}	t  fdd|D |	}
t|
|}
t
|
|   t  fdd|D |	}
t|
|}
t
|
|   t	f i t|d |d   t  fdd|D |	}
t|
|}
t
|
|   t  fdd|D |	}
t|
|}
t
|
|   d}tjt|d  |  W d    qr1 s0    Y  qrd 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   ))yearsr4   )monthsrI   )r6   r   )r+  rI   )minutesr9   )secondsr4   )microsecondsrI   r9  rB   r  c                    s   g | ]}|  qS r.   r.   r~   offr.   r/   r   F  r   zaTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsets.<locals>.<listcomp>c                    s   g | ]}|  qS r.   r.   r~   r:  r.   r/   r   J  r   r7   c                    s   g | ]}|  qS r.   r.   r~   r:  r.   r/   r   P  r   c                    s   g | ]}|  qS r.   r.   r~   r:  r.   r/   r   T  r   r"  rJ   )r   r   r   r!   r"   rc   r   iloc	enumerater
   r#   dictrM   rN   rO   )r$   r&   r   vec	vec_itemsZrelative_kwargsr  Zoffset_unitvalueexp_unitr-   rP   r.   r:  r/   *test_dt64arr_add_sub_relativedelta_offsets"  sJ    	zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsetsr  cls_and_kwargsZ	YearBeginmonthrI   ZYearEndZ
MonthBeginMonthEndZSemiMonthEndZSemiMonthBeginZWeekweekdayr   r   ZBusinessDayZBDayZ
QuarterEndZQuarterBeginZCustomBusinessDayZCDayZ
CBMonthEndZCBMonthBeginZBMonthBeginZ	BMonthEndZBusinessHourZ
BYearBeginZBYearEndZBQuarterBeginLastWeekOfMonthr4   FY5253Quarterr7   Znearest)Zqtr_with_extra_weekstartingMonthrG  	variationFY5253r   )rG  rJ  rK  WeekOfMonth)rG  weekZEasterr
   dayr}   	normalizeTFnr   Nz
US/Centralc              
      s  t |tr|\}}n|}i }|dkr0|dv r0d S ttdtdtdtdtdtdtd	td
g||}	t|	|}	|tj	u r|	j
d n|	}
ttj|}||fd|i| t fdd|
D |}t||}t||	   t| |	  t fdd|
D |}t||}t||	   t fdd|
D |}t||}t| |	  d}tjt|d  |	  W d    n1 s0    Y  d S )Nr   )rM  rH  rI  rL  r.  r/  r   r0  r1  r2  r3  r4  rP  c                    s   g | ]}|  qS r.   r.   r~   r,  r.   r/   r     r   zWTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsets.<locals>.<listcomp>c                    s   g | ]}|  qS r.   r.   r~   rR  r.   r/   r     r   c                    s   g | ]} | qS r.   r.   r~   rR  r.   r/   r     r   r"  rJ   )r   tupler   r   r   r   r!   r"   rc   r   r<  r   r  r#   rM   rN   rO   )r$   r&   rQ  rP  rD  r   r   r$  kwargsr?  r@  r)  r-   rP   r.   rR  r/    test_dt64arr_add_sub_DateOffsets`  sN    9

zCTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsetsr)   rQ  )r5  rr   c           	         s  |}t dd|d t |}t fddtt D }t||t}tt	 |}W d    n1 s|0    Y  t
|| t||tju rtju rtj|td}tt	 |}W d    n1 s0    Y  t
|| d S )N
2017-01-01r4   r   c                    s   g | ]} | | qS r.   r.   r   rQ  r(   rr   r)   r.   r/   r     r   zXTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_array.<locals>.<listcomp>rS   )r   r!   r"   r   ra   r   rb   r]   r   r	   r#   rc   r    r   radd)	r$   r%   r&   rr   r)   r   r*   r-   resr.   rY  r/   !test_dt64arr_add_sub_offset_array  s    "((zDTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_arrayzop, offset, exp, exp_freq__add__r9   )r6  r6   z
2014-04-11z
2015-04-11z
2016-04-11z
2017-04-11)r6  z
2014-04-01z
2015-04-01z
2016-04-01z
2017-04-01zYS-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YS-OCTc                 C   sd   |}t ddd|d}t||d}t||}	|	|}
t||dd}t||d}t|
| d S )Nz01 Jan 2014z01 Jan 2017ZYS)startendr@   r   FrR   rB   )r   r!   r"   r   r   r   r#   )r$   rr   r,  expZ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_offsetc                 C   sj   t g ddd}|tdd }t g ddd}t|| |tddd }t g d	dd}t|| d S )
N)z2000-01-01 00:00:00.012345678z2000-01-31 00:00:00.012345678z2000-02-29 00:00:00.012345678r  rS   r}   )milliseconds)z2000-01-01 00:00:00.016345678z2000-01-31 00:00:00.016345678z2000-02-29 00:00:00.016345678r7   )r6   rc  )z2000-01-02 00:00:00.016345678z2000-02-01 00:00:00.016345678z2000-03-01 00:00:00.016345678)r   r
   r!   assert_index_equal)r$   r(   r,   r-   r.   r.   r/   -test_dt64arr_series_add_DateOffset_with_milli5  s     zPTestDatetime64DateOffsetArithmetic.test_dt64arr_series_add_DateOffset_with_milli)rX   rY   rZ   rM   r[   r\   r!  r#  r*  r-  rC  r   rU  r   r    rc   r  rF  r%  r
   r   addr   rZ  subr\  r   rb  re  r.   r.   r.   r/   r    s   

$
=





	

.>


1
r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestDatetime64OverflowHandlingc                 C   sf   t tdgdd}t tg}t||}t||}ttgdd}t||}|| }t|| d S )Nz
1969-12-31M8[ns]rS   r   )r   r   r   r!   r"   r   r#   )r$   r&   ru   rv   r-   r,   r.   r.   r/   test_dt64_overflow_maskingY  s    
z9TestDatetime64OverflowHandling.test_dt64_overflow_maskingc                 C   s  t d}td}tdddd}t|}d}tjt|d ||  W d    n1 sV0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  t|jd	< tg d
dd}|| }t	
|| || }t	
|| t|jdd < tg ddd}|| }t	
|| || }t	
||  d S )Nz
1700-01-31z
20000 Daysz
1949-09-30Z100YEr}   r?   Overflow in int64 additionrJ   r2   )z
2004-10-03z
2104-10-04z
2204-10-04r   r  rS   r7   )z
91279 Daysr   r   r   timedelta64[ns])r   r   r   r   rM   rN   OverflowErrorr   r<  r!   rp   )r$   r  tdr(   rV   rP   r-   r[  r.   r.   r/   test_dt64_series_arith_overflowg  s6    &&&&
z>TestDatetime64OverflowHandling.test_dt64_series_arith_overflowc              	   C   s  t dtjgd}t dtjgd}tdd}|| | d| dg}tdd}|| | d| dg}d}|D ]:}t	j
t|d ||  W d    q1 s0    Y  qtjj|j }	|D ]}|| }
|
d	 j|	ksJ qtjj|j }	|D ]"}|| }
|
d	 j|	ksJ q|D ]>}t	j
t|d ||  W d    n1 sr0    Y  q@d S )
N2021-12-28 17:19rB   
1950-01-01r  zdatetime64[D]
1980-01-01rk  rJ   r7   )rc   to_datetimer   maxr   minr   r   rb   rM   rN   rm  _value)r$   dtimaxdtiminZtsnegZts_neg_variantsZtsposZts_pos_variantsrP   variantr-   r[  r.   r.   r/   )test_datetimeindex_sub_timestamp_overflow  s:    (zHTestDatetime64OverflowHandling.test_datetimeindex_sub_timestamp_overflowc                 C   s  t dtjgd}t dtjgd}t ddgd}t ddgd}tjj|d j }|| }|d j|ksJ tjj|d j }|| }|d j|ksJ d}tjt	|d ||  W d    n1 s0    Y  tjt	|d ||  W d    n1 s0    Y  t tjg}|t
j t
d }	tjt	|d |	|  W d    n1 sl0    Y  t tjg}
|
t
j t
d }tjt	|d |
|  W d    n1 s0    Y  d S )	Nrp  rB   rq  rr  r7   rk  rJ   Z1us)rc   rs  r   rt  r   ru  rv  rM   rN   rm  r   )r$   rw  rx  Zts_negZts_posr-   r,   rP   Ztminr   Ztmaxr   r.   r.   r/   -test_datetimeindex_sub_datetimeindex_overflow  s.    &((zLTestDatetime64OverflowHandling.test_datetimeindex_sub_datetimeindex_overflowN)rX   rY   rZ   rj  ro  rz  r{  r.   r.   r.   r/   rh  V  s    &rh  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g dge	ddde	ddde
geddde
edddgg d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 d    n1 s0    Y  d S )Nri  rS   r   r   rJ   )r   r!   r#   rM   rN   rO   )r$   r&   abrP   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 )NrI   r   r7  r8  r4   20111230r   Z20120103201112312012010220120104)r   r   r   r_   r<  r   )r$   td1dt1dt2r.   r.   r/   test_operators_datetimelike  s,    z9TestTimestampSeriesArithmetic.test_operators_datetimelikec                 C   sj   t tdddddd}tddddd}t|gd	| d
d}|| }t|d}|jd| d
ksfJ d S )Ni  r7            r   r      M8[r   rS   r  r   )r   r   r   r!   get_finest_unitrT   )r$   r   rU   r  rV   r,   rB  r.   r.   r/   test_dt64ser_sub_datetime_dtype  s    z=TestTimestampSeriesArithmetic.test_dt64ser_sub_datetime_dtypezleft, right, op_failr  r   r  r  r  r^  __rsub__rI   r   r  )r]  __radd__r^  r   rR   c           	      C   sl   |}t |}t |}t||d }||vr`tjtdd || W d    qh1 sT0    Y  n|| d S )Nz%operate|[cC]annot|unsupported operandrJ   )r   r   rM   rN   rO   )	r$   ru   rv   Zop_failZall_arithmetic_operatorsZop_strZarg1Zarg2rr   r.   r.   r/   #test_operators_datetimelike_invalid  s    (zATestTimestampSeriesArithmetic.test_operators_datetimelike_invalidc                 C   s   t tdddgj|}t tdddgj|}|| }t tdgj|}t|| || }t tdgj|}t|| d S )Nz
2016-02-10zAmerica/Sao_PaulorR   z
2016-02-08Z2daysz-2days)r   r   r  r   r   r!   rp   )r$   r   s1s2r,   r-   r.   r.   r/   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-30r9   r   r   Z0days)r   r   r   r!   rp   )r$   r(   rV   r-   r[  r.   r.   r/   test_dt64tz_series_sub_dtitzG  s    z:TestTimestampSeriesArithmetic.test_dt64tz_series_sub_dtitzc                 C   s   t tddddtjdtgj|}tddddtjd}t|d}t t	dtgj|}|| }t
|| |t| }t
|| d S )	Nr            )r   r  r  ri   )r   r   pytzutcr   r  r   r!   r  r   rp   r   )r$   r   rV   r  rB  ra  r,   r   r.   r.   r/   test_sub_datetime_compatS  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  rI   z20130101 9:01:00.005z20130101 9:02:00.005z20130101 9:06:00.005z20130101 9:07:00.005)r   r   rc   r  r(  r!   rp   r'  )r$   r  r,   r   r-   r.   r.   r/   *test_dt64_series_add_mixed_tick_DateOffset_  s    zHTestTimestampSeriesArithmetic.test_dt64_series_add_mixed_tick_DateOffsetc                 C   s"  t ttdgj|}t ttgd| dd}t tgd| dd}tt | | d}tjt	|d | |  W d    n1 s0    Y  tt | | tjt	|d | |  W d    n1 s0    Y  t|t | tt| | t|t | tt| | d S )Nr   zdatetime64[r   rS   z-bad operand type for unary -: 'DatetimeArray'rJ   )
r   r   r   r  r   r!   rp   rM   rN   rO   )r$   r   datetime_seriesnat_series_dtype_timestampsingle_nat_dtype_datetimerP   r.   r.   r/   test_datetime64_ops_natr  s0    (
(z5TestTimestampSeriesArithmetic.test_datetime64_ops_natc           	      C   sB  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 u sfJ ||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 d    n1 s0    Y  ||d  }|j
d |d  j
|}t|| tjt|d |d |  W d    n1 s0    Y  || }|j
d | j
|}t|| || }|j
d | j
|}t|| || }|j
d | j
|}t|| || }|j
d | j
|}t|| d}tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s40    Y  d S )Nr   z2000-01-01 09:00:00rI   r   r1   r   r4   z1 days 1 minrH   )r   r@   r7   r   r"  rJ   r  )r   r   r   r   r_   r<  rc   rd   _valuesr@   r  r   r!   rp   rM   rN   rO   )	r$   r   r  r  r  Ztd2r,   ra  rP   r.   r.   r/   *test_operators_datetimelike_with_timezones  s`    ,,(zHTestTimestampSeriesArithmetic.test_operators_datetimelike_with_timezonesN)rX   rY   rZ   r  r  r  rM   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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 NrW  rR   r9   0 daysr<   r   	r   r   rc   rd   r   r   r!   rd  r   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 d    n1 s0    Y  ||j }t|| d
}tj	t
|d	 |j|  W d    n1 s0    Y  d S )NrW  rR   r9   r  r<   -1Dr   z cannot subtract .*TimedeltaArrayrJ   0cannot subtract a datelike from a TimedeltaArray)r   r   rc   rd   r   r   r!   rd  rM   rN   rO   r   )r$   r%   r   r(   r   r-   r,   rP   r.   r.   r/   test_dti_sub_tdi	  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|| |j	
 }||8 }t||j	 |j	
 }	tj|	||	d t|	|j	 d	}
tjt|
d
 ||8 }W d    n1 s0    Y  t td|dgd |}||j8 }t|| tjt|
d
 | j|8  _W d    n1 sd0    Y  tjt|
d
 | j|8  _W d    n1 s0    Y  d S )NrW  rR   r9   r  r   r   r  )r   r   r@   r   )outr  rJ   )r   r   r   rc   rd   r   r   r!   rd  rD   r   Zassert_datetime_array_equalr   subtractrM   rN   rO   r   r  )r$   r%   r   r   r(   r   r-   r,   rE   r  rP   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!   rd  )r$   r%   r(   rE   r,   r-   r   r.   r.   r/   test_dta_add_sub_indexM  s    z2TestDatetimeIndexArithmetic.test_dta_add_sub_indexc           	      C   s  t dd|d}t dd|dd}tg d|}|| }t|| || }t|| d}tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  ||8 }t|| t dd|d}t dd|d}d	}tjt	|d ||  W d    n1 s.0    Y  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   r   r   rJ   r}   z$cannot add indices of unequal lengthr  z
2012-01-03z
2012-01-02ri   )r   r   r   r   r!   rd  rM   rN   rO   r   r   r   r_   )	r$   r   r(   r   r-   r,   rP   Zdti1r   r.   r.   r/   test_sub_dti_dti^  s0    &&(z,TestDatetimeIndexArithmetic.test_sub_dti_dtirr   c                    s   t tdtdtdtdg}||}g d  fdd}ttdgd	  D ]P\}}}}	}
|||||	|
}t||||	|
d
}|||}|||}t|| qNd S )NZ20130301z20130228 23:00:00z20130228 22:00:00z20130228 21:00:00)r>   rH   mr  r  c                     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>.timedelta64r4   rI   )r6   r+  r7  r8  r9  )r   r   r   ra   r   r!   r#   )r$   rr   r&   rV   rF   r   drH   r  r  r  ZnptdZpytdrs   rt   r.   r  r/   .test_timedelta64_equal_timedelta_supported_ops  s      

zJTestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_opsc                 C   s^  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 d    n1 s0    Y  t|| | t|| | t|| | t|| | t|| | t|| | d S )NZ1sr   rl  rS   r  zcannot subtract a datelikerJ   )	r   r   r   r   r!   rp   rM   rN   rO   )r$   Ztimedelta_seriesr  Znat_series_dtype_timedeltar  r  Zsingle_nat_dtype_timedeltarP   r.   r.   r/   )test_ops_nat_mixed_datetime64_timedelta64  sl    
&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sVJ t|| |jdksDJ qDt d	ddd|d}|| t	||fD ],}t|tsJ t|| |jdksJ q|
d }ttddtd
dtddg}tg ddd|}|| t||fD ]$}t|| |j|jks"J q"tg ddd|}|| t	||fD ]4}t|tsJ t|| |j|jksrJ qrd S )Nrg   r   Z2Dr   )r   r@   r   r   r7   r>   r  
2010-12-31r4   )r  z
2011-01-05z
2011-01-08r   )r  rg   r  )r   r   r   rf  r   r   r!   rd  r@   r  r   r    r   )r$   r   r   deltara  r,   r.   r.   r/   test_ufunc_coercions  sB    
 z0TestDatetimeIndexArithmetic.test_ufunc_coercionsc                 C   s   |}t ddg||d dd}ttddgd ||d	 d
}t|tdd ||d d
}|d |_|j|jkstJ || }t|| || }t|| |tdd }|j| }	t	|	| ||j }
t	|
| d S )Nz2016-06-28 05:30z2016-06-28 05:31r   )r   r   rB   rI   )r8  r4   r7   )r   r   )
r   r   r   r   r   rT   r!   rp   r   rd  )r$   r%   namesr   r   rV   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 d    n1 st0    Y  t	 fdd	t
t D |d d
d}	t|	|t}	t||	 d S )NrW  r4   r   )r   r   r   rV  r7   r   c                    s   g | ]} | | qS r.   r.   rX  rY  r.   r/   r   6	  r   zPTestDatetimeIndexArithmetic.test_dti_addsub_offset_arraylike.<locals>.<listcomp>Zinfer)r   r@   )r   rc   r  rF  r%  r   r!   r   r	   r   ra   r   r"   rb   r]   r#   )
r$   r%   r  rr   rq   	other_boxr   r+   r[  r-   r.   rY  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 d    n1 s0    Y  t|
|	 td	d
g|d}	t|	|	t
}	tt || }
W d    n1 s0    Y  t|
|	 d S )NrW  r4   r   r}   r5   z
2017-01-31z
2017-01-06rR   z
2016-12-31z
2016-12-29)r   r!   r"   rc   r  rF  r   r   r   rb   r]   r   r	   r#   )r$   r%   r&   r  r   r(   r*   r)   r+   r-   r,   r.   r.   r/    test_dti_addsub_object_arraylike;	  s    
&&z<TestDatetimeIndexArithmetic.test_dti_addsub_object_arraylikeN)rX   rY   rZ   r  r  r  r  r  r  rM   r[   r\   r   rf  rg  r  r  r  r  r   rZ  r  rc   r   r   r    r  r.   r.   r.   r/   r    s   ,*
E'
r  r5  )r2   r   r7   r6  )r   r4   r   r  c           	         s   t tdtdtdtdtdg|}t|jd   |jjd}|d|j d	}t |} fd
d|D }t ||j}t	
|| d S )Nr.  r/  r   r1  r2  r  )Zresor  r   c                    s    g | ]}|t jj d  qS ))r5  r6  )rc   r  r
   r~   r6  r5  r.   r/   r   f	  r   z%test_shift_months.<locals>.<listcomp>)r   r   r   r   r   rD   Z_cresor   r   r!   rd  )	r5  r6  r   r(   ZshiftedZshifted_dt64actualrawr-   r.   r  r/   test_shift_monthsU	  s     	r  c                  C   s<  t dddd} | jd}tdd tdD }|j|jksBJ tt	 || }W d    n1 sj0    Y  tt	8 |d d df |d d df  d	d
}W d    n1 s0    Y  t
|| tt	 ||t }W d    n1 s0    Y  |jdksJ tdd | D s8J d S )Nz
1994-02-13Z2Wr}   r?   )r}   r7   c                 S   s   g | ]}t j|gqS r.   )rc   r  r%  rX  r.   r.   r/   r   q	  r   z7test_dt64arr_addsub_object_dtype_2d.<locals>.<listcomp>r   r2   r7   c                 s   s   | ]}|j d kV  qdS )r   N)rv  )r   rn  r.   r.   r/   	<genexpr>	  r   z6test_dt64arr_addsub_object_dtype_2d.<locals>.<genexpr>)r   rD   Zreshaper   r    ra   shaper!   r   r	   rL   rb   r]   r   Zravel)r(   rE   r)   r,   r-   r   r.   r.   r/   #test_dt64arr_addsub_object_dtype_2dk	  s    &F.r  c                  C   sp   t g d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l   CE|l   |< l   ({?M5datetime64[ms]rS   r   r  r   ztimedelta64[ms]r   r   r   r   r!   rp   r   rV   r,   r-   r.   r.   r/   (test_non_nano_dt64_addsub_np_nat_scalars	  s    r  c                  C   sl   t g ddd} | td }t tgd dd}t|| | td }t tgd dd}t|| d S )Nr  r  rS   r   r   rl  r  r  r  r.   r.   r/   1test_non_nano_dt64_addsub_np_nat_scalars_unitless	  s    r  c                  C   sp   t g d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)i,0  iZ  iہ  zdatetime64[s]rS   r   r>   r   ztimedelta64[s]r  r  r.   r.   r/   9test_non_nano_dt64_addsub_np_nat_scalars_unsupported_unit	  s    r  )5r   r   r   	itertoolsr   r   r   numpyr   rM   r  Zpandas._libs.tslibs.conversionr   Zpandas._libs.tslibs.offsetsr   Zpandas.errorsr	   Zpandasrc   r
   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr!   Zpandas.corer   Zpandas.tests.arithmetic.commonr   r   r   r   r   re   r   r   r  rh  r|  r  r[   r\   r  r  r  r  r  r.   r.   r.   r/   <module>   sX   ,p k      %   z     