U
    ¾mœd�] ã                   @   s˜  d dl m Z mZmZ d dlmZmZ d dlZd dlZd dlZ	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZ d dlmZ d dl m!Z! d d	l"m#Z#m$Z$m%Z%m&Z& G d
d„ dƒZ'G dd„ dƒZ(G dd„ dƒZ)G dd„ dƒZ*G dd„ dƒZ+G dd„ dƒZ,G dd„ dƒZ-G dd„ dƒZ.e
j/ 0ddd dg¡e
j/ 0ddd dg¡d d!„ ƒƒZ1d"d#„ Z2d$d%„ Z3d&d'„ Z4d(d)„ Z5dS )*é    )ÚdatetimeÚtimeÚ	timedelta)ÚproductÚstarmapN)Úlocalize_pydatetime)Úshift_months)ÚPerformanceWarning)	Ú
DateOffsetÚDatetimeIndexÚNaTÚPeriodÚSeriesÚ	TimedeltaÚTimedeltaIndexÚ	TimestampÚ
date_range)Ú	roperator)Úassert_cannot_addÚassert_invalid_addsub_typeÚassert_invalid_comparisonÚget_upcast_boxc                   @   s  e Zd Zdd„ Zej dddddeƒ edd	�e	d
ddƒ 
¡ dejg	¡dd„ ƒZej deedƒƒe d¡e d¡ ej¡e d¡ e¡ejddd�je ejddd�¡eejddd�ƒejddd� e¡ejdddd�jejdddd� e¡g
¡dd„ ƒZdd„ Zdd„ ZdS )Ú"TestDatetime64ArrayLikeComparisonsc                 C   st   |}|}t dd|d�}t | ¡ d ¡}t ||¡}t||dƒ}||k}	t dddg¡}
t |
|¡}
t |	|
¡ d S )NÚ20130101é   ©ÚperiodsÚtzr   TF)r   ÚnpÚarrayZto_numpyÚtmÚbox_expectedr   Úassert_equal)ÚselfÚtz_naive_fixtureÚbox_with_arrayr   ÚboxÚdtiÚotherÚdtarrÚxboxÚresultÚexpected© r-   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/arithmetic/test_datetime64.pyÚtest_compare_zerodim6   s    z7TestDatetime64ArrayLikeComparisons.test_compare_zerodimr(   Úfooéÿÿÿÿéc   g      @é   ©ÚdaysiÑ  é   Nc                 C   s.   |}t dd|d�}t ||¡}t|||ƒ d S )Nú1/1/2000é
   r   )r   r    r!   r   )r#   r(   r$   r%   r   Úrngr)   r-   r-   r.   Útest_dt64arr_cmp_scalar_invalidE   s    zBTestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_scalar_invalidr8   Z1ns©r   ú1 Dayz
1971-01-01ÚD©Úfreqr   c                 C   s2   |}t ddd|d�j}t ||¡}t|||ƒ d S )Nú
1970-01-01Únsr8   ©r?   r   r   )r   Ú_datar    r!   r   )r#   r(   r$   r%   r   ÚdtaÚobjr-   r-   r.   Ú"test_dt64arr_cmp_arraylike_invalid_   s    zETestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_arraylike_invalidc              	   C   s  |}t ddd|d�j}t ddd|d tdd	�g¡}||k}t d
d
d
dd
g¡}t ||¡ ||k}t || ¡ d}tjt	|d�� ||k  W 5 Q R X tjt	|d�� ||k W 5 Q R X tjt	|d�� ||k W 5 Q R X tjt	|d�� ||k W 5 Q R X d S )Nr@   Úhé   rB   r   r6   r3   r   r4   FTzDInvalid comparison between|Cannot compare type|not supported between©Úmatch)
r   rC   r   r   r   r    Úassert_numpy_array_equalÚpytestÚraisesÚ	TypeError)r#   r$   r   rD   r(   r+   r,   Úmsgr-   r-   r.   Útest_dt64arr_cmp_mixed_invalidx   s"    zATestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_mixed_invalidc                 C   sn   |}|}t d|d�}t|tgƒ}t ||¡}t||dƒ}tddgtjd�}	t |	|¡}	||k}
t |
|	¡ d S )Nz
2021-01-01©r   TF©Údtype)	r   r   r   r    r!   r   r   Zbool_r"   )r#   r$   r%   r   r&   ÚtsÚserrE   r*   r,   r+   r-   r-   r.   Útest_dt64arr_nat_comparison�   s    z>TestDatetime64ArrayLikeComparisons.test_dt64arr_nat_comparison)Ú__name__Ú
__module__Ú__qualname__r/   rL   ÚmarkÚparametrizeÚobjectr   r   Údater   Únanr:   ÚlistÚrangeZarangeÚastypeZfloat32ÚpdÚtimedelta_ranger   Zperiod_rangerF   rP   rV   r-   r-   r-   r.   r   1   s@   óþ

õþ
	r   c                   @   sT  e Zd Zej dedƒeedƒgeeedƒgfedƒeedƒgeeedƒgfe	ddd�ee	d	dd�geee	d	dd�gfg¡ej d
ddg¡ej dde
g¡ej dejedddgƒfejedddgƒfejedddgƒfejedddgƒfejedddgƒfejedddgƒfg¡dd„ ƒƒƒƒZej dedƒeedƒgedƒeedƒge	ddd�ee	d	dd�gg¡ej dde
g¡dd„ ƒƒZej dedddƒedddƒg¡dd„ ƒZej ddddd g¡d!d"„ ƒZd#d$„ Zej d%ed&ƒed'ddƒe d(d)¡g¡ej d*ejddddgfejddddgfejddddgfejddddgfg¡d+d,„ ƒƒZdS )-ÚTestDatetime64SeriesComparisonÚpairú
2011-01-01ú
2011-01-03ú1 daysz3 daysz2011-01ÚM©r?   z2011-03ÚreverseTFrS   Nzop, expectedc                 C   sL   |}|\}}	|r|	| }}	t ||d�}
||	|d�}||
|ƒ}t ||¡ d S )NrR   )r   r    Úassert_series_equal)r#   rS   Úindex_or_seriesrk   re   Úopr,   r&   ÚlhsÚrhsÚleftÚrightr+   r-   r-   r.   Útest_nat_comparisons¤   s    '

z3TestDatetime64SeriesComparison.test_nat_comparisonsÚdatac                 C   s’  |}t ||d�}t ||¡}t|tdƒ}dddg}t ||¡}|tjkr^|tkr^tj|dd�}t |tk|¡ t t|k|¡ dddg}t ||¡}|tjkr´|tkr´tj|dd�}t |tk|¡ t t|k|¡ dddg}t ||¡}|tjk�r|tk�rtj|dd�}t |tk |¡ t t|k|¡ t |tk|¡ t t|k|¡ t |tk|¡ t t|k |¡ t |tk|¡ t t|k|¡ d S )NrR   TFÚbool)	r   r    r!   r   r   rb   r   r\   r"   )r#   rS   rt   r%   r&   rq   r*   r,   r-   r-   r.   Útest_nat_comparisons_scalarØ   s8    



z:TestDatetime64SeriesComparison.test_nat_comparisons_scalarÚvaliÐ  r6   é   rH   c                    s>   t tddd�ƒ}|ˆ k}t ‡ fdd„|D ƒƒ}t ||¡ d S )Nr7   r8   r;   c                    s   g | ]}|ˆ k‘qS r-   r-   ©Ú.0Úx©rw   r-   r.   Ú
<listcomp>
  s     zQTestDatetime64SeriesComparison.test_series_comparison_scalars.<locals>.<listcomp>)r   r   r    rl   )r#   rw   Zseriesr+   r,   r-   r|   r.   Útest_series_comparison_scalars  s    z=TestDatetime64SeriesComparison.test_series_comparison_scalarsz
left,right)ÚltÚgt)ÚleÚge)Úeqrƒ   )Úner„   c           	      C   sè   t tddd�dd�}|jdd�}tdƒ|d	< tdƒ|d
< tt|ƒ}tt|ƒ}||tdƒƒ}|tdƒ|ƒ}t ||¡ ||tdƒƒ}|tdƒ|ƒ}t ||¡ ||tdƒƒ}|tdƒ|ƒ}t ||¡ ||tƒ}|t|ƒ}t ||¡ d S )NZ20010101r8   r;   Údates©ÚnameT)ÚdeepÚnatr   r   Z20010109)	r   r   Úcopyr   ÚgetattrÚoperatorr    rl   r   )	r#   rq   rr   rU   Zs_natZleft_fZright_fr,   r+   r-   r-   r.   Útest_timestamp_compare_series  s$    



z<TestDatetime64SeriesComparison.test_timestamp_compare_seriesc              	   C   sö  |}t tdƒtdƒtgƒ}t ||¡}t||dƒ}||k}t dddg|¡}t ||¡ |tjkrŠt	j
tdd�� ||d k W 5 Q R X n*||d k}t dddg|¡}t ||¡ |tjkræt	j
tdd�� ||d k W 5 Q R X n*||d k}t dddg|¡}t ||¡ ||k}t dddg|¡}t ||¡ |tjk�rjt	j
tdd�� ||d k W 5 Q R X n*||d k}t dddg|¡}t ||¡ |tjk�rÈt	j
tdd�� ||d k W 5 Q R X n*||d k}t dddg|¡}t ||¡ d S )	Nz2000-01-29 01:59:00z
2000-01-30TFznot alignedrI   r   r3   )r   r   r   r    r!   r   r"   rb   Ú	DataFramerL   rM   Ú
ValueError)r#   r%   r&   rU   r*   r+   r,   r-   r-   r.   Útest_dt64arr_timestamp_equality0  sD    

z>TestDatetime64SeriesComparison.test_dt64arr_timestamp_equalityÚdatetimeliker   iÝ  z2013-01-01T00:00rA   zop,expectedc                 C   sH   t tdƒtdƒtjtdƒgdd�}|||ƒ}t |dd�}t ||¡ d S )NÚ20120101r   Z20130103ÚAr†   )r   r   r   r^   r    rl   )r#   r‘   rn   r,   rU   r+   r-   r-   r.   Ú!test_dt64_compare_datetime_scalari  s    üù	
z@TestDatetime64SeriesComparison.test_dt64_compare_datetime_scalar)rW   rX   rY   rL   rZ   r[   r   r   r   r   r\   rŒ   rƒ   r   r„   r   r€   r‚   r�   rs   rv   r   r~   r�   r�   r   Ú
datetime64r”   r-   r-   r-   r.   rd   ¡   sv   þþþ÷þúþýþ$ 
 
ÿ
 9

ýþüþ	rd   c                   @   s  e Zd Zdd„ Zej dedddƒedƒe	 
d¡g¡dd„ ƒZej d	d
eg¡dd„ ƒZdd„ Zdd„ Zdd„ Zej dedddƒedƒe	 
d¡g¡ej d¡dd„ ƒƒZdd„ Zdd„ Zdd„ Zejjdejddd�ejddd� ¡ ejddd�j d¡gd d!„ d"�d#d$„ ƒZd%d&„ Zd
S )'ÚTestDatetimeIndexComparisonsc                 C   sd   t  d¡}|t|ƒd  }t|ƒ ¡ }t |¡}|||ƒ}|||ƒ}t|tjƒsTt	‚t  
||¡ d S )Néd   r3   )r    ZmakeDateIndexÚlenr   Úto_datetime64r   r   Ú
isinstanceZndarrayÚAssertionErrorrK   )r#   Úcomparison_opÚindexÚelementZarrZ
arr_resultZindex_resultr-   r-   r.   Útest_comparators�  s    



z-TestDatetimeIndexComparisons.test_comparatorsr(   éà  r6   ú
2016-01-01c                 C   sä   |}t dd|d�}|d k	r6t|tjƒr*d S t||jƒ}||k}t ddg¡}t ||¡ ||k}t ddg¡}t ||¡ ||k}t ddg¡}t ||¡ ||k }t ddg¡}t ||¡ ||k}t ddg¡}t ||¡ d S )Nr¡   r3   r   TF)	r   rš   r   r•   r   Útzinfor   r    rK   )r#   r(   r$   r   r'   r+   r,   r-   r-   r.   Útest_dti_cmp_datetimelike™  s*    z6TestDatetimeIndexComparisons.test_dti_cmp_datetimelikerS   Nc           
      C   sŒ  t tdƒttdƒgƒ}t tttdƒgƒ}t ||¡}t ||¡}t||dƒ}|| }}|tkrt| t¡| t¡ }}||k}t 	dddg¡}	t |	|¡}	t 
||	¡ ||k}t 	dddg¡}	t |	|¡}	t 
||	¡ t 	dddg¡}	t |	|¡}	t 
|tk|	¡ t 
t|k|	¡ t 	dddg¡}	t |	|¡}	t 
|tk|	¡ t 
t|k|	¡ t 	dddg¡}	t |	|¡}	t 
|tk |	¡ t 
t|k|	¡ d S )Nrf   rg   TF)r   r   r   r    r!   r   r\   ra   r   r   r"   )
r#   rS   r%   rq   rr   r*   ro   rp   r+   r,   r-   r-   r.   Útest_dti_cmp_natº  s8    
z-TestDatetimeIndexComparisons.test_dti_cmp_natc              
   C   sæ  t  dtjdtjddg¡}t  ddtjtjddg¡}tdtdtd	d
gƒ}tddttdd
gƒ}t t d¡t d¡t d¡t d¡t d¡t d¡g¡}||f||f||fg}t 	d ¡�� |D �]\}}||k }	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ q¾W 5 Q R X t 	d ¡�È |tjf|tffD ]®\}}||k }	t ddddddg¡}
t 
|	|
¡ ||k}	t 
|	|
¡ ||k}	t 
|	|
¡ ||k}	t 
|	|
¡ ||k}	t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ �qîW 5 Q R X t 	d ¡��( |df|tdddƒffD �]\}}||k }	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ ||k}	t ddddddg¡}
t 
|	|
¡ �qÎW 5 Q R X d S )Nç      ð?ç      @g      @g      @ç       @g      @ú
2014-01-01ú
2014-03-01ú
2014-05-01ú
2014-07-01z
2014-02-01z
2014-06-01z2014-02-01 00:00z2014-03-01 00:00r‰   z2014-06-01 00:00z2014-07-01 00:00TFr   iÞ  r6   )rb   ÚIndexr   r^   r   r   r   r•   r    Úassert_produces_warningrK   r   )r#   Zfidx1Zfidx2Zdidx1Zdidx2ÚdarrZcasesZidx1Zidx2r+   r,   rw   r-   r-   r.   Ú+test_dti_cmp_nat_behaves_like_float_cmp_nanà  s”    ÿÿúÿ"zHTestDatetimeIndexComparisons.test_dti_cmp_nat_behaves_like_float_cmp_nanc           	   	   C   st  |}|}t ddd�}| d¡}t ||¡}t ||¡}|tjkrJdd„ }nt}|tjtj	fk�r`d}t
jt|d�� |||ƒ W 5 Q R X t
jt|d�� ||||ƒƒ W 5 Q R X t
jt|d�� ||tj||ƒtd	�ƒ W 5 Q R X t
jt|d�� |||ƒ W 5 Q R X t
jt|d�� ||||ƒƒ W 5 Q R X t
jt|d�� ||tj||ƒtd	�ƒ W 5 Q R X t ||k¡�stt‚t |||ƒk¡�sŒt‚t ||ƒ|k¡�s¤t‚t tj||ƒtd	�|k¡�sÆt‚t |tj||ƒtd	�k¡�sèt‚t ||k¡�süt‚t |||ƒk¡�st‚t ||ƒ|k¡�s,t‚t tj||ƒtd	�|k¡�sNt‚t |tj||ƒtd	�k¡�spt‚d S )
Nr¡   é   r;   ú
US/Pacificc                 S   s   |   t¡j ¡ d S )Nr   )ra   r\   ÚvaluesÚtolist©r{   r-   r-   r.   Ú<lambda>K  ó    zQTestDatetimeIndexComparisons.test_comparison_tzawareness_compat.<locals>.<lambda>z^Invalid comparison between dtype=datetime64\[ns.*\] and (Timestamp|DatetimeArray|list|ndarray)rI   rR   )r   Útz_localizer    r!   rb   rŽ   r_   rŒ   rƒ   r„   rL   rM   rN   r   r   r\   Úallr›   )	r#   rœ   r%   rn   r&   ÚdrÚdzr³   rO   r-   r-   r.   Ú"test_comparison_tzawareness_compat?  sD    


ÿ"""""z?TestDatetimeIndexComparisons.test_comparison_tzawareness_compatc           	   	   C   s  |}t ddd�}| d¡}t ||¡}t ||¡}tdƒ}tddd�}t ||k¡sXt‚d}|tj	tj
fkr�tjt|d	�� |||ƒ W 5 Q R X t ||k¡s¢t‚|tj	tj
fkrÖtjt|d	�� |||ƒ W 5 Q R X |tj	tj
fk�rtjt|d	�� |||ƒ W 5 Q R X d S )
Nr¡   r°   r;   r±   z2000-03-14 01:59zEurope/AmsterdamrQ   zAInvalid comparison between dtype=datetime64\[ns.*\] and TimestamprI   )r   r·   r    r!   r   r   r¸   r›   rŒ   rƒ   r„   rL   rM   rN   )	r#   rœ   r%   rn   r¹   rº   rT   Zts_tzrO   r-   r-   r.   Ú*test_comparison_tzawareness_compat_scalarsp  s&    
zGTestDatetimeIndexComparisons.test_comparison_tzawareness_compat_scalarsz*ignore:elementwise comp:DeprecationWarningc              	   C   sð   |}|}t dd|d�}t ||¡}t||dƒ}	|tjtjfkr”|tjk}
tj|
|
gt	d�}t ||	¡}|||ƒ}t 
||¡ |||ƒ}t 
||¡ nXdt|ƒj› �}tjt|d�� |||ƒ W 5 Q R X tjt|d�� |||ƒ W 5 Q R X d S )Nr¡   r3   r   TrR   z:Invalid comparison between dtype=datetime64\[ns, .*\] and rI   )r   r    r!   r   rŒ   rƒ   r„   r   r   ru   r"   ÚtyperW   rL   rM   rN   )r#   rœ   r(   Útz_aware_fixturer%   rn   r   r'   r)   r*   Zexboolr,   r+   rO   r-   r-   r.   Ú"test_scalar_comparison_tzawarenessŽ  s&    


ÿz?TestDatetimeIndexComparisons.test_scalar_comparison_tzawarenessc                 C   sh   |}t dtdtddgƒ}t |tjkgt|ƒ ¡}||tƒ}t ||¡ || 	d¡tƒ}t ||¡ d S )Nr¨   r©   rª   r«   r±   )
r   r   r   r   rŒ   r„   r˜   r    rK   r·   )r#   rœ   rn   r'   r,   r+   r-   r-   r.   Útest_nat_comparison_tzawareness³  s    ÿ
z<TestDatetimeIndexComparisons.test_nat_comparison_tzawarenessc                 C   s
  |}t dd|d�}d}||k}t dgdgd  ¡}t ||¡ ||k}t dgdgd  ¡}t ||¡ ||k }t dgd ¡}t ||¡ ||k}t dgdgd  ¡}t ||¡ ||k}t dgdgd  ¡}t ||¡ ||k}t dgd ¡}t ||¡ d S )Nr7   r8   r   TFé	   )r   r   r   r    rK   )r#   r$   r   r9   r(   r+   r,   r-   r-   r.   Útest_dti_cmp_strÂ  s*    z-TestDatetimeIndexComparisons.test_dti_cmp_strc                 C   s0   t ddd�}|t|ƒk}||k}t ||¡ d S )Nr7   r8   r;   )r   r_   r    rK   )r#   r9   r+   r,   r-   r-   r.   Útest_dti_cmp_listá  s    z.TestDatetimeIndexComparisons.test_dti_cmp_listZ1Dr8   r;   úm8[ns]c                 C   s
   t | ƒjS ©N)r½   rW   r´   r-   r-   r.   rµ   ï  r¶   z%TestDatetimeIndexComparisons.<lambda>)Zidsc              	   C   sæ   t dddd�}||k}t dgd ¡}t ||¡ ||k}t dgd ¡}t ||¡ d}tjt|d�� ||k  W 5 Q R X tjt|d�� ||k W 5 Q R X tjt|d�� ||k W 5 Q R X tjt|d�� ||k W 5 Q R X d S )	Nú
2000-01-01r8   ú
Asia/Tokyor   FTzInvalid comparison betweenrI   )r   r   r   r    rK   rL   rM   rN   )r#   r(   r'   r+   r,   rO   r-   r-   r.   Útest_dti_cmp_tdi_tzawarenessè  s     z9TestDatetimeIndexComparisons.test_dti_cmp_tdi_tzawarenessc              	   C   sØ   t dddd�}| d¡}||k}t dgd ¡}t ||¡ | d ¡}||k}t ||¡ t t|d d… ƒtdd	�gd  ¡}||k}t dgd d
gd  ¡}t ||¡ d}t	j
t|d�� ||k W 5 Q R X d S )NrÆ   r8   rÇ   r   ÚOTrH   r6   r4   FzB>=' not supported between instances of 'Timestamp' and 'Timedelta'rI   )r   ra   r   r   r    rK   r·   r_   r   rL   rM   rN   )r#   r'   r(   r+   r,   rO   r-   r-   r.   Útest_dti_cmp_object_dtype  s    

&z6TestDatetimeIndexComparisons.test_dti_cmp_object_dtype)rW   rX   rY   rŸ   rL   rZ   r[   r   r   r   r•   r£   r\   r¤   r¯   r»   r¼   Úfilterwarningsr¿   rÀ   rÂ   rÃ   rb   rc   Z	to_seriesÚasi8ÚviewrÈ   rÊ   r-   r-   r-   r.   r–   ‹  s<   þ

%_1þ
ýù	
r–   c                   @   sÆ  e Zd Zejjdd„ ƒZdd„ Zdd„ Zdd„ Z	d	d
„ Z
dd„ Zej dedƒedƒ ¡ edƒ ¡ e dd¡g¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej dddd d!d"d#d$d%g¡ej d&d%d'g¡d(d)„ ƒƒZej d*d+e d,d-g¡ed.dd/�ed0d1d2ƒg¡ej d3d%dg¡d4d5„ ƒƒZej d6dd d#dg¡ej d3d%dg¡d7d8„ ƒƒZd9d:„ Zej d;e ed<ƒed<ƒgƒe e!ed<ƒgƒe e!e!gd=d>�g¡ej d?d0d@e d0¡g¡dAdB„ ƒƒZ"d%S )CÚTestDatetime64Arithmeticc                 C   sx   |}t dd|d�}t dd|d�}t ||¡}t ||¡}|| }t ||¡ || }t ||¡ ||7 }t ||¡ d S )NrÆ   ú
2000-02-01rQ   z2000-01-01 02:00z2000-02-01 02:00©r   r    r!   r"   ©r#   r$   Z	two_hoursr%   r   r9   r,   r+   r-   r-   r.   Ú%test_dt64arr_add_timedeltalike_scalar*  s    z>TestDatetime64Arithmetic.test_dt64arr_add_timedeltalike_scalarc                 C   sd   |}t dd|d�}t dd|d�}t ||¡}t ||¡}|| }t ||¡ ||8 }t ||¡ d S )NrÆ   rÏ   rQ   z1999-12-31 22:00z2000-01-31 22:00rÐ   rÑ   r-   r-   r.   Ú%test_dt64arr_sub_timedeltalike_scalar@  s    z>TestDatetime64Arithmetic.test_dt64arr_sub_timedeltalike_scalarc              	   C   sÜ   t ddd� d¡}t ||¡}tdƒ d¡}tdƒ}|| }tddd	gƒ}t ||¡}t ||¡ || }td
ddgƒ}t ||¡}t ||¡ d}tjt	|d�� ||  W 5 Q R X tjt	|d�� ||  W 5 Q R X d S )Nr   r   r;   ú
US/EasternÚCETi5)3ú0 days 06:00:00z1 days 06:00:00z2 days 06:00:00ú-1 days +18:00:00z-2 days +18:00:00z-3 days +18:00:00ú;Cannot subtract tz-naive and tz-aware datetime-like objectsrI   )
r   r·   r    r!   r   r   r"   rL   rM   rN   ©r#   r%   Út1Út2Ztnaiver+   r,   rO   r-   r-   r.   Ú.test_dt64_array_sub_dt_with_different_timezoneQ  s*    ÿÿzGTestDatetime64Arithmetic.test_dt64_array_sub_dt_with_different_timezonec              	   C   sð   t ddd� d¡}t ||¡}t ddd� d¡}t ||¡}t ddd�}|| }tdddgƒ}t ||¡}t ||¡ || }tdddgƒ}t ||¡}t ||¡ d}tjt|d	�� ||  W 5 Q R X tjt|d	�� ||  W 5 Q R X d S )
Nr   r   r;   rÔ   rÕ   rÖ   r×   rØ   rI   )	r   r·   r    r!   r   r"   rL   rM   rN   rÙ   r-   r-   r.   Ú6test_dt64_array_sub_dt64_array_with_different_timezonel  s,    ÿÿzOTestDatetime64Arithmetic.test_dt64_array_sub_dt64_array_with_different_timezonec           
   	   C   s®   |}t dd|dd�}t d¡}tdgd |d�}t ||¡}t ||¡}|| }t ||¡ || }t ||¡ || }t ||¡ d}	tjt	|	d�� ||  W 5 Q R X d S )	Nz
1994-04-01rÁ   ZQS©r   r   r?   r   rQ   úcannot subtractrI   )
r   r   Útimedelta64r   r    r!   r"   rL   rM   rN   )
r#   r%   r$   r   r'   r(   r,   rE   r+   rO   r-   r-   r.   Útest_dt64arr_add_sub_td64_natˆ  s    
z6TestDatetime64Arithmetic.test_dt64arr_add_sub_td64_natc              	   C   sÐ   |}t dd|d�}tdddgƒ}|j}t ddd|d�}t ||¡}t ||¡}|| }	t |	|¡ || }	t |	|¡ t ddd|d�}t ||¡}|| }	t |	|¡ d}
tjt|
d	�� ||  W 5 Q R X d S )
Nr¡   r   r   z-1 Dayz
2015-12-31z
2016-01-02z
2016-01-04z8cannot subtract|(bad|unsupported) operand type for unaryrI   )	r   r   r²   r    r!   r"   rL   rM   rN   )r#   r$   r%   r   r'   ÚtdiZtdarrr,   r)   r+   rO   r-   r-   r.   Ú test_dt64arr_add_sub_td64ndarray�  s$    z9TestDatetime64Arithmetic.test_dt64arr_add_sub_td64ndarrayrT   ú
2013-01-01r=   c                 C   st   t ddd� d ¡}t ||¡}tdddgƒ}t ||¡}|| }t ||¡ || }t || ¡ t || ¡ d S )Nrä   r   r;   z0 Daysr<   z2 Days)r   Ú
_with_freqr    r!   r   r"   )r#   r%   rT   Úidxr,   r+   r-   r-   r.   Útest_dt64arr_sub_dtscalar¹  s    z2TestDatetime64Arithmetic.test_dt64arr_sub_dtscalarc                 C   s|   t ddddd�}| d ¡}|d }t ||¡}tt dd¡t dd¡gƒ}t ||¡}t || |¡ t || | ¡ d S )Nz
2014-03-17r3   r=   rÔ   ©r   r?   r   r   r6   )r   rå   r    r!   r   r   rà   r"   )r#   r%   rU   rT   Zdelta_seriesr,   r-   r-   r.   Ú"test_dt64arr_sub_timestamp_tzawareÓ  s    
z;TestDatetime64Arithmetic.test_dt64arr_sub_timestamp_tzawarec                 C   s–   t ttdƒgƒ}t ||¡}|t }tttgdd�}t ||¡}t ||¡ | d¡}t ||¡}|t }tttgdd�}t ||¡}t ||¡ d S )NÚ19900315útimedelta64[ns]rR   rÇ   )r   r   r   r    r!   r   r"   r·   )r#   r%   r'   rU   r+   r,   Údti_tzZser_tzr-   r-   r.   Útest_dt64arr_sub_NaTà  s    
z-TestDatetime64Arithmetic.test_dt64arr_sub_NaTc              	   C   sh   t dd|d�}|| }t ||¡}t ||¡ t¡}t t¡� || t¡ }W 5 Q R X t ||¡ d S ©Nr¡   r   r   )r   r    r!   ra   r\   r­   r	   r"   )r#   r%   r$   r'   r,   rE   r+   r-   r-   r.   Ú!test_dt64arr_sub_dt64object_arrayõ  s    z:TestDatetime64Arithmetic.test_dt64arr_sub_dt64object_arrayc                 C   sT   t ddd d�}|j}t ||¡}|| }|| }t ||¡ || }t ||¡ d S rî   )r   r²   r    r!   r"   )r#   r%   r'   Údt64valsr)   r,   r+   r-   r-   r.   Ú"test_dt64arr_naive_sub_dt64ndarray   s    z;TestDatetime64Arithmetic.test_dt64arr_naive_sub_dt64ndarrayc              	   C   sp   |}t dd|d�}|j}t ||¡}d}tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X d S )Nr¡   r   r   z.Cannot subtract tz-naive and tz-aware datetimerI   )r   r²   r    r!   rL   rM   rN   )r#   r¾   r%   r   r'   rð   r)   rO   r-   r-   r.   Ú)test_dt64arr_aware_sub_dt64ndarray_raises  s    zBTestDatetime64Arithmetic.test_dt64arr_aware_sub_dt64ndarray_raisesc                 C   sÄ   |}t dd|d�}|d kr&| d¡}n
| d ¡}t ||¡}t||jƒ t||ƒ t||ƒ t||d ƒ t||d  ¡ ƒ t||d  ¡ ƒ t||d ƒ t||d  ¡ ƒ t|t 	dd¡ƒ d S )Nr¡   r   r   rÔ   r   rf   r=   )
r   r·   r    r!   r   r²   Úto_pydatetimer™   r   r•   )r#   r$   r%   r   r'   Údti2r)   r-   r-   r.   Útest_dt64arr_add_dtlike_raises  s    


z7TestDatetime64Arithmetic.test_dt64arr_add_dtlike_raisesr?   ÚHÚWri   ZMSÚQÚBNrS   Zuint8c           
      C   s  |}|t jkrd S |d kr,tddg|d�}ntdd||d�}||ƒ}t ddg¡}|d k	rd| |¡}d	 d
ddddg¡}	t|d|	ƒ t|t 	d¡|	ƒ t|tjdtj	d�|	ƒ t|||	ƒ t|t |¡|	ƒ t|t  |¡|	ƒ t|t  
|¡|	ƒ t|t  |¡|	ƒ t|t|ƒ|	ƒ d S )Nr   z2017-04-05 06:07:08rQ   r¡   r3   rè   rx   r1   ú|z Addition/subtraction of integersz"cannot subtract DatetimeArray fromz(can only perform ops with numeric valuesz%unsupported operand type.*Categoricalz:unsupported operand type\(s\) for -: 'int' and 'Timestamp'r6   r   rR   )rb   rŽ   r   r   r   r   ra   Újoinr   Zint64ZCategoricalr¬   r   )
r#   rS   r%   r?   r$   r   r'   rE   r(   rO   r-   r-   r.   Útest_dt64arr_addsub_intlike9  s6    

úÿ
z4TestDatetime64Arithmetic.test_dt64arr_addsub_intliker(   g…ëQ¸	@r§   r¦   rf   rj   r6   r3   r   Údti_freqc                 C   s@   t ddg|d�}t ||¡}d ddddd	g¡}t|||ƒ d S )
Nrf   ú
2011-01-02rj   rú   zunsupported operand typeúcannot (add|subtract)zcannot use operands with typesz7ufunc '?(add|subtract)'? cannot use operands with typesz;Concatenation operation is not implemented for NumPy arrays)r   r    r!   rû   r   )r#   rý   r(   r%   r'   r)   rO   r-   r-   r.   Útest_dt64arr_add_sub_invalidb  s    ûÿ	z5TestDatetime64Arithmetic.test_dt64arr_add_sub_invalidÚpi_freqc           
      C   sT   t ddg|d�}| |¡}t ||¡}t ||¡}d ddddg¡}	t|||	ƒ d S )	Nrf   rþ   rj   rú   rÿ   úunsupported operandzdescriptor.*requireszufunc.*cannot use operands)r   Z	to_periodr    r!   rû   r   )
r#   rý   r  r%   Zbox_with_array2r'   Úpir)   ZparrrO   r-   r-   r.   Útest_dt64arr_add_sub_parr|  s    
üÿz2TestDatetime64Arithmetic.test_dt64arr_add_sub_parrc              	   C   s€   |}t dd|d�}dd„ tdƒD ƒ}t ||¡}t ||¡}d ddg¡}tjd	d
��  t dt¡ t	|||d� W 5 Q R X d S )Nú
2012-01-01r   r   c                 S   s   g | ]}t |||ƒ‘qS r-   )r   )rz   Úir-   r-   r.   r}   —  s     zTTestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raises.<locals>.<listcomp>rú   r  z*cannot subtract DatetimeArray from ndarrayT©ÚrecordÚignore)rO   )
r   r`   r    r!   rû   ÚwarningsÚcatch_warningsÚsimplefilterr	   r   )r#   r%   r$   r   Zobj1Úobj2rO   r-   r-   r.   Ú'test_dt64arr_addsub_time_objects_raises‘  s    þÿz@TestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raisesÚdt64_seriesrê   údatetime64[ns]rR   Úoner¥   c              	   C   sœ   t  ||¡}d}tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X d S )Nz&cannot perform .* with this index typerI   )r    r!   rL   rM   rN   )r#   r  r  r%   rE   rO   r-   r-   r.   Ú!test_dt64_mul_div_numeric_invalid®  s    
z:TestDatetime64Arithmetic.test_dt64_mul_div_numeric_invalid)#rW   rX   rY   rL   rZ   Zarm_slowrÒ   rÓ   rÜ   rÝ   rá   rã   r[   r   ró   r™   r   r•   rç   ré   rí   rï   rñ   rò   rõ   rü   r   r   r   r   r  r  r   r   r  r-   r-   r-   r.   rÎ   #  s`   



úþ
'

úþýþrÎ   c                &   @   s„  e Zd Zdd„ Zdd„ Zej ddddd	d
ddg¡dd„ ƒZdd„ Z	dd„ Z
ej dddddifddddifddddddddifddddifd d!d"d#d$d%d&d'd(d)d*d+d,d-d.dd/ifd0d1d1d/d2d3œfd4d5d/d2d6œfd7d/d/d8œfd9d:d;d<ifd:ddifg!¡ej d=d>d?g¡ej d@d5dg¡dAdB„ ƒƒƒZdCdD„ Zej dEe ej ¡ ejjd/dF�g¡e ejjd1dG�ej ¡ g¡e ejjd1dG�ejjd1dG�g¡g¡ej dHejejejg¡ej dId>d?g¡dJdK„ ƒƒƒZej dLdMeddNdO�edPƒedQƒedRƒedSƒgdTfdMeddU�edVƒedWƒedXƒedYƒgdZfd[eddNdO�ed\ƒed]ƒed^ƒed_ƒgdTfd[eddU�ed`ƒedaƒedbƒedcƒgddfg¡dedf„ ƒZdTS )gÚ"TestDatetime64DateOffsetArithmeticc                 C   s|   t tdƒtdƒgƒ}t tdƒtdƒgƒ}t ||¡}t ||¡}|tj d¡ }t ||¡ tj d¡| }t ||¡ d S )Nú20130101 9:01ú20130101 9:02z20130101 9:01:05z20130101 9:02:05rH   )r   r   r    r!   rb   ÚoffsetsÚSecondr"   )r#   r%   rU   r,   r+   Úresult2r-   r-   r.   Ú'test_dt64arr_series_add_tick_DateOffsetÎ  s    ÿzJTestDatetime64DateOffsetArithmetic.test_dt64arr_series_add_tick_DateOffsetc              	   C   s¬   t tdƒtdƒgƒ}t tdƒtdƒgƒ}t ||¡}t ||¡}|tj d¡ }t ||¡ tj d¡ | }t ||¡ d}tj	t
|d�� tj d¡|  W 5 Q R X d S )Nr  r  z20130101 9:00:55z20130101 9:01:55rH   ú((bad|unsupported) operand type for unaryrI   )r   r   r    r!   rb   r  r  r"   rL   rM   rN   )r#   r%   rU   r,   r+   r  rO   r-   r-   r.   Ú'test_dt64arr_series_sub_tick_DateOffsetß  s    ÿzJTestDatetime64DateOffsetArithmetic.test_dt64arr_series_sub_tick_DateOffsetÚcls_nameÚDayÚHourÚMinuter  ÚMilliZMicroZNanoc                 C   sT   t tdƒtdƒgƒ}t ||¡}ttj|ƒ}||dƒ  |dƒ|  ||dƒ  d S )Nr  r  rH   )r   r   r    r!   r‹   rb   r  )r#   r  r%   rU   Ú
offset_clsr-   r-   r.   Ú*test_dt64arr_add_sub_tick_DateOffset_smokeó  s    zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_tick_DateOffset_smokec           
   
   C   s  |}|dkrJt dd|d�}|tj d¡ }|d tj d¡ |d ksJt‚t dd|dd	�}td
ddgd|d�}t ||¡}t ||¡}tj d¡t 	dd¡t
dd�fD ]p}|| }t ||¡ || }t ||¡ || }t ||¡ d ddg¡}	tjt|	d�� ||  W 5 Q R X q¦d S )Nr±   z
2012-11-01r   r   rH   r   z2010-11-01 00:00rö   rÞ   z2010-11-01 05:00z2010-11-01 06:00z2010-11-01 07:00)r?   r   rG   )Úhoursrú   zbad operand type for unary -zcannot subtract DatetimeArrayrI   )r   rb   r  r  r›   r   r    r!   r   rà   r   r"   rû   rL   rM   rN   )
r#   r¾   r%   r   r…   Úoffsetr,   ZscalarZ	roundtriprO   r-   r-   r.   Útest_dti_add_tick_tzaware  s2     ý$ÿz<TestDatetime64DateOffsetArithmetic.test_dti_add_tick_tzawarec           
   
      s   t tdƒtdƒtdƒtdƒtdƒtdƒtdƒtdƒgƒ}t ||¡}|tjkrX|jd	 n|}d
ddddddg}t|ƒD �]"\}\}}tf ||iŽ‰ t ‡ fdd„|D ƒƒ}t ||¡}t 	||ˆ  ¡ t ‡ fdd„|D ƒƒ}t ||¡}t 	||ˆ  ¡ tf t
|d |d … ƒŽ‰ t ‡ fdd„|D ƒƒ}t ||¡}t 	||ˆ  ¡ t ‡ fdd„|D ƒƒ}t ||¡}t 	||ˆ  ¡ d}	tjt|	d�� ˆ |  W 5 Q R X qvd S )Nú2000-01-05 00:15:00ú2000-01-31 00:23:00rÆ   ú
2000-03-31ú
2000-02-29ú
2000-12-31ú
2000-05-15ú
2001-06-15r   )Úyearsr3   )ÚmonthsrH   )r5   r   )r#  rH   )Úminutesr8   )Úsecondsr3   )ÚmicrosecondsrH   c                    s   g | ]}|ˆ  ‘qS r-   r-   ry   ©Úoffr-   r.   r}   C  s     zaTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsets.<locals>.<listcomp>c                    s   g | ]}|ˆ  ‘qS r-   r-   ry   r2  r-   r.   r}   G  s     r6   c                    s   g | ]}|ˆ  ‘qS r-   r-   ry   r2  r-   r.   r}   M  s     c                    s   g | ]}|ˆ  ‘qS r-   r-   ry   r2  r-   r.   r}   Q  s     r  rI   )r   r   r    r!   rb   rŽ   ÚilocÚ	enumerater
   r"   ÚdictrL   rM   rN   )
r#   r%   ÚvecÚ	vec_itemsZrelative_kwargsr  ÚunitÚvaluer,   rO   r-   r2  r.   Ú*test_dt64arr_add_sub_relativedelta_offsets%  sN    øÿù	zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsetsÚcls_and_kwargsZ	YearBeginÚmonthrH   ZYearEndZ
MonthBeginÚMonthEndZSemiMonthEndZSemiMonthBeginZWeekÚweekdayr   r°   ZBusinessDayZBDayZ
QuarterEndZQuarterBeginZCustomBusinessDayZCDayZ
CBMonthEndZCBMonthBeginZBMonthBeginZ	BMonthEndZBusinessHourZ
BYearBeginZBYearEndZBQuarterBeginÚLastWeekOfMonthr3   ÚFY5253Quarterr6   Znearest)Zqtr_with_extra_weekÚstartingMonthr?  Ú	variationÚFY5253r   )r?  rB  rC  ÚWeekOfMonth)r?  ÚweekZEasterr
   Údayrx   Ú	normalizeTFÚnc              
      s�  t |tƒr|\}}n|}i }|dkr0|dkr0d S ttdƒtdƒtdƒtdƒtdƒtdƒtd	ƒtd
ƒgƒ}t ||¡}|tjkrˆ|jd n|}t	tj
|ƒ}	tjdd��â t dt¡ |	|fd|i|—Ž‰ t‡ fdd„|D ƒƒ}
t |
|¡}
t |
|ˆ  ¡ t‡ fdd„|D ƒƒ}
t |
|¡}
t |
|ˆ  ¡ t‡ fdd„|D ƒƒ}
t |
|¡}
t |
ˆ | ¡ d}tjt|d�� ˆ |  W 5 Q R X W 5 Q R X d S )Nr   )rE  r@  rA  rD  r&  r'  rÆ   r(  r)  r*  r+  r,  Tr  r	  rH  c                    s   g | ]}|ˆ  ‘qS r-   r-   ry   ©r$  r-   r.   r}   ½  s     zWTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsets.<locals>.<listcomp>c                    s   g | ]}|ˆ  ‘qS r-   r-   ry   rJ  r-   r.   r}   Á  s     c                    s   g | ]}ˆ | ‘qS r-   r-   ry   rJ  r-   r.   r}   Å  s     r  rI   )rš   Útupler   r   r    r!   rb   rŽ   r4  r‹   r  r
  r  r  r	   r"   rL   rM   rN   )r#   r%   rI  rH  r<  r  Úkwargsr7  r8  r!  r,   rO   r-   rJ  r.   Ú test_dt64arr_add_sub_DateOffsets]  sF    6

øÿzCTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsetsc                 C   sÄ  t dddd�}t ||¡}|tdd� }tdd�| }t dddd� d ¡}t ||¡}t ||¡ t ||¡ |tdd� }t d	d
dd� d ¡}t ||¡}t ||¡ ttddd�tddd�gdd�}t ||¡}|tj	 
¡  }tj	 
¡ | }ttddd�tddd�gdd�}t ||¡}t ||¡ t ||¡ ttddd�tddd�gdd�}t ||¡}|tj	 ¡  }tj	 ¡ | }ttddd�tddd�gdd�}t ||¡}t ||¡ t ||¡ d S )NrÆ   z
2000-01-31Úar†   r6   ©r-  z
2001-01-01z
2001-01-31z
1999-01-01z
1999-01-31z2000-01-15 00:15:00z
US/CentralrQ   z
2000-02-15z2000-01-16 00:15:00z
2000-02-16z2000-01-31 00:15:00r)  )r   r    r!   r
   rå   r"   r   r   rb   r  r  r>  )r#   r%   Úsr+   r  Úexpr-   r-   r.   Útest_dt64arr_add_sub_DateOffsetÌ  s`    

þû

þû

þû

þûzBTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsetr(   ©rI  rO  rn   Ú	box_otherc           
   	      sÒ   |}t dd|d�‰ t ˆ |¡}t tj ¡ tjjdd�g¡‰t	‡ ‡‡fdd„t
tˆ ƒƒD ƒƒ}t ||¡ t¡}|r¢t ˆ|¡‰|tjkr¢ˆtjkr¢tj|td�}t t¡� ˆ|ˆƒ}	W 5 Q R X t |	|¡ d S )Nú
2017-01-01r3   r   rS  c                    s   g | ]}ˆˆ | ˆ| ƒ‘qS r-   r-   ©rz   rI  ©r'   rn   r(   r-   r.   r}     s     zXTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_array.<locals>.<listcomp>rR   )r   r    r!   r   r   rb   r  r>  r  r   r`   r˜   ra   r\   r   Úraddr­   r	   r"   )
r#   r$   r%   rT  rn   r(   r   r)   r,   Úresr-   rW  r.   Ú!test_dt64arr_add_sub_offset_array  s    "zDTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_arrayzop, offset, exp, exp_freqÚ__add__r8   )r.  r5   z
2014-04-11z
2015-04-11z
2016-04-11z
2017-04-11N)r.  z
2014-04-01z
2015-04-01z
2016-04-01z
2017-04-01zAS-APRÚ__sub__z
2013-09-21z
2014-09-21z
2015-09-21z
2016-09-21z
2013-10-01z
2014-10-01z
2015-10-01z
2016-10-01zAS-OCTc                 C   s^   |}t ddd|d�}t ||d¡}t||ƒ}	|	|ƒ}
t||d�}t ||d¡}t |
|¡ d S )Nz01 Jan 2014z01 Jan 2017ZAS)ÚstartÚendr?   r   FrQ   )r   r    r!   r‹   r   r"   )r#   rn   r$  rQ  Zexp_freqr¾   r%   r   r]   Zmthr+   r,   r-   r-   r.   Ú#test_dti_add_sub_nonzero_mth_offset+  s    5
zFTestDatetime64DateOffsetArithmetic.test_dti_add_sub_nonzero_mth_offset)rW   rX   rY   r  r  rL   rZ   r[   r"  r%  r;  rM  rR  r   r   rb   r  r>  r  r
   rŒ   Úaddr   rX  ÚsubrZ  r   r_  r-   r-   r-   r.   r  É  sÚ    ÿ
$8




üþ	

×þ.?:ÿýþ

ü÷ü÷
ü÷ü÷Þþ1r  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestDatetime64OverflowHandlingc                 C   s^   t tdƒgƒ}t tgƒ}t ||¡}t ||¡}ttgƒ}t ||¡}|| }t ||¡ d S )Nz
1969-12-31)r   r   r   r    r!   r   r"   )r#   r%   rq   rr   r,   r+   r-   r-   r.   Útest_dt64_overflow_maskingn  s    

z9TestDatetime64OverflowHandling.test_dt64_overflow_maskingc              	   C   sH  t dƒ}tdƒ}tdddd�}t|ƒ}d}tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X t|jd	< td
dddgdd�}|| }t	 
||¡ || }t	 
||¡ t|jdd …< tddddgdd�}|| }t	 
||¡ || }t	 
|| ¡ d S )Nz
1700-01-31z
20000 Daysz
1949-09-30Z100Yrx   r>   úOverflow in int64 additionrI   r1   z
2004-10-03z
2104-10-04z
2204-10-04r   r  rR   r6   z
91279 Daysrë   )r   r   r   r   rL   rM   ÚOverflowErrorr   r4  r    rl   )r#   ÚdtÚtdr'   rU   rO   r,   rY  r-   r-   r.   Útest_dt64_series_arith_overflow|  s8    

 ÿz>TestDatetime64OverflowHandling.test_dt64_series_arith_overflowc              
   C   sJ  t  dtjg¡}t  dtjg¡}tdƒ d¡}|| ¡ | ¡  d¡| ¡  d¡g}tdƒ d¡}|| ¡ | ¡  d¡| ¡  d¡g}d}|D ]&}t	j
t|d�� ||  W 5 Q R X qŒtjj|j }	|D ]}|| }
|
d	 j|	ksÆt‚qÆtjj|j }	|D ]}|| }
|
d	 j|	ksøt‚qø|D ](}t	j
t|d�� ||  W 5 Q R X �qd S )
Nú2021-12-28 17:19ú
1950-01-01rA   r  zdatetime64[D]ú
1980-01-01rd  rI   r6   )rb   Úto_datetimer   ÚmaxÚminZas_unitró   r™   ra   rL   rM   re  Ú_valuer›   )r#   ÚdtimaxÚdtiminZtsnegZts_neg_variantsZtsposZts_pos_variantsrO   Úvariantr,   rY  r-   r-   r.   Ú)test_datetimeindex_sub_timestamp_overflowœ  s:    üüzHTestDatetime64OverflowHandling.test_datetimeindex_sub_timestamp_overflowc              	   C   sd  t  dtjg¡}t  dtjg¡}t  ddg¡}t  ddg¡}tjj|d j }|| }|d j|ksht‚tjj|d j }|| }|d j|ks”t‚d}tjt	|d�� ||  W 5 Q R X tjt	|d�� ||  W 5 Q R X t  tjg¡}|t
j t
dƒ }	tjt	|d�� |	|  W 5 Q R X t  tjg¡}
|
t
j t
dƒ }tjt	|d�� |
|  W 5 Q R X d S )Nri  rj  rk  r6   rd  rI   Z1us)rb   rl  r   rm  rn  ro  r›   rL   rM   re  r   )r#   rp  rq  Zts_negZts_posr,   r+   rO   ZtminrÚ   ZtmaxrÛ   r-   r-   r.   Ú-test_datetimeindex_sub_datetimeindex_overflowÂ  s.    zLTestDatetime64OverflowHandling.test_datetimeindex_sub_datetimeindex_overflowN)rW   rX   rY   rc  rh  rs  rt  r-   r-   r-   r.   rb  k  s    &rb  c                   @   s  e Zd Zdd„ Zdd„ Zdd„ Zej de	dƒe	d	ƒe
ge	d
ƒe	dƒe	dƒgddgge	dƒe	d	ƒe
geddd�eddd�e
gdddgge	ddd�e	ddd�e
geddd�e
eddd�gdddggg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$S )%ÚTestTimestampSeriesArithmeticc              	   C   s~   t dd�}t dd�}||ƒ}||ƒ}t ||| ¡ t ||| ¡ t ||| ¡ d}tjt|d�� ||  W 5 Q R X d S )NzM8[ns]rR   rÄ   rß   rI   )r   r    r"   rL   rM   rN   )r#   r%   rN  ÚbrO   r-   r-   r.   Útest_empty_series_add_subæ  s    

z7TestTimestampSeriesArithmetic.test_empty_series_add_subc                 C   sž   t tddd�gd ƒ}tj|jd< t tdƒtdƒtdƒgƒ}tj|jd< t tdƒtd	ƒtd
ƒgƒ}||  ||  ||  ||  ||  ||  ||  d S )NrH   r   ©r/  r0  r3   Ú20111230r’   Z20120103Ú20111231Ú20120102Ú20120104)r   r   r   r^   r4  r   )r#   Útd1Údt1Údt2r-   r-   r.   Útest_operators_datetimelikeó  s,    ýÿýÿz9TestTimestampSeriesArithmetic.test_operators_datetimelikec                 C   sV   t tddddddƒƒ}tdddddƒ}t|gƒ}t t || ¡¡}|jd	ksRt‚d S )
NiÉ  r6   é   é   é   r   r°   é   rë   )	r   r   r   rb   Zto_timedeltar   ÚabsrS   r›   )r#   rT   rf  rU   r+   r-   r-   r.   Útest_dt64ser_sub_datetime_dtype  s
    
z=TestTimestampSeriesArithmetic.test_dt64ser_sub_datetime_dtypezleft, right, op_failry  r’   rz  r{  r|  r\  Ú__rsub__rH   r   rx  r[  Ú__radd__rÔ   rQ   c           	   	   C   sX   |}t |ƒ}t |ƒ}t||d ƒ}||krLtjtdd�� ||ƒ W 5 Q R X n||ƒ d S )Nz%operate|[cC]annot|unsupported operandrI   )r   r‹   rL   rM   rN   )	r#   rq   rr   Zop_failZall_arithmetic_operatorsZop_strZarg1Zarg2rn   r-   r-   r.   Ú#test_operators_datetimelike_invalid  s     ÿzATestTimestampSeriesArithmetic.test_operators_datetimelike_invalidc                 C   sl   t tddd�gƒ}t tddd�gƒ}|| }t tdƒgƒ}t ||¡ || }t tdƒgƒ}t ||¡ d S )Nz
2016-02-10zAmerica/Sao_PaulorQ   z
2016-02-08Z2daysz-2days)r   r   r   r    rl   )r#   Ús1Ús2r+   r,   r-   r-   r.   Útest_sub_single_tzM  s    z0TestTimestampSeriesArithmetic.test_sub_single_tzc                 C   sT   t dddd�}t|ƒ}ttdgd ƒƒ}|| }t ||¡ || }t ||¡ d S )Nz
1999-09-30r8   r±   r   Z0days)r   r   r   r    rl   )r#   r'   rU   r,   rY  r-   r-   r.   Útest_dt64tz_series_sub_dtitzX  s    z:TestTimestampSeriesArithmetic.test_dt64tz_series_sub_dtitzc                 C   sh   t tddddtjd�tgƒ}tddddtjd�}t tdƒtgƒ}t || |¡ t |t|ƒ |¡ d S )Nr    é   é   é   )r¢   r„  rh   )	r   r   ÚpytzÚutcr   r   r    rl   r   )r#   rP  rf  rQ  r-   r-   r.   Útest_sub_datetime_compatd  s
    z6TestTimestampSeriesArithmetic.test_sub_datetime_compatc                 C   s    t tdƒtdƒgƒ}|tj d¡ }tj d¡| }t tdƒtdƒgƒ}t ||¡ t ||¡ |tj d¡ tj d¡ }t tdƒtdƒgƒ}t ||¡ d S )Nr  r  rH   z20130101 9:01:00.005z20130101 9:02:00.005z20130101 9:06:00.005z20130101 9:07:00.005)r   r   rb   r  r   r    rl   r  )r#   rP  r+   r  r,   r-   r-   r.   Ú*test_dt64_series_add_mixed_tick_DateOffsetl  s    ÿÿzHTestTimestampSeriesArithmetic.test_dt64_series_add_mixed_tick_DateOffsetc              	   C   sâ   t ttdƒgƒ}t ttgdd�}t tgdd�}t t | |¡ d}tjt|d�� | |  W 5 Q R X t t | |¡ tjt|d�� | |  W 5 Q R X t |t |¡ t t| |¡ t |t |¡ t t| |¡ d S )Nrê   r  rR   z-bad operand type for unary -: 'DatetimeArray'rI   )r   r   r   r    rl   rL   rM   rN   )r#   Údatetime_seriesÚnat_series_dtype_timestampÚsingle_nat_dtype_datetimerO   r-   r-   r.   Útest_datetime64_ops_nat  s:     ÿ ÿ ÿ ÿ ÿz5TestTimestampSeriesArithmetic.test_datetime64_ops_natc           	   	   C   sê  d}t tdd|d�dd�}| ¡ }tj|jd< t tjddd	d
�ƒ}| ¡ }tj|jd< |jj	d ksft
‚||d  }|j d ¡|d  j |¡}t ||¡ ||d  }|j d ¡|d  j |¡}t ||¡ |d | }|j d ¡|d  j |¡}t ||¡ |d | }|j d ¡|d  j |¡}t ||¡ ||d  }|j d ¡|d  j |¡}t ||¡ d}tjt|d�� |d |  W 5 Q R X ||d  }|j d ¡|d  j |¡}t ||¡ tjt|d�� |d |  W 5 Q R X || }|j d ¡| j |¡}t ||¡ || }|j d ¡| j |¡}t ||¡ || }|j d ¡| j |¡}t ||¡ || }|j d ¡| j |¡}t ||¡ d}tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X d S )NrÔ   z2000-01-01 09:00:00rH   r   r0   r†   r3   z1 days 1 minrö   )r   r?   r6   r   r  rI   rÿ   )r   r   rŠ   r   r^   r4  rb   rc   Ú_valuesr?   r›   rf  r·   r    rl   rL   rM   rN   )	r#   r   r~  r  r}  Ztd2r+   rQ  rO   r-   r-   r.   Ú*test_operators_datetimelike_with_timezones£  s`    zHTestTimestampSeriesArithmetic.test_operators_datetimelike_with_timezonesN)rW   rX   rY   rw  r€  r†  rL   rZ   r[   r   r   r   r‰  rŒ  r�  r“  r”  r˜  rš  r-   r-   r-   r.   ru  å  s:   !ýý

ýùõþ
$ru  c                   @   s²   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	j
 dejejg¡dd„ ƒZdd„ Zdd„ Zdd„ Ze	j
 dejejejg¡dd„ ƒZe	j
 dejejg¡dd„ ƒZdS )ÚTestDatetimeIndexArithmeticc                 C   s˜   |}t td|d�gd ƒ}tjddd�}tdd|d�}| d ¡}|| }t ||¡ || }t ||¡ ||j }t ||¡ |j| }t ||¡ d S ©NrU  rQ   r8   ú0 daysr;   r   ©	r   r   rb   rc   r   rå   r    Úassert_index_equalr²   ©r#   r$   r   r'   râ   r,   r+   r-   r-   r.   Útest_dti_add_tdiæ  s    


z,TestDatetimeIndexArithmetic.test_dti_add_tdic                 C   sÞ   |}t td|d�gd ƒ}tjddd�}tdd|d�}| d ¡}t td|d�gd ƒ}||7 }t ||¡ tjddd�}||7 }t ||¡ t td|d�gd ƒ}||j7 }t ||¡ tjddd�}||7 }t ||¡ d S rœ  rž  r   r-   r-   r.   Útest_dti_iadd_tdiü  s"    

z-TestDatetimeIndexArithmetic.test_dti_iadd_tdic              	   C   s¾   |}t td|d�gd ƒ}tjddd�}tdd|dd�}| d ¡}|| }t ||¡ d}tj	t
|d	�� ||  W 5 Q R X ||j }t ||¡ d
}tj	t
|d	�� |j|  W 5 Q R X d S )NrU  rQ   r8   r�  r;   ú-1DrÞ   z cannot subtract .*TimedeltaArrayrI   ú0cannot subtract a datelike from a TimedeltaArray)r   r   rb   rc   r   rå   r    rŸ  rL   rM   rN   r²   )r#   r$   r   r'   râ   r,   r+   rO   r-   r-   r.   Útest_dti_sub_tdi  s    

z,TestDatetimeIndexArithmetic.test_dti_sub_tdic           
   	   C   sZ  |}t td|d�gd ƒ}tjddd�}tdd|dd�}| d ¡}t td|d�gd ƒ}||8 }t ||¡ |j 	¡ }||8 }t 
||j¡ |j 	¡ }tj|||d� t 
||j¡ d	}	tjt|	d
�� ||8 }W 5 Q R X t td|d�gd ƒ}||j8 }t ||¡ tjt|	d
�� | j|8  _W 5 Q R X tjt|	d
�� | j|8  _W 5 Q R X d S )NrU  rQ   r8   r�  r;   r£  rÞ   )Úoutr¤  rI   )r   r   rb   rc   r   rå   r    rŸ  rC   rŠ   Zassert_datetime_array_equalr   ÚsubtractrL   rM   rN   r²   r™  )
r#   r$   r   r'   râ   r,   r+   rD   r¦  rO   r-   r-   r.   Útest_dti_isub_tdi.  s0    



z-TestDatetimeIndexArithmetic.test_dti_isub_tdic                 C   sp   t dd|d�}|j}|| }|| }t ||¡ |}|| }|| }t ||¡ || }|| }t ||¡ d S )Nr   r   r   )r   r   r    rŸ  )r#   r$   r'   rD   r+   r,   râ   r-   r-   r.   Útest_dta_add_sub_indexZ  s    z2TestDatetimeIndexArithmetic.test_dta_add_sub_indexc              	   C   s8  t ddd�}t ddd� d¡}tdddgƒ}|| }t ||¡ || }t ||¡ d}tjt|d�� ||  W 5 Q R X tjt|d�� ||  W 5 Q R X ||8 }t ||¡ t ddd�}t ddd�}d	}tjt|d�� ||  W 5 Q R X t	d
t
jdgƒ}t	ddt
jgƒ}tdt
jt
jgƒ}|| }t ||¡ d S )Nr   r   r;   rÔ   r   rØ   rI   rx   z$cannot add indices of unequal lengthr  z
2012-01-03z
2012-01-02rh   )r   r·   r   r    rŸ  rL   rM   rN   r�   r   r   r^   )r#   r'   rì   r,   r+   rO   Zdti1rô   r-   r-   r.   Útest_sub_dti_dtik  s0    z,TestDatetimeIndexArithmetic.test_sub_dti_dtirn   c                    sª   t tdƒtdƒtdƒtdƒgƒ}||ƒ}ddddd	g‰ ‡ fd
d„}ttdƒgd Ž D ]P\}}}}	}
|||||	|
ƒ}t||||	|
d�}|||ƒ}|||ƒ}t ||¡ qTd S )NZ20130301z20130228 23:00:00z20130228 22:00:00z20130228 21:00:00r=   rG   ÚmrP  Úusc                     s   t  ttt jt| ˆ ƒƒƒ¡S rÅ   )r   Úsumr_   r   rà   Úzip)Úargs©Z	intervalsr-   r.   rà   £  s    z_TestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_ops.<locals>.timedelta64r3   rH   )r5   r#  r/  r0  r1  )r   r   r   r`   r   r    r"   )r#   rn   r%   rU   rE   rà   ÚdrG   r«  rP  r¬  ZnptdZpytdro   rp   r-   r°  r.   Ú.test_timedelta64_equal_timedelta_supported_ops•  s     üÿ 

zJTestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_opsc              	   C   sJ  t ttdƒgƒ}t ttdƒgƒ}t ttgdd�}t ttgdd�}t tgdd�}t tgdd�}t || |¡ t || |¡ t | | |¡ t || |¡ t || |¡ t | | |¡ d}tjt|d�� ||  W 5 Q R X t || |¡ t || |¡ t || |¡ t || |¡ t || |¡ t || |¡ d S )NZ1srê   rë   rR   r  zcannot subtract a datelikerI   )	r   r   r   r   r    rl   rL   rM   rN   )r#   Ztimedelta_seriesr•  Znat_series_dtype_timedeltar–  r—  Zsingle_nat_dtype_timedeltarO   r-   r-   r.   Ú)test_ops_nat_mixed_datetime64_timedelta64¯  sr     ÿ ÿ ÿþþþþþþþþþzETestDatetimeIndexArithmetic.test_ops_nat_mixed_datetime64_timedelta64c                 C   sž  t ddddd�}t dd¡}t ddddd�}|| t ||¡fD ],}t|tƒsRt‚t ||¡ |j	dks@t‚q@t d	dddd�}|| t 
||¡fD ],}t|tƒs¤t‚t ||¡ |j	dks’t‚q’| d ¡}t t dd¡t d
d¡t dd¡g¡}tdddgdd�}|| t ||¡fD ]$}t ||¡ |j	|j	k�st‚�qtd	ddgdd�}|| t 
||¡fD ]4}t|tƒ�sxt‚t ||¡ |j	|j	k�sdt‚�qdd S )Nrf   r   Z2Dr{   )r   r?   r‡   r6   r=   rþ   z
2010-12-31r3   z
2011-01-05z
2011-01-08r†   )r   r   rà   r`  rš   r   r›   r    rŸ  r?   r§  rå   r   )r#   ræ   ÚdeltarQ  r+   r-   r-   r.   Útest_ufunc_coercionsô  s2    
 ÿz0TestDatetimeIndexArithmetic.test_ufunc_coercionsc                 C   sÔ   |}t ddg||d d�}ttdd�gd ||d d	�}t|tdd� ||d d	�}|d |_|j|jksnt‚|| }t ||¡ || }t ||¡ |tdd� }|j| }	t 	|	|¡ ||j }
t 	|
|¡ d S )
Nz2016-06-28 05:30z2016-06-28 05:31r   )r   r‡   rH   )r0  r3   r6   )r�   r‡   )
r   r   r   r‡   rS   r›   r    rl   r²   rŸ  )r#   r$   Únamesr   r�   rU   r,   r+   r  Zresult3Zresult4r-   r-   r.   Útest_dti_add_series	  s&      ÿ


z/TestDatetimeIndexArithmetic.test_dti_add_seriesc           
   	      s¸   |}|}t dd||d d�‰ |tj ¡ tjjdd�g|d d�‰tˆ ˆƒ}t t¡� ˆˆ ˆƒ}W 5 Q R X t	‡ ‡‡fdd	„t
tˆ ƒƒD ƒ|d d
d�}	t |	|¡ t¡}	t ||	¡ d S )NrU  r3   r   )r   r   r‡   rS  r6   r†   c                    s   g | ]}ˆˆ | ˆ| ƒ‘qS r-   r-   rV  rW  r-   r.   r}   ?	  s     zPTestDatetimeIndexArithmetic.test_dti_addsub_offset_arraylike.<locals>.<listcomp>Zinfer)r‡   r?   )r   rb   r  r>  r  r   r    r­   r	   r   r`   r˜   r!   ra   r\   r"   )
r#   r$   r¶  rn   rm   Ú	other_boxr   r*   rY  r,   r-   rW  r.   Ú test_dti_addsub_offset_arraylike.	  s    $
  ÿz<TestDatetimeIndexArithmetic.test_dti_addsub_offset_arrayliker¸  c              	   C   sÜ   |}t dd|d�}t ||¡}|tj ¡ tdd�gƒ}t||ƒ}tddg|d�}	t |	|¡ 	t
¡}	t t¡� || }
W 5 Q R X t |
|	¡ td	d
g|d�}	t |	|¡ 	t
¡}	t t¡� || }
W 5 Q R X t |
|	¡ d S )NrU  r3   r   rx   r4   z
2017-01-31z
2017-01-06rQ   z
2016-12-31z
2016-12-29)r   r    r!   rb   r  r>  r   r   r   ra   r\   r­   r	   r"   )r#   r$   r%   r¸  r   r'   r)   r(   r*   r,   r+   r-   r-   r.   Ú test_dti_addsub_object_arraylikeD	  s    
z<TestDatetimeIndexArithmetic.test_dti_addsub_object_arraylikeN)rW   rX   rY   r¡  r¢  r¥  r¨  r©  rª  rL   rZ   r[   rŒ   r`  ra  r²  r³  rµ  r·  r   rX  r¹  rb   r¬   r   r   rº  r-   r-   r-   r.   r›  â  s   ,*
E#
r›  r-  r1   r6   r.  éþÿÿÿr3   c                    sj   t tdƒtdƒtdƒtdƒtdƒgƒ}t t|jˆd ˆ  ƒƒ}‡ ‡fdd„|D ƒ}t |ƒ}t ||¡ d S )	Nr&  r'  rÆ   r)  r*  r�  c                    s    g | ]}|t jjˆˆ d � ‘qS ))r-  r.  )rb   r  r
   ry   ©r.  r-  r-   r.   r}   l	  s     z%test_shift_months.<locals>.<listcomp>)r   r   r   rÌ   r    rŸ  )r-  r.  r'   ÚactualÚrawr,   r-   r¼  r.   Útest_shift_months^	  s    ûÿ	r¿  c               	   C   sú   t dddd�} | j d¡}t dd„ tdƒD ƒ¡}|j|jksBt‚t 	t
¡� || }W 5 Q R X t 	t
¡�. |d d …df |d d …df   d	d
¡}W 5 Q R X t ||¡ t 	t
¡� || t¡ }W 5 Q R X |jdksÜt‚tdd„ | ¡ D ƒƒsöt‚d S )Nz
1994-02-13Z2Wrx   r>   )rx   r6   c                 S   s   g | ]}t j |¡g‘qS r-   )rb   r  r  rV  r-   r-   r.   r}   w	  s     z7test_dt64arr_addsub_object_dtype_2d.<locals>.<listcomp>r   r1   r6   c                 s   s   | ]}|j d kV  qdS )r   N)ro  )rz   rg  r-   r-   r.   Ú	<genexpr>†	  s     z6test_dt64arr_addsub_object_dtype_2d.<locals>.<genexpr>)r   rC   Zreshaper   r   r`   Úshaper›   r    r­   r	   rK   ra   r\   r¸   Zravel)r'   rD   r(   r+   r,   r  r-   r-   r.   Ú#test_dt64arr_addsub_object_dtype_2dq	  s    2rÂ  c                  C   sr   t dddgdd�} | t dd¡ }t tgd d	d�}t ||¡ | t dd¡ }t tgd dd�}t ||¡ d S )
Nì   ÈCñE|ì   ”|<Ø ì   ({?M5údatetime64[ms]rR   r‰   Úmsr   ztimedelta64[ms]©r   r   r•   r   r    rl   rà   ©rU   r+   r,   r-   r-   r.   Ú(test_non_nano_dt64_addsub_np_nat_scalars‰	  s    rÊ  c                  C   sn   t dddgdd�} | t d¡ }t tgd dd�}t ||¡ | t d¡ }t tgd d	d�}t ||¡ d S )
NrÃ  rÄ  rÅ  rÆ  rR   r‰   r   rë   r  rÈ  rÉ  r-   r-   r.   Ú1test_non_nano_dt64_addsub_np_nat_scalars_unitless•	  s    rË  c                  C   sr   t dddgdd�} | t dd¡ }t tgd d	d�}t ||¡ | t dd¡ }t tgd dd�}t ||¡ d S )
Ni,0  iËZ  iÛ�  zdatetime64[s]rR   r‰   r=   r   ztimedelta64[s]rÈ  rÉ  r-   r-   r.   Ú9test_non_nano_dt64_addsub_np_nat_scalars_unsupported_unit¢	  s    rÌ  )6r   r   r   Ú	itertoolsr   r   rŒ   r
  Únumpyr   rL   r‘  Zpandas._libs.tslibs.conversionr   Zpandas._libs.tslibs.offsetsr   Zpandas.errorsr	   Zpandasrb   r
   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr    Zpandas.core.opsr   Zpandas.tests.arithmetic.commonr   r   r   r   r   rd   r–   rÎ   r  rb  ru  r›  rZ   r[   r¿  rÂ  rÊ  rË  rÌ  r-   r-   r-   r.   Ú<module>   sT   ,p k      )   %z ~  ~