a
    j=ic4V                    @   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!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Z0G dd dZ1e
j23dg de
j23dg dd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)DatetimeArrayTimedeltaArray)	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 r0   x/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/arithmetic/test_datetime64.pytest_compare_zerodim:   s    z7TestDatetime64ArrayLikeComparisons.test_compare_zerodimr+   fooc   g      @   daysi     Nc                 C   s.   |}t dd|d}t||}t||| d S )N1/1/2000
   r   )r   r#   r$   r   )r&   r+   r'   r(   r   rngr,   r0   r0   r1   test_dt64arr_cmp_scalar_invalidI   s    zBTestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_scalar_invalidr;   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nsr;   rB   r   r   )r   _datar#   r$   r   )r&   r+   r'   r(   r   dtaobjr0   r0   r1   "test_dt64arr_cmp_arraylike_invalidc   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 )NrC   h   rE   r   r9   r6   r   r7   )FFFTFzDInvalid comparison between|Cannot compare type|not supported betweenmatch)
r   rF   r!   r"   r   r#   assert_numpy_array_equalpytestraises	TypeError)r&   r'   r   rG   r+   r.   r/   msgr0   r0   r1   test_dt64arr_cmp_mixed_invalid|   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serrH   r-   r/   r.   r0   r0   r1   test_dt64arr_nat_comparison   s    z>TestDatetime64ArrayLikeComparisons.test_dt64arr_nat_comparison)__name__
__module____qualname__r2   rO   markparametrizeobjectr   r   dater!   nanr=   listrangeZarangeastypefloat32pdtimedelta_ranger"   Zperiod_rangerI   rS   rY   r0   r0   r0   r1   r   5   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rB   z2011-03reverseTFrV   Nzop, expectedFFTTTFFFFc                 C   sL   |}|\}}	|r|	| }}	t ||d}
||	|d}||
|}t|| d S )NrU   )r   r#   assert_series_equal)r&   rV   index_or_seriesro   ri   opr/   r)   lrleftrightr.   r0   r0   r1   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 )NrU   Trr   boolTTT)	r   r#   r$   r   r   rf   r"   r_   r%   )r&   rV   r{   r(   r)   rx   r-   r/   r0   r0   r1   test_nat_comparisons_scalar   s8    
z:TestDatetime64SeriesComparison.test_nat_comparisons_scalarvali  r9      rK   c                    s>   t tddd}| k}t  fdd|D }t|| d S )Nr:   r;   r>   c                    s   g | ]}| kqS r0   r0   .0xr   r0   r1   
<listcomp>      zQTestDatetime64SeriesComparison.test_series_comparison_scalars.<locals>.<listcomp>)r   r   r#   rs   )r&   r   Zseriesr.   r/   r0   r   r1   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20010101r;   r>   datesnameT)deepnatr   r   Z20010109)	r   r   copyr   getattroperatorr#   rs   r   )	r&   rx   ry   rX   Zs_natZleft_fZright_fr/   r.   r0   r0   r1   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g d|}t|| |tju r`t	nd }t
| ||d k}W d    n1 s0    Y  tg d|}t|| t
| ||d k}W d    n1 s0    Y  tg d|}t|| ||k}tg d	|}t|| t
| ||d k}W d    n1 sZ0    Y  tg d
|}t|| t
| ||d k}W d    n1 s0    Y  tg d|}t|| d S )Nz2000-01-29 01:59:00z
2000-01-30Trp   r   )FTTr6   r}   rq   r    rr   )r   r   r   r#   r$   r   r%   rf   	DataFrameFutureWarningassert_produces_warning)r&   r(   rX   r-   r.   r/   warnr0   r0   r1   test_dt64arr_timestamp_equality4  s4    **,,z>TestDatetime64SeriesComparison.test_dt64arr_timestamp_equalitydatetimeliker   i  z2013-01-01T00:00rD   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!   ra   r#   rs   )r&   r   ru   r/   rX   r.   r0   r0   r1   !test_dt64_compare_datetime_scalar\  s    	
z@TestDatetime64SeriesComparison.test_dt64_compare_datetime_scalar)rZ   r[   r\   rO   r]   r^   r   r   r   r   r_   r   r   r   r   r   r   r   r   rz   r~   r   r   r   r   r!   
datetime64r   r0   r0   r0   r1   rh      st   $ 

 (

	rh   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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sTJ t 	|| d S )Nd   r6   )
r#   ZmakeDateIndexlenr   to_datetime64r!   r"   
isinstanceZndarrayrN   )r&   comparison_opindexelementZarrZ
arr_resultZindex_resultr0   r0   r1   test_comparators  s    



z-TestDatetimeIndexComparisons.test_comparatorsr+     r9   
2016-01-01c                 C   s   |}t dd|d}|d u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   r6   r   TF)	r   r   r!   r   r   tzinfor"   r#   rN   )r&   r+   r'   r   r*   r.   r/   r0   r0   r1   test_dti_cmp_datetimelike  s*    z6TestDatetimeIndexComparisons.test_dti_cmp_datetimelikerV   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 )Nrj   rk   Trp   rq   rr   r}   )r   r   r   r#   r$   r   r_   rd   r!   r"   r%   )
r&   rV   r(   rx   ry   r-   lhsrhsr.   r/   r0   r0   r1   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  r9   )TFFFFF)FFFFTT)TFTFFF)FFTFTT)FFTFFF)TTFTTT)rf   Indexr!   ra   r   r   r"   r   r#   r   rN   r   )r&   Zfidx1Zfidx2Zdidx1Zdidx2darrZcasesZidx1Zidx2r.   r/   r   r0   r0   r1   +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   )rd   r_   valuestolistr   r0   r0   r1   <lambda>A  r   zQTestDatetimeIndexComparisons.test_comparison_tzawareness_compat.<locals>.<lambda>z^Invalid comparison between dtype=datetime64\[ns.*\] and (Timestamp|DatetimeArray|list|ndarray)rL   rU   )r   tz_localizer#   r$   rf   r   rb   r   r   r   rO   rP   rQ   r!   r"   r_   all)	r&   r   r(   ru   r)   drdzr   rR   r0   r0   r1   "test_comparison_tzawareness_compat5  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/AmsterdamrT   zAInvalid comparison between dtype=datetime64\[ns.*\] and TimestamprL   )r   r   r#   r$   r   r!   r   r   r   r   rO   rP   rQ   )	r&   r   r(   ru   r   r   rW   Zts_tzrR   r0   r0   r1   *test_comparison_tzawareness_compat_scalarsf  s&    
((zGTestDatetimeIndexComparisons.test_comparison_tzawareness_compat_scalarsz*ignore:elementwise comp:DeprecationWarningz.ignore:Converting timezone-aware:FutureWarningc                 C   s  |}|}t dd|d}t||}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   r6   r   TrU   z:Invalid comparison between dtype=datetime64\[ns, .*\] and rL   )r   r#   r$   r   r   r   r   r!   r"   r|   r%   typerZ   rO   rP   rQ   )r&   r   r+   tz_aware_fixturer(   ru   r   r*   r,   r-   Zexboolr/   r.   rR   r0   r0   r1   "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#   rN   r   )r&   r   ru   r*   r/   r.   r0   r0   r1   test_nat_comparison_tzawareness  s    
z<TestDatetimeIndexComparisons.test_nat_comparison_tzawarenessc                 C   s
  |}t dd|d}d}||k}tdgdgd  }t|| ||k}tdgdgd  }t|| ||k }tdgd }t|| ||k}tdgdgd  }t|| ||k}tdgdgd  }t|| ||k}tdgd }t|| d S )Nr:   r;   r   TF	   )r   r!   r"   r#   rN   )r&   r'   r   r<   r+   r.   r/   r0   r0   r1   test_dti_cmp_str  s*    z-TestDatetimeIndexComparisons.test_dti_cmp_strc                 C   s0   t ddd}|t|k}||k}t|| d S )Nr:   r;   r>   )r   rb   r#   rN   )r&   r<   r.   r/   r0   r0   r1   test_dti_cmp_list  s    z.TestDatetimeIndexComparisons.test_dti_cmp_listZ1Dr;   r>   m8[ns]c                 C   s
   t | jS N)r   rZ   r   r0   r0   r1   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-01r;   
Asia/Tokyor   FTzInvalid comparison betweenrL   )r   r!   r"   r#   rN   rO   rP   rQ   )r&   r+   r*   r.   r/   rR   r0   r0   r1   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   r;   r   r   OTrK   r9   r7   FzB>=' not supported between instances of 'Timestamp' and 'Timedelta'rL   )r   rd   r!   r"   r#   rN   r   rb   r   rO   rP   rQ   )r&   r*   r+   r.   r/   rR   r0   r0   r1   test_dti_cmp_object_dtype  s    

&z6TestDatetimeIndexComparisons.test_dti_cmp_object_dtype)rZ   r[   r\   r   rO   r]   r^   r   r   r!   r   r   r_   r   r   r   r   filterwarningsr   r   r   r   rf   rg   Z	to_seriesasi8viewr   r   r0   r0   r0   r1   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d5d6 Zejd7e ed8ed8ge e!ed8ge e!e!gd9d: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-01rT   z2000-01-01 02:00z2000-02-01 02:00r   r#   r$   r%   r&   r'   Z	two_hoursr(   r   r<   r/   r.   r0   r0   r1   %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   rT   z1999-12-31 22:00z2000-01-31 22:00r   r   r0   r0   r1   %test_dt64arr_sub_timedeltalike_scalar7  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 objectsrL   )
r   r   r#   r$   r   r   r%   rO   rP   rQ   r&   r(   t1t2Ztnaiver.   r/   rR   r0   r0   r1   .test_dt64_array_sub_dt_with_different_timezoneH  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   rL   )	r   r   r#   r$   r   r%   rO   rP   rQ   r   r0   r0   r1   6test_dt64_array_sub_dt64_array_with_different_timezonec  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 d    n1 s0    Y  d S )	Nz
1994-04-01r   ZQSr   r   rB   r   rT   cannot subtractrL   )
r   r!   timedelta64r   r#   r$   r%   rO   rP   rQ   )
r&   r(   r'   r   r*   r+   r/   rH   r.   rR   r0   r0   r1   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 unaryrL   )	r   r   r   r#   r$   r%   rO   rP   rQ   )r&   r'   r(   r   r*   tdiZtdarrr/   r,   r.   rR   r0   r0   r1    test_dt64arr_add_sub_td64ndarray  s$    z9TestDatetime64Arithmetic.test_dt64arr_add_sub_td64ndarrayrW   
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(   rW   idxr/   r.   r0   r0   r1   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-17r6   r@   r   r   rB   r   r   r9   )r   r   r#   r$   r   r!   r   r%   )r&   r(   rX   rW   Zdelta_seriesr/   r0   r0   r1   "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]rU   r   )r   r   r   r#   r$   r   r%   r   )r&   r(   r*   rX   r.   r/   dti_tzZser_tzr0   r0   r1   test_dt64arr_sub_NaT  s    
z-TestDatetime64Arithmetic.test_dt64arr_sub_NaTc                 C   sv   t dd|d}|| }t||}t||}tt ||t }W d    n1 s\0    Y  t|| d S Nr   r   r   )r   r#   r$   r   r	   rd   r_   r%   )r&   r(   r'   r*   r/   rH   r.   r0   r0   r1   !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.   r0   r0   r1   "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 datetimerL   )r   r   r#   r$   rO   rP   rQ   )r&   r   r(   r   r*   r   r,   rR   r0   r0   r1   )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   rj   r@   )
r   r   r#   r$   r   r   to_pydatetimer   r!   r   )r&   r'   r(   r   r*   dti2r,   r0   r0   r1   test_dt64arr_add_dtlike_raises  s    


z7TestDatetime64Arithmetic.test_dt64arr_add_dtlike_raisesrB   )Hr@   Wrm   ZMSQBNrV   NZuint8c           
      C   s  |}|t ju rd S |d u r,tddg|d}ntdd||d}||}tjddg|d	}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 jjj||	 t|t||	 d S )Nr   z2017-04-05 06:07:08rT   r   r6   r   r   r4   rU   |)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'r9   r   )rf   r   r   r   r!   r"   joinr   int64ZCategoricalr   coreindexesapiZNumericIndexr   )
r&   rV   r(   rB   r'   r   r*   rH   r+   rR   r0   r0   r1   test_dt64arr_addsub_intlike2  s*    

z4TestDatetime64Arithmetic.test_dt64arr_addsub_intliker+   gQ	@r   r   rj   rn   r9   r6   r   dti_freqc                 C   s:   t ddg|d}t||}dg d}t||| d S )Nrj   
2011-01-02rn   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,   rR   r0   r0   r1   test_dt64arr_add_sub_invalidZ  s    	z5TestDatetime64Arithmetic.test_dt64arr_add_sub_invalidpi_freq)r@   r  r  r  c           
      C   sP   t ddg|d}||}t||}t||}dg d}	t|||	 d S )Nrj   r  rn   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parrrR   r0   r0   r1   test_dt64arr_add_sub_parrt  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 d    n1 s0    Y  d S )N
2012-01-01r   r   c                 S   s   g | ]}t |||qS r0   )r   )r   ir0   r0   r1   r     r   zTTestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raises.<locals>.<listcomp>r  r  z*cannot subtract DatetimeArray from ndarrayTrecordignore)rR   )
r   rc   r#   r$   r  warningscatch_warningssimplefilterr	   r   )r&   r(   r'   r   Zobj1obj2rR   r0   r0   r1   'test_dt64arr_addsub_time_objects_raises  s    z@TestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raisesdt64_seriesr   datetime64[ns]rU   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 typerL   )r#   r$   rO   rP   rQ   )r&   r   r  r(   rH   rR   r0   r0   r1   !test_dt64_mul_div_numeric_invalid  s    
&&&z:TestDatetime64Arithmetic.test_dt64_mul_div_numeric_invalid)#rZ   r[   r\   rO   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!  r0   r0   r0   r1   r     s`   




&

r   c                &   @   sz  e Zd Zdd Zdd Zejdg d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d*d+d+d)d,d-fd.d/d)d,d0fd1d)d)d2fd3d4d5d6ifd4ddifg!ejd7d8d9gejd:d/dgd;d< Zd=d> Zejd?eej ejjd)d@geejjd+dAej geejjd+dAejjd+dAggejdBejejejgejdCd8d9gdDdE ZejdFdGeddHdIedJedKedLedMgdNfdGeddOedPedQedRedSgdTfdUeddHdIedVedWedXedYgdNfdUeddOedZed[ed\ed]gd^fgd_d` ZdNS )a"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:05rK   )r   r   r#   r$   rf   offsetsSecondr%   )r&   r(   rX   r/   r.   result2r0   r0   r1   '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:55rK   ((bad|unsupported) operand type for unaryrL   )r   r   r#   r$   rf   r%  r&  r%   rO   rP   rQ   )r&   r(   rX   r/   r.   r'  rR   r0   r0   r1   '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$  rK   )r   r   r#   r$   r   rf   r%  )r&   r+  r(   rX   
offset_clsr0   r0   r1   *test_dt64arr_add_sub_tick_DateOffset_smoke  s    zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_tick_DateOffset_smokec           
   	   C   s0  |}|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}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   rK   r   z2010-11-01 00:00r  r   )z2010-11-01 05:00z2010-11-01 06:00z2010-11-01 07:00)rB   r   rJ   )hoursr  zbad operand type for unary -zcannot subtract DatetimeArrayrL   )r   rf   r%  r-  r   r#   r$   r!   r   r   r%   r  rO   rP   rQ   )
r&   r   r(   r   r   offsetr/   ZscalarZ	roundtriprR   r0   r0   r1   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u rX|jd	 n|}g d
}t|D ]@\}\}}tf i ||i 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    ql1 s0    Y  qld 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   ))yearsr6   )monthsrK   )r8   r   )r2  rK   )minutesr;   )secondsr6   )microsecondsrK   c                    s   g | ]}|  qS r0   r0   r   offr0   r1   r   <  r   zaTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsets.<locals>.<listcomp>c                    s   g | ]}|  qS r0   r0   r   rA  r0   r1   r   @  r   r9   c                    s   g | ]}|  qS r0   r0   r   rA  r0   r1   r   F  r   c                    s   g | ]}|  qS r0   r0   r   rA  r0   r1   r   J  r   r)  rL   )r   r   r#   r$   rf   r   iloc	enumerater
   r%   dictrO   rP   rQ   )
r&   r(   vec	vec_itemsZrelative_kwargsr  unitvaluer/   rR   r0   rA  r1   *test_dt64arr_add_sub_relativedelta_offsets  s@    	zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsetscls_and_kwargsZ	YearBeginmonthrK   ZYearEndZ
MonthBeginMonthEndZSemiMonthEndZSemiMonthBeginZWeekweekdayr   r   ZBusinessDayZBDayZ
QuarterEndZQuarterBeginZCustomBusinessDayZCDayZ
CBMonthEndZCBMonthBeginZBMonthBeginZ	BMonthEndZBusinessHourZ
BYearBeginZBYearEndZBQuarterBeginLastWeekOfMonthr6   FY5253Quarterr9   Znearest)Zqtr_with_extra_weekstartingMonthrN  	variationFY5253r   )rN  rQ  rR  WeekOfMonth)rN  weekZEasterr
   dayr   	normalizeTFnc              
      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
|}	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 d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   )rT  rO  rP  rS  r5  r6  r   r7  r8  r9  r:  r;  Tr  r  rW  c                    s   g | ]}|  qS r0   r0   r   r3  r0   r1   r     r   zWTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsets.<locals>.<listcomp>c                    s   g | ]}|  qS r0   r0   r   rY  r0   r1   r     r   c                    s   g | ]} | qS r0   r0   r   rY  r0   r1   r     r   r)  rL   )r   tupler   r   r#   r$   rf   r   rC  r   r%  r  r  r  r	   r%   rO   rP   rQ   )r&   r(   rX  rW  rK  r+  kwargsrF  rG  r0  r/   rR   r0   rY  r1    test_dt64arr_add_sub_DateOffsetsV  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   r9   r<  z
2001-01-01z
2001-01-31z
1999-01-01z
1999-01-31z2000-01-15 00:15:00z
US/CentralrT   z
2000-02-15z2000-01-16 00:15:00z
2000-02-16z2000-01-31 00:15:00r8  )r   r#   r$   r
   r   r%   r   r   rf   r%  r,  rM  )r&   r(   sr.   r'  expr0   r0   r1   test_dt64arr_add_sub_DateOffset  s`    







zBTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsetr+   rX  r^  ru   	box_otherc           
         s   |}t dd|d t |}ttj tjjddgt	 fddt
t D }t||}|rzt|tt |}	W d    n1 s0    Y  t|	| d S )N
2017-01-01r6   r   rb  c                    s   g | ]} | | qS r0   r0   r   rX  r*   ru   r+   r0   r1   r     r   zXTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_array.<locals>.<listcomp>)r   r#   r$   r!   r"   rf   r%  rM  r,  r   rc   r   r   r	   r%   )
r&   r'   r(   rc  ru   r+   r   r,   r/   resr0   rf  r1   !test_dt64arr_add_sub_offset_array  s    "(zDTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_arrayzop, offset, exp, exp_freq__add__r;   )r=  r8   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endrB   r   FrT   )r   r#   r$   r   r   r%   )r&   ru   r3  r`  Zexp_freqr   r(   r   r`   Zmthr.   r/   r0   r0   r1   #test_dti_add_sub_nonzero_mth_offset!  s    5
zFTestDatetime64DateOffsetArithmetic.test_dti_add_sub_nonzero_mth_offset)rZ   r[   r\   r(  r*  rO   r]   r^   r1  r4  rJ  r\  ra  r!   r"   rf   r%  rM  r,  r
   r   addr   raddsubrh  r   rm  r0   r0   r0   r1   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(   rx   ry   r/   r.   r0   r0   r1   test_dt64_overflow_maskingd  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100Yr   rA   Overflow in int64 additionrL   r4   )z
2004-10-03z
2104-10-04z
2204-10-04r   r  rU   r9   )z
91279 Daysr   r   r   r   )r   r   r   r   rO   rP   OverflowErrorr   rC  r#   rs   )r&   dttdr*   rX   rR   r/   rg  r0   r0   r1   test_dt64_series_arith_overflowr  s6    &&&&
z>TestDatetime64OverflowHandling.test_dt64_series_arith_overflowc              	   C   sl  t dtjg}t dtjg}td}|| | d| dg}td}|| | d| dg}d}|D ]:}tj	t
|d ||  W 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 sZ0    Y  q(d S )	N2021-12-28 17:19
1950-01-01r  zdatetime64[D]
1980-01-01rs  rL   r9   )rf   to_datetimer   maxminr   r   rd   rO   rP   rt  rI  )r&   dtimaxdtiminZtsnegZts_neg_variantsZtsposZts_pos_variantsrR   variantr/   rg  r0   r0   r1   )test_datetimeindex_sub_timestamp_overflow  s:    (zHTestDatetime64OverflowHandling.test_datetimeindex_sub_timestamp_overflowc                 C   s  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shJ 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 s0    Y  t tjg}|t	j t	d }	tjt|d |	|  W d    n1 sR0    Y  t tjg}
|
t	j t	d }tjt|d |
|  W d    n1 s0    Y  d S )Nrx  ry  rz  r9   rs  rL   Z1us)
rf   r{  r   r|  r}  rI  rO   rP   rt  r   )r&   r~  r  Zts_negZts_posr/   r.   rR   Ztminr   Ztmaxr   r0   r0   r1   -test_datetimeindex_sub_datetimeindex_overflow  s.    &&(zLTestDatetime64OverflowHandling.test_datetimeindex_sub_datetimeindex_overflowN)rZ   r[   r\   rr  rw  r  r  r0   r0   r0   r1   rq  a  s    &rq  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 )NzM8[ns]rU   r   r   rL   )r   r#   r%   rO   rP   rQ   )r&   r(   r]  brR   r0   r0   r1   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 )NrK   r   r>  r?  r6   20111230r   Z20120103201112312012010220120104)r   r   r!   ra   rC  r   )r&   td1dt1dt2r0   r0   r1   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sRJ d S )
Ni  r9            r   r      r   )r   r   r   rf   Zto_timedeltar!   absrV   )r&   rW   ru  rX   r.   r0   r0   r1   test_dt64ser_sub_datetime_dtype  s
    
z=TestTimestampSeriesArithmetic.test_dt64ser_sub_datetime_dtypezleft, right, op_failr  r   r  r  r  rj  __rsub__rK   r   r  )ri  __radd__rj  r   rT   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 operandrL   )r   r   rO   rP   rQ   )	r&   rx   ry   Zop_failZall_arithmetic_operatorsZop_strZarg1Zarg2ru   r0   r0   r1   #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_PaulorT   z
2016-02-08Z2daysz-2days)r   r   r   r#   rs   )r&   s1s2r.   r/   r0   r0   r1   test_sub_single_tzD  s    z0TestTimestampSeriesArithmetic.test_sub_single_tzc                 C   sT   t dddd}t|}ttdgd }|| }t|| || }t|| d S )Nz
1999-09-30r;   r   r   Z0days)r   r   r   r#   rs   )r&   r*   rX   r/   rg  r0   r0   r1   test_dt64tz_series_sub_dtitzO  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  rl   )	r   r   pytzutcr   r   r#   rs   r   )r&   r_  ru  r`  r0   r0   r1   test_sub_datetime_compat[  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$  rK   z20130101 9:01:00.005z20130101 9:02:00.005z20130101 9:06:00.005z20130101 9:07:00.005)r   r   rf   r%  r/  r#   rs   r.  )r&   r_  r.   r'  r/   r0   r0   r1   *test_dt64_series_add_mixed_tick_DateOffsetc  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 d    n1 sr0    Y  tt | | tjt|d | |  W d    n1 s0    Y  t|t | tt| | t|t | tt| | d S )Nr   r  rU   z-bad operand type for unary -: 'DatetimeArray'rL   )r   r   r   r#   rs   rO   rP   rQ   )r&   datetime_seriesnat_series_dtype_timestampsingle_nat_dtype_datetimerR   r0   r0   r1   test_datetime64_ops_natv  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:00rK   r   r3   r   r6   z1 days 1 minr  )r   rB   r9   r   r)  rL   r  )r   r   r   r!   ra   rC  rf   rg   _valuesrB   ru  r   r#   rs   rO   rP   rQ   )	r&   r   r  r  r  Ztd2r.   r`  rR   r0   r0   r1   *test_operators_datetimelike_with_timezones  s`    ,,(zHTestTimestampSeriesArithmetic.test_operators_datetimelike_with_timezonesN)rZ   r[   r\   r  r  r  rO   r]   r^   r   r   r   r  r  r  r  r  r  r  r0   r0   r0   r1   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 Nrd  rT   r;   0 daysr>   r   	r   r   rf   rg   r   r   r#   assert_index_equalr   r&   r'   r   r*   r   r/   r.   r0   r0   r1   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  r0   r0   r1   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 )Nrd  rT   r;   r  r>   -1Dr   z cannot subtract .*TimedeltaArrayrL   0cannot subtract a datelike from a TimedeltaArray)r   r   rf   rg   r   r   r#   r  rO   rP   rQ   r   )r&   r'   r   r*   r   r/   r.   rR   r0   r0   r1   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 sN0    Y  tjt|	d
 | j|8  _W d    n1 s0    Y  d S )Nrd  rT   r;   r  r>   r  r   )outr  rL   )r   r   rf   rg   r   r   r#   r  rF   r   Zassert_datetime_array_equalr!   subtractrO   rP   rQ   r   r  )
r&   r'   r   r*   r   r/   r.   rG   r  rR   r0   r0   r1   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*   rG   r.   r/   r   r0   r0   r1   test_dta_add_sub_indexQ  s    z2TestDatetimeIndexArithmetic.test_dta_add_sub_indexc                 C   st  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   rL   r   z$cannot add indices of unequal lengthr  z
2012-01-03z
2012-01-02rl   )r   r   r   r#   r  rO   rP   rQ   
ValueErrorr   r!   ra   )r&   r*   r   r/   r.   rR   Zdti1r   r0   r0   r1   test_sub_dti_dtib  s0    &&(z,TestDatetimeIndexArithmetic.test_sub_dti_dtiru   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@   rJ   mr_  usc                     s   t ttt jt|  S r   )r!   sumrb   r   r   zip)argsZ	intervalsr0   r1   r     s    z_TestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_ops.<locals>.timedelta64r6   rK   )r8   r2  r>  r?  r@  )r   r   r   rc   r   r#   r%   )r&   ru   r(   rX   rH   r   drJ   r  r_  r  ZnptdZpytdr   r   r0   r  r1   .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   r   rU   r  zcannot subtract a datelikerL   )	r   r   r   r   r#   rs   rO   rP   rQ   )r&   Ztimedelta_seriesr  Znat_series_dtype_timedeltar  r  Zsingle_nat_dtype_timedeltarR   r0   r0   r1   )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sRJ t|| |jdks@J q@t 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stJ t|| |j|jks`J q`d S )Nrj   r   Z2Dr   )r   rB   r   r9   r@   r  
2010-12-31r6   )r  z
2011-01-05z
2011-01-08r   )r  rj   r  )r   r!   r   rn  r   r   r#   r  rB   r  r   r"   )r&   r   deltar`  r.   r0   r0   r1   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snJ || }t|| || }t|| |tdd }|j| }	t|	| ||j }
t|
| d S )
Nz2016-06-28 05:30z2016-06-28 05:31r   )r   r   rK   )r?  r6   r9   )r   r   )	r   r   r   r   rV   r#   rs   r   r  )r&   r'   namesr   r   rX   r/   r.   r'  Zresult3Zresult4r0   r0   r1   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||	 d S )Nrd  r6   r   )r   r   r   rb  r9   r   c                    s   g | ]} | | qS r0   r0   re  rf  r0   r1   r   6	  r   zPTestDatetimeIndexArithmetic.test_dti_addsub_offset_arraylike.<locals>.<listcomp>Zinfer)r   rB   )r   rf   r%  rM  r,  r   r#   r   r	   r   rc   r   r$   r%   )
r&   r'   r  ru   rt   	other_boxr   r-   rg  r/   r0   rf  r1    test_dti_addsub_offset_arraylike%	  s    $
($z<TestDatetimeIndexArithmetic.test_dti_addsub_offset_arrayliker  c                 C   s   |}t dd|d}t||}|tj tddg}t||}tddg|d}	t|	|}	t	t
 || }
W d    n1 s0    Y  t|
|	 td	d
g|d}	t|	|}	t	t
 || }
W d    n1 s0    Y  t|
|	 d S )Nrd  r6   r   r   r7   z
2017-01-31z
2017-01-06rT   z
2016-12-31z
2016-12-29)r   r#   r$   rf   r%  rM  r   r   r   r   r	   r%   )r&   r'   r(   r  r   r*   r,   r+   r-   r/   r.   r0   r0   r1    test_dti_addsub_object_arraylike;	  s    
&&z<TestDatetimeIndexArithmetic.test_dti_addsub_object_arraylikeN)rZ   r[   r\   r  r  r  r  r  r  rO   r]   r^   r   rn  rp  r  r  r  r  r   ro  r  rf   r   r!   r"   r  r0   r0   r0   r1   r    s   ,*
E#
r  r<  )r4   r   r9   r=  )r   r6   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 )	Nr5  r6  r   r8  r9  r  c                    s    g | ]}|t jj d  qS ))r<  r=  )rf   r%  r
   r   r=  r<  r0   r1   r   c	  r   z%test_shift_months.<locals>.<listcomp>)r   r   r   r   r#   r  )r<  r=  r*   actualrawr/   r0   r  r1   test_shift_monthsU	  s    	r  c                  C   st  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sJ |jd u sJ t|j|j tt	 ||t }W d    n1 s"0    Y  t
|ts<J |jdksLJ |jd u s\J |jdk spJ d S )Nz
1994-02-13Z2Wr   rA   )r   r9   c                 S   s   g | ]}t j|gqS r0   )rf   r%  r,  re  r0   r0   r1   r   n	  r   z7test_dt64arr_addsub_object_dtype_2d.<locals>.<listcomp>r   r4   r9   )r   rF   Zreshaper!   r"   rc   shaper#   r   r	   r   r   rB   rN   rd   r_   r   r   r   )r*   rG   r+   r.   r/   r'  r0   r0   r1   #test_dt64arr_addsub_object_dtype_2dh	  s"    &F.r  )6r   r   r   	itertoolsr   r   r   r  numpyr!   rO   r  Zpandas._libs.tslibs.conversionr   Zpandas._libs.tslibs.offsetsr   Zpandas.errorsr	   Zpandasrf   r
   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr#   Zpandas.core.arraysr   r   Zpandas.core.opsr   Zpandas.tests.arithmetic.commonr   r   r   r   r   rh   r   r   r"  rq  r  r  r]   r^   r  r  r0   r0   r0   r1   <module>   sR   ,p Z      *   #z     ~