U
    ÎZj4V ã                   @   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
j2 3ddd dg¡e
j2 3ddd d g¡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   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/   új/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/arithmetic/test_datetime64.pyÚtest_compare_zerodim:   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/   r0   Ú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:   ©rA   r   r   )r   Ú_datar"   r#   r   )r%   r*   r&   r'   r   ÚdtaÚobjr/   r/   r0   Ú"test_dt64arr_cmp_arraylike_invalidc   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 )NrB   Úhé   rD   r   r8   r5   r   r6   FTzDInvalid comparison between|Cannot compare type|not supported between©Úmatch)
r   rE   r    r!   r   r"   Úassert_numpy_array_equalÚpytestÚraisesÚ	TypeError)r%   r&   r   rF   r*   r-   r.   Úmsgr/   r/   r0   Ú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ÚserrG   r,   r.   r-   r/   r/   r0   Útest_dt64arr_nat_comparison“   s    z>TestDatetime64ArrayLikeComparisons.test_dt64arr_nat_comparison)Ú__name__Ú
__module__Ú__qualname__r1   rN   ÚmarkÚparametrizeÚobjectr   r   Údater    Únanr<   ÚlistÚrangeZarangeÚastypeZfloat32ÚpdÚtimedelta_ranger!   Zperiod_rangerH   rR   rX   r/   r/   r/   r0   r   5   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©rA   z2011-03ÚreverseTFrU   Nzop, expectedc                 C   sL   |}|\}}	|r|	| }}	t ||d�}
||	|d�}||
|ƒ}t ||¡ d S )NrT   )r   r"   Úassert_series_equal)r%   rU   Úindex_or_seriesrm   rg   Úopr.   r(   ÚlÚrÚleftÚrightr-   r/   r/   r0   Ú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 )NrT   TFÚbool)	r   r"   r#   r   r   rd   r!   r^   r$   )r%   rU   rv   r'   r(   rs   r,   r.   r/   r/   r0   Útest_nat_comparisons_scalarÜ   s8    



z:TestDatetime64SeriesComparison.test_nat_comparisons_scalarÚvaliÐ  r8   é   rJ   c                    s>   t tddd�ƒ}|ˆ k}t ‡ fdd„|D ƒƒ}t ||¡ d S )Nr9   r:   r=   c                    s   g | ]}|ˆ k‘qS r/   r/   ©Ú.0Úx©ry   r/   r0   Ú
<listcomp>  s     zQTestDatetime64SeriesComparison.test_series_comparison_scalars.<locals>.<listcomp>)r   r   r"   rn   )r%   ry   Zseriesr-   r.   r/   r~   r0   Ú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"   rn   r   )	r%   rs   rt   rW   Zs_natZleft_fZright_fr.   r-   r/   r/   r0   Ú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rbt	nd }t 
|¡� ||d k}W 5 Q R X t dddg|¡}t ||¡ t 
|¡� ||d k}W 5 Q R X t dddg|¡}t ||¡ ||k}t dddg|¡}t ||¡ t 
|¡� ||d k}W 5 Q R X t dddg|¡}t ||¡ t 
|¡� ||d k}W 5 Q R X t dddg|¡}t ||¡ d S )Nz2000-01-29 01:59:00z
2000-01-30TFr   r5   )r   r   r   r"   r#   r   r$   rd   Ú	DataFrameÚFutureWarningÚassert_produces_warning)r%   r'   rW   r,   r-   r.   Úwarnr/   r/   r0   Útest_dt64arr_timestamp_equality4  s4    z>TestDatetime64SeriesComparison.test_dt64arr_timestamp_equalityÚdatetimeliker   iÝ  z2013-01-01T00:00rC   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"   rn   )r%   r•   rp   r.   rW   r-   r/   r/   r0   Ú!test_dt64_compare_datetime_scalar\  s    üù	
z@TestDatetime64SeriesComparison.test_dt64_compare_datetime_scalar)rY   rZ   r[   rN   r\   r]   r   r   r   r   r^   rŽ   r…   r   r†   r�   r‚   r„   rƒ   ru   rx   r   r€   r�   r”   r    Ú
datetime64r˜   r/   r/   r/   r0   rf   ¥   sv   þþþ÷þúþýþ$ 
 
ÿ
 (

ýþüþ	rf   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ƒsTt	‚t  
||¡ d S )Néd   r5   )r"   ZmakeDateIndexÚlenr   Úto_datetime64r    r!   Ú
isinstanceZndarrayÚAssertionErrorrM   )r%   Úcomparison_opÚindexÚelementZarrZ
arr_resultZindex_resultr/   r/   r0   Útest_comparators�  s    



z-TestDatetimeIndexComparisons.test_comparatorsr*   éà  r8   ú
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¥   r5   r   TF)	r   rž   r    r™   r   Útzinfor!   r"   rM   )r%   r*   r&   r   r)   r-   r.   r/   r/   r0   Útest_dti_cmp_datetimelike�  s*    z6TestDatetimeIndexComparisons.test_dti_cmp_datetimelikerU   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 )Nrh   ri   TF)r   r   r   r"   r#   r   r^   rc   r    r!   r$   )
r%   rU   r'   rs   rt   r,   ÚlhsÚrhsr-   r.   r/   r/   r0   Ú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Þ  r8   )rd   ÚIndexr    r`   r   r   r!   r™   r"   r’   rM   r   )r%   Zfidx1Zfidx2Zdidx1Zdidx2ÚdarrZcasesZidx1Zidx2r-   r.   ry   r/   r/   r0   Ú+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   )rc   r^   ÚvaluesÚtolist©r}   r/   r/   r0   Ú<lambda>A  ó    zQTestDatetimeIndexComparisons.test_comparison_tzawareness_compat.<locals>.<lambda>z^Invalid comparison between dtype=datetime64\[ns.*\] and (Timestamp|DatetimeArray|list|ndarray)rK   rT   )r   Útz_localizer"   r#   rd   r�   ra   rŽ   r…   r†   rN   rO   rP   r    r!   r^   ÚallrŸ   )	r%   r    r'   rp   r(   ÚdrÚdzr¸   rQ   r/   r/   r0   Ú"test_comparison_tzawareness_compat5  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/AmsterdamrS   zAInvalid comparison between dtype=datetime64\[ns.*\] and TimestamprK   )r   r¼   r"   r#   r   r    r½   rŸ   rŽ   r…   r†   rN   rO   rP   )	r%   r    r'   rp   r¾   r¿   rV   Zts_tzrQ   r/   r/   r0   Ú*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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¥   r5   r   TrT   z:Invalid comparison between dtype=datetime64\[ns, .*\] and rK   )r   r"   r#   r   rŽ   r…   r†   r    r!   rw   r$   ÚtyperY   rN   rO   rP   )r%   r    r*   Útz_aware_fixturer'   rp   r   r)   r+   r,   Zexboolr.   r-   rQ   r/   r/   r0   Ú"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"   rM   r¼   )r%   r    rp   r)   r.   r-   r/   r/   r0   Ú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 )Nr9   r:   r   TFé	   )r   r    r!   r"   rM   )r%   r&   r   r;   r*   r-   r.   r/   r/   r0   Útest_dti_cmp_str¹  s*    z-TestDatetimeIndexComparisons.test_dti_cmp_strc                 C   s0   t ddd�}|t|ƒk}||k}t ||¡ d S )Nr9   r:   r=   )r   ra   r"   rM   )r%   r;   r-   r.   r/   r/   r0   Útest_dti_cmp_listØ  s    z.TestDatetimeIndexComparisons.test_dti_cmp_listZ1Dr:   r=   úm8[ns]c                 C   s
   t | ƒjS ©N)rÂ   rY   r¹   r/   r/   r0   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-01r:   ú
Asia/Tokyor   FTzInvalid comparison betweenrK   )r   r    r!   r"   rM   rN   rO   rP   )r%   r*   r)   r-   r.   rQ   r/   r/   r0   Útest_dti_cmp_tdi_tzawarenessß  s     z9TestDatetimeIndexComparisons.test_dti_cmp_tdi_tzawarenessc              	   C   sØ   t dddd�}| d¡}||k}t dgd ¡}t ||¡ | d ¡}||k}t ||¡ t t|d d… ƒtdd	�gd  ¡}||k}t dgd d
gd  ¡}t ||¡ d}t	j
t|d�� ||k W 5 Q R X d S )NrË   r:   rÌ   r   ÚOTrJ   r8   r6   FzB>=' not supported between instances of 'Timestamp' and 'Timedelta'rK   )r   rc   r    r!   r"   rM   r¼   ra   r   rN   rO   rP   )r%   r)   r*   r-   r.   rQ   r/   r/   r0   Útest_dti_cmp_object_dtypeÿ  s    

&z6TestDatetimeIndexComparisons.test_dti_cmp_object_dtype)rY   rZ   r[   r£   rN   r\   r]   r   r   r    r™   r§   r^   rª   r´   rÀ   rÁ   ÚfilterwarningsrÄ   rÅ   rÇ   rÈ   rd   re   Z	to_seriesÚasi8ÚviewrÍ   rÏ   r/   r/   r/   r0   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-01rS   z2000-01-01 02:00z2000-02-01 02:00©r   r"   r#   r$   ©r%   r&   Z	two_hoursr'   r   r;   r.   r-   r/   r/   r0   Ú%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Ô   rS   z1999-12-31 22:00z2000-01-31 22:00rÕ   rÖ   r/   r/   r0   Ú%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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 objectsrK   )
r   r¼   r"   r#   r   r   r$   rN   rO   rP   ©r%   r'   Út1Út2Ztnaiver-   r.   rQ   r/   r/   r0   Ú.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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Ý   rK   )	r   r¼   r"   r#   r   r$   rN   rO   rP   rÞ   r/   r/   r0   Ú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 5 Q R X d S )	Nz
1994-04-01rÆ   ZQS©r   r   rA   r   rS   úcannot subtractrK   )
r   r    Útimedelta64r   r"   r#   r$   rN   rO   rP   )
r%   r'   r&   r   r)   r*   r.   rG   r-   rQ   r/   r/   r0   Ú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 unaryrK   )	r   r   r·   r"   r#   r$   rN   rO   rP   )r%   r&   r'   r   r)   ÚtdiZtdarrr.   r+   r-   rQ   r/   r/   r0   Ú test_dt64arr_add_sub_td64ndarray”  s$    z9TestDatetime64Arithmetic.test_dt64arr_add_sub_td64ndarrayrV   ú
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'   rV   Úidxr.   r-   r/   r/   r0   Ú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-17r5   r?   rÙ   ©r   rA   r   r   r8   )r   rê   r"   r#   r   r    rå   r$   )r%   r'   rW   rV   Zdelta_seriesr.   r/   r/   r0   Ú"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]rT   rÌ   )r   r   r   r"   r#   r   r$   r¼   )r%   r'   r)   rW   r-   r.   Údti_tzZser_tzr/   r/   r0   Útest_dt64arr_sub_NaTØ  s    
z-TestDatetime64Arithmetic.test_dt64arr_sub_NaTc              	   C   sb   t dd|d�}|| }t ||¡}t ||¡}t t¡� || t¡ }W 5 Q R X t ||¡ d S ©Nr¥   r   r   )r   r"   r#   r’   r	   rc   r^   r$   )r%   r'   r&   r)   r.   rG   r-   r/   r/   r0   Ú!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/   r0   Ú"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 datetimerK   )r   r·   r"   r#   rN   rO   rP   )r%   rÃ   r'   r   r)   rõ   r+   rQ   r/   r/   r0   Ú)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   rh   r?   )
r   r¼   r"   r#   r   r·   Úto_pydatetimer�   r    r™   )r%   r&   r'   r   r)   Údti2r+   r/   r/   r0   Útest_dt64arr_add_dtlike_raises  s    


z7TestDatetime64Arithmetic.test_dt64arr_add_dtlike_raisesrA   ÚHÚWrk   ZMSÚQÚBNrU   Zuint8c           
      C   s   |}|t jkrd S |d kr,tddg|d�}ntdd||d�}||ƒ}tjddg|d	�}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 jjj |¡|	ƒ t|t|ƒ|	ƒ d S )Nr   z2017-04-05 06:07:08rS   r¥   r5   rí   rz   r3   rT   ú|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'r8   r   )rd   r�   r   r   r    r!   Újoinr   Zint64ZCategoricalr²   ÚcoreZindexesÚapiZNumericIndexr   )
r%   rU   r'   rA   r&   r   r)   rG   r*   rQ   r/   r/   r0   Útest_dt64arr_addsub_intlike2  s4    
úÿ
z4TestDatetime64Arithmetic.test_dt64arr_addsub_intliker*   g…ëQ¸	@r­   r¬   rh   rl   r8   r5   r   Údti_freqc                 C   s@   t ddg|d�}t ||¡}d ddddd	g¡}t|||ƒ d S )
Nrh   ú
2011-01-02rl   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+   rQ   r/   r/   r0   Útest_dt64arr_add_sub_invalidZ  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 )	Nrh   r  rl   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parrrQ   r/   r/   r0   Ú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 5 Q R X d S )Nú
2012-01-01r   r   c                 S   s   g | ]}t |||ƒ‘qS r/   )r   )r|   Úir/   r/   r0   r   �  s     zTTestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raises.<locals>.<listcomp>rÿ   r	  z*cannot subtract DatetimeArray from ndarrayT©ÚrecordÚignore)rQ   )
r   rb   r"   r#   r   ÚwarningsÚcatch_warningsÚsimplefilterr	   r   )r%   r'   r&   r   Zobj1Úobj2rQ   r/   r/   r0   Ú'test_dt64arr_addsub_time_objects_raises‰  s    þÿz@TestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raisesÚdt64_seriesrï   údatetime64[ns]rT   Ú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 typerK   )r"   r#   rN   rO   rP   )r%   r  r  r'   rG   rQ   r/   r/   r0   Ú!test_dt64_mul_div_numeric_invalid¦  s    
z:TestDatetime64Arithmetic.test_dt64_mul_div_numeric_invalid)#rY   rZ   r[   rN   r\   Zarm_slowr×   rØ   rá   râ   ræ   rè   r]   r   rø   r�   r    r™   rì   rî   rò   rô   rö   r÷   rú   r  r!   r   r   r  r  r  r   r   r  r/   r/   r/   r0   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:05rJ   )r   r   r"   r#   rd   ÚoffsetsÚSecondr$   )r%   r'   rW   r.   r-   Úresult2r/   r/   r0   Ú'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:55rJ   ú((bad|unsupported) operand type for unaryrK   )r   r   r"   r#   rd   r  r  r$   rN   rO   rP   )r%   r'   rW   r.   r-   r  rQ   r/   r/   r0   Ú'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  rJ   )r   r   r"   r#   r�   rd   r  )r%   r#  r'   rW   Ú
offset_clsr/   r/   r0   Ú*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   rJ   r   z2010-11-01 00:00rû   rã   z2010-11-01 05:00z2010-11-01 06:00z2010-11-01 07:00)rA   r   rI   )Úhoursrÿ   zbad operand type for unary -zcannot subtract DatetimeArrayrK   )r   rd   r  r%  rŸ   r   r"   r#   r    rå   r   r$   r   rN   rO   rP   )
r%   rÃ   r'   r   r‡   Úoffsetr.   ZscalarZ	roundtriprQ   r/   r/   r0   Ú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   )Úyearsr5   )ÚmonthsrJ   )r7   r   )r*  rJ   )Úminutesr:   )Úsecondsr5   )ÚmicrosecondsrJ   c                    s   g | ]}|ˆ  ‘qS r/   r/   r{   ©Úoffr/   r0   r   <  s     zaTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsets.<locals>.<listcomp>c                    s   g | ]}|ˆ  ‘qS r/   r/   r{   r9  r/   r0   r   @  s     r8   c                    s   g | ]}|ˆ  ‘qS r/   r/   r{   r9  r/   r0   r   F  s     c                    s   g | ]}|ˆ  ‘qS r/   r/   r{   r9  r/   r0   r   J  s     r!  rK   )r   r   r"   r#   rd   r�   ÚilocÚ	enumerater
   r$   ÚdictrN   rO   rP   )
r%   r'   ÚvecÚ	vec_itemsZrelative_kwargsr  ÚunitÚvaluer.   rQ   r/   r9  r0   Ú*test_dt64arr_add_sub_relativedelta_offsets  sN    øÿù	zMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsetsÚcls_and_kwargsZ	YearBeginÚmonthrJ   ZYearEndZ
MonthBeginÚMonthEndZSemiMonthEndZSemiMonthBeginZWeekÚweekdayr   rµ   ZBusinessDayZBDayZ
QuarterEndZQuarterBeginZCustomBusinessDayZCDayZ
CBMonthEndZCBMonthBeginZBMonthBeginZ	BMonthEndZBusinessHourZ
BYearBeginZBYearEndZBQuarterBeginÚLastWeekOfMonthr5   ÚFY5253Quarterr8   Znearest)Zqtr_with_extra_weekÚstartingMonthrF  Ú	variationÚFY5253r   )rF  rI  rJ  ÚWeekOfMonth)rF  ÚweekZEasterr
   Údayrz   Ú	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   )rL  rG  rH  rK  r-  r.  rË   r/  r0  r1  r2  r3  Tr  r  rO  c                    s   g | ]}|ˆ  ‘qS r/   r/   r{   ©r+  r/   r0   r   ¶  s     zWTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsets.<locals>.<listcomp>c                    s   g | ]}|ˆ  ‘qS r/   r/   r{   rQ  r/   r0   r   º  s     c                    s   g | ]}ˆ | ‘qS r/   r/   r{   rQ  r/   r0   r   ¾  s     r!  rK   )rž   Útupler   r   r"   r#   rd   r�   r;  r�   r  r  r  r  r	   r$   rN   rO   rP   )r%   r'   rP  rO  rC  r#  Úkwargsr>  r?  r(  r.   rQ   r/   rQ  r0   Ú 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ˆ   r8   ©r4  z
2001-01-01z
2001-01-31z
1999-01-01z
1999-01-31z2000-01-15 00:15:00z
US/CentralrS   z
2000-02-15z2000-01-16 00:15:00z
2000-02-16z2000-01-31 00:15:00r0  )r   r"   r#   r
   rê   r$   r   r   rd   r  r$  rE  )r%   r'   Úsr-   r  Úexpr/   r/   r0   Útest_dt64arr_add_sub_DateOffsetÅ  s`    

þû

þû

þû

þûzBTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsetr*   ©rP  rV  rp   Ú	box_otherc           
   	      sª   |}t dd|d�‰ t ˆ |¡}t tj ¡ tjjdd�g¡‰t	‡ ‡‡fdd„t
tˆ ƒƒD ƒƒ}t ||¡}|rzt ˆ|¡‰t t¡� ˆ|ˆƒ}	W 5 Q R X t |	|¡ d S )Nú
2017-01-01r5   r   rZ  c                    s   g | ]}ˆˆ | ˆ| ƒ‘qS r/   r/   ©r|   rP  ©r)   rp   r*   r/   r0   r     s     zXTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_array.<locals>.<listcomp>)r   r"   r#   r    r!   rd   r  rE  r$  r   rb   rœ   r’   r	   r$   )
r%   r&   r'   r[  rp   r*   r   r+   r.   Úresr/   r^  r0   Ú!test_dt64arr_add_sub_offset_arrayÿ  s    "zDTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_arrayzop, offset, exp, exp_freqÚ__add__r:   )r5  r7   z
2014-04-11z
2015-04-11z
2016-04-11z
2017-04-11N)r5  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ÚendrA   r   FrS   )r   r"   r#   r�   r   r$   )r%   rp   r+  rX  Zexp_freqrÃ   r'   r   r_   Zmthr-   r.   r/   r/   r0   Ú#test_dti_add_sub_nonzero_mth_offset!  s    5
zFTestDatetime64DateOffsetArithmetic.test_dti_add_sub_nonzero_mth_offset)rY   rZ   r[   r   r"  rN   r\   r]   r)  r,  rB  rT  rY  r    r!   rd   r  rE  r$  r
   rŽ   Úaddr   ÚraddÚsubr`  r   re  r/   r/   r/   r0   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'   rs   rt   r.   r-   r/   r/   r0   Útest_dt64_overflow_maskingd  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100Yrz   r@   úOverflow in int64 additionrK   r3   z
2004-10-03z
2104-10-04z
2204-10-04r   r  rT   r8   z
91279 Daysrð   )r   r   r   r   rN   rO   ÚOverflowErrorr   r;  r"   rn   )r%   ÚdtÚtdr)   rW   rQ   r.   r_  r/   r/   r0   Útest_dt64_series_arith_overflowr  s8    

 ÿz>TestDatetime64OverflowHandling.test_dt64_series_arith_overflowc              
   C   s>  t  dtjg¡}t  dtjg¡}tdƒ}|| ¡ | ¡  d¡| ¡  d¡g}tdƒ}|| ¡ | ¡  d¡| ¡  d¡g}d}|D ]&}tj	t
|d�� ||  W 5 Q R X 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-01r  zdatetime64[D]ú
1980-01-01rk  rK   r8   )rd   Úto_datetimer   ÚmaxÚminrø   r�   rc   rN   rO   rl  rA  rŸ   )r%   ÚdtimaxÚdtiminZtsnegZts_neg_variantsZtsposZts_pos_variantsrQ   Úvariantr.   r_  r/   r/   r0   Ú)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 )Nrp  rq  rr  r8   rk  rK   Z1us)rd   rs  r   rt  ru  rA  rŸ   rN   rO   rl  r   )r%   rv  rw  Zts_negZts_posr.   r-   rQ   Ztminrß   Ztmaxrà   r/   r/   r0   Ú-test_datetimeindex_sub_datetimeindex_overflow¸  s.    zLTestDatetime64OverflowHandling.test_datetimeindex_sub_datetimeindex_overflowN)rY   rZ   r[   rj  ro  ry  rz  r/   r/   r/   r0   ri  a  s    &ri  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]rT   rÉ   rä   rK   )r   r"   r$   rN   rO   rP   )r%   r'   rU  ÚbrQ   r/   r/   r0   Ú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 )NrJ   r   ©r6  r7  r5   Ú20111230r–   Z20120103Ú20111231Ú20120102Ú20120104)r   r   r    r`   r;  r   )r%   Útd1Údt1Údt2r/   r/   r0   Ú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É  r8   é   é   é   r   rµ   é   rð   )	r   r   r   rd   Zto_timedeltar    ÚabsrU   rŸ   )r%   rV   rm  rW   r-   r/   r/   r0   Útest_dt64ser_sub_datetime_dtype  s
    
z=TestTimestampSeriesArithmetic.test_dt64ser_sub_datetime_dtypezleft, right, op_failr  r–   r€  r�  r‚  rb  Ú__rsub__rJ   r   r~  ra  Ú__radd__rÙ   rS   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 operandrK   )r   r�   rN   rO   rP   )	r%   rs   rt   Zop_failZall_arithmetic_operatorsZop_strZarg1Zarg2rp   r/   r/   r0   Ú#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_PaulorS   z
2016-02-08Z2daysz-2days)r   r   r   r"   rn   )r%   Ús1Ús2r-   r.   r/   r/   r0   Ú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"   rn   )r%   r)   rW   r.   r_  r/   r/   r0   Ú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Š  rj   )	r   r   ÚpytzÚutcr   r   r"   rn   r   )r%   rW  rm  rX  r/   r/   r0   Ú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  rJ   z20130101 9:01:00.005z20130101 9:02:00.005z20130101 9:06:00.005z20130101 9:07:00.005)r   r   rd   r  r'  r"   rn   r&  )r%   rW  r-   r  r.   r/   r/   r0   Ú*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 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  rT   z-bad operand type for unary -: 'DatetimeArray'rK   )r   r   r   r"   rn   rN   rO   rP   )r%   Údatetime_seriesÚnat_series_dtype_timestampÚsingle_nat_dtype_datetimerQ   r/   r/   r0   Útest_datetime64_ops_natv  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:00rJ   r   r2   rˆ   r5   z1 days 1 minrû   )r   rA   r8   r   r!  rK   r  )r   r   rŒ   r    r`   r;  rd   re   Ú_valuesrA   rŸ   rm  r¼   r"   rn   rN   rO   rP   )	r%   r   r„  r…  rƒ  Ztd2r-   rX  rQ   r/   r/   r0   Ú*test_operators_datetimelike_with_timezonesš  s`    zHTestTimestampSeriesArithmetic.test_operators_datetimelike_with_timezonesN)rY   rZ   r[   r}  r†  rŒ  rN   r\   r]   r   r   r   r�  r’  r“  r™  rš  rž  r   r/   r/   r/   r0   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 ©Nr\  rS   r:   ú0 daysr=   r   ©	r   r   rd   re   r   rê   r"   Úassert_index_equalr·   ©r%   r&   r   r)   rç   r.   r-   r/   r/   r0   Ú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/   r0   Ú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 )Nr\  rS   r:   r£  r=   ú-1Drã   z cannot subtract .*TimedeltaArrayrK   ú0cannot subtract a datelike from a TimedeltaArray)r   r   rd   re   r   rê   r"   r¥  rN   rO   rP   r·   )r%   r&   r   r)   rç   r.   r-   rQ   r/   r/   r0   Ú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 )Nr\  rS   r:   r£  r=   r©  rã   )Úoutrª  rK   )r   r   rd   re   r   rê   r"   r¥  rE   rŒ   Zassert_datetime_array_equalr    ÚsubtractrN   rO   rP   r·   rŸ  )
r%   r&   r   r)   rç   r.   r-   rF   r¬  rQ   r/   r/   r0   Ú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)   rF   r-   r.   rç   r/   r/   r0   Útest_dta_add_sub_indexQ  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Ý   rK   rz   z$cannot add indices of unequal lengthr  z
2012-01-03z
2012-01-02rj   )r   r¼   r   r"   r¥  rN   rO   rP   Ú
ValueErrorr   r    r`   )r%   r)   rñ   r.   r-   rQ   Zdti1rù   r/   r/   r0   Útest_sub_dti_dtib  s0    z,TestDatetimeIndexArithmetic.test_sub_dti_dtirp   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?   rI   ÚmrW  Úusc                     s   t  ttt jt| ˆ ƒƒƒ¡S rÊ   )r    Úsumra   r   rå   Úzip)Úargs©Z	intervalsr/   r0   rå   š  s    z_TestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_ops.<locals>.timedelta64r5   rJ   )r7   r*  r6  r7  r8  )r   r   r   rb   r   r"   r$   )r%   rp   r'   rW   rG   rå   ÚdrI   r²  rW  r³  ZnptdZpytdr¨   r©   r/   r·  r0   Ú.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ð   rT   r  zcannot subtract a datelikerK   )	r   r   r   r   r"   rn   rN   rO   rP   )r%   Ztimedelta_seriesr›  Znat_series_dtype_timedeltarœ  r�  Zsingle_nat_dtype_timedeltarQ   r/   r/   r0   Ú)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 )Nrh   r   Z2Dr}   )r   rA   r‰   r8   r?   r  z
2010-12-31r5   z
2011-01-05z
2011-01-08rˆ   )r   r    rå   rf  rž   r   rŸ   r"   r¥  rA   r­  rê   r!   )r%   rë   ÚdeltarX  r-   r/   r/   r0   Ú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‰   rJ   )r7  r5   r8   )r¡   r‰   )
r   r   r   r‰   rU   rŸ   r"   rn   r·   r¥  )r%   r&   Únamesr   r¡   rW   r.   r-   r  Zresult3Zresult4r/   r/   r0   Ú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 ||	¡ d S )Nr\  r5   r   )r   r   r‰   rZ  r8   rˆ   c                    s   g | ]}ˆˆ | ˆ| ƒ‘qS r/   r/   r]  r^  r/   r0   r   6	  s     zPTestDatetimeIndexArithmetic.test_dti_addsub_offset_arraylike.<locals>.<listcomp>Zinfer)r‰   rA   )r   rd   r  rE  r$  r   r"   r’   r	   r   rb   rœ   r#   r$   )
r%   r&   r½  rp   ro   Ú	other_boxr   r,   r_  r.   r/   r^  r0   Ú test_dti_addsub_offset_arraylike%	  s    $
  ÿz<TestDatetimeIndexArithmetic.test_dti_addsub_offset_arrayliker¿  c              	   C   sÐ   |}t dd|d�}t ||¡}|tj ¡ tdd�gƒ}t||ƒ}tddg|d�}	t |	|¡}	t 	t
¡� || }
W 5 Q R X t |
|	¡ td	d
g|d�}	t |	|¡}	t 	t
¡� || }
W 5 Q R X t |
|	¡ d S )Nr\  r5   r   rz   r6   z
2017-01-31z
2017-01-06rS   z
2016-12-31z
2016-12-29)r   r"   r#   rd   r  rE  r   r   r   r’   r	   r$   )r%   r&   r'   r¿  r   r)   r+   r*   r,   r.   r-   r/   r/   r0   Ú test_dti_addsub_object_arraylike;	  s    
z<TestDatetimeIndexArithmetic.test_dti_addsub_object_arraylikeN)rY   rZ   r[   r§  r¨  r«  r®  r¯  r±  rN   r\   r]   rŽ   rf  rh  r¹  rº  r¼  r¾  r   rg  rÀ  rd   r²   r    r!   rÁ  r/   r/   r/   r0   r¡  Ù  s   ,*
E#
r¡  r4  r3   r8   r5  éþÿÿÿr5   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Ë   r0  r1  r–  c                    s    g | ]}|t jjˆˆ d � ‘qS ))r4  r5  )rd   r  r
   r{   ©r5  r4  r/   r0   r   c	  s     z%test_shift_months.<locals>.<listcomp>)r   r   r   rÑ   r"   r¥  )r4  r5  r)   ÚactualÚrawr.   r/   rÃ  r0   Útest_shift_monthsU	  s    ûÿ	rÆ  c               	   C   s4  t dddd�} | j d¡}t dd„ tdƒD ƒ¡}|j|jksBt‚t 	t
¡� || }W 5 Q R X t 	t
¡�. |d d …df |d d …df   d	d
¡}W 5 Q R X t|tƒs¬t‚|jd ksºt‚t |j|j¡ t 	t
¡� || t¡ }W 5 Q R X t|tƒsüt‚|jdk�st‚|jd k�st‚|jdk ¡ �s0t‚d S )Nz
1994-02-13Z2Wrz   r@   )rz   r8   c                 S   s   g | ]}t j |¡g‘qS r/   )rd   r  r$  r]  r/   r/   r0   r   n	  s     z7test_dt64arr_addsub_object_dtype_2d.<locals>.<listcomp>r   r3   r8   )r   rE   Zreshaper    r!   rb   ÚshaperŸ   r"   r’   r	   rž   r   rA   rM   rc   r^   r   rÑ   r½   )r)   rF   r*   r-   r.   r  r/   r/   r0   Ú#test_dt64arr_addsub_object_dtype_2dh	  s"    2rÈ  )6r   r   r   Ú	itertoolsr   r   rŽ   r  Únumpyr    rN   r—  Zpandas._libs.tslibs.conversionr   Zpandas._libs.tslibs.offsetsr   Zpandas.errorsr	   Zpandasrd   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   rf   rš   rÓ   r  ri  r{  r¡  r\   r]   rÆ  rÈ  r/   r/   r/   r0   Ú<module>   sR   ,p Z      *   #z     ~