a
    j=ic&                     @   s   d dl mZ d dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZmZ G dd dZG dd	 d	ZG d
d dZdS )    )	timedeltaN)NpyDatetimeUnit)	Timedelta)DatetimeArrayTimedeltaArrayc                   @   s   e Zd Zejg dddd Zejdd Zejdd Zd	d
 Zej	
dejdd Zdd Zdd Zej	
ded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d$d% Zd&d' Zd(d) Zd*S )+TestNonNano)smsus)paramsc                 C   s   |j S N)param)selfrequest r   t/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/arrays/test_timedeltas.pyunit   s    zTestNonNano.unitc                 C   s<   |dkrt jjS |dkr t jjS |dkr0t jjS t|d S )Nr   r	   r
   )r   ZNPY_FR_svalueZ	NPY_FR_msZ	NPY_FR_usNotImplementedError)r   r   r   r   r   reso   s    zTestNonNano.resoc                 C   s.   t jdt jdd| d}tj||jdS )N   dtypem8[])nparangeint64viewr   _simple_newr   )r   r   arrr   r   r   tda!   s    zTestNonNano.tdac                 C   sT   t jdt jdd| d}tj||jd}|j|jks>J |d j|ksPJ d S )Nr   r   r   r   r   )r   r   r   r   r   r   r   _reso)r   r   r   r    r!   r   r   r   test_non_nano&   s    zTestNonNano.test_non_nanofieldc                 C   s@   |j d}tj||jd}t||}t||}t|| d S Nm8[ns]r   )_ndarrayastyper   r   r   getattrtmassert_numpy_array_equal)r   r!   r$   as_nanotda_nanoresultexpectedr   r   r   test_fields-   s
    

zTestNonNano.test_fieldsc                 C   s<   |j d}tj||jd}| }| }t|| d S r%   )r'   r(   r   r   r   to_pytimedeltar*   r+   )r   r!   r,   r-   r.   r/   r   r   r   test_to_pytimedelta6   s
    zTestNonNano.test_to_pytimedeltac                 C   s<   |j d}tj||jd}| }| }t|| d S r%   )r'   r(   r   r   r   total_secondsr*   r+   )r   r   r!   r,   r-   r.   r/   r   r   r   test_total_seconds>   s
    zTestNonNano.test_total_secondsnatNaTnsr
   c                 C   sp   || }t |tsJ |j|jks&J |  s6J || }t |tsLJ |j|jks\J |  slJ d S r   )
isinstancer   r"   isnaall)r   r5   r!   r.   r   r   r    test_add_nat_datetimelike_scalarF   s    z,TestNonNano.test_add_nat_datetimelike_scalarc                 C   st   |t j }t|tsJ |j|jks(J |  s8J t j| }t|tsPJ |j|jks`J |  spJ d S r   )pdr6   r8   r   r"   r9   r:   )r   r!   r.   r   r   r   test_add_pdnatT   s    

zTestNonNano.test_add_pdnatc                 C   s   t jd|d}d}tjt|d ||  W d    n1 s>0    Y  tjt|d ||  W d    n1 st0    Y  ||j}|j|j }t	j
||jdd|j}|| }t|| || }t|| d S )Nz
2016-01-01)tzzwith mis-matched resolutionsmatchr   UTC)r<   	Timestamppytestraisesr   Z_as_unitZ_unitr'   Zasm8r   r   r   Ztz_localizeZ
tz_convertr>   r*   assert_extension_array_equal)r   r!   Ztz_naive_fixturetsmsgZ
exp_valuesr/   r.   r   r   r   test_add_datetimelike_scalara   s$    &&z(TestNonNano.test_add_datetimelike_scalarc                 C   sB   d}|| }t j|j| |jd}t|| |j|jks>J d S N   r   r   r   r'   r   r*   rE   r"   r   r!   otherr.   r/   r   r   r   test_mul_scalar{   s
    zTestNonNano.test_mul_scalarc                 C   sL   t t|}|| }tj|j| |jd}t|| |j	|j	ksHJ d S Nr   
r   r   lenr   r   r'   r   r*   rE   r"   rL   r   r   r   test_mul_listlike   s
    zTestNonNano.test_mul_listlikec                 C   sR   t t|}||t }tj|j| |jd}t	
|| |j|jksNJ d S rO   )r   r   rQ   r(   objectr   r   r'   r   r*   rE   r"   rL   r   r   r   test_mul_listlike_object   s
    z$TestNonNano.test_mul_listlike_objectc                 C   sB   d}|| }t j|j| |jd}t|| |j|jks>J d S rI   rK   rL   r   r   r   test_div_numeric_scalar   s
    z#TestNonNano.test_div_numeric_scalarc                 C   s4   t dd}|| }|jtdd }t|| d S )N   secondsr   )r   r'   r   Ztimedelta64r*   r+   rL   r   r   r   test_div_td_scalar   s    
zTestNonNano.test_div_td_scalarc                 C   sL   t t|}|| }tj|j| |jd}t|| |j	|j	ksHJ d S rO   rP   rL   r   r   r   test_div_numeric_array   s
    z"TestNonNano.test_div_numeric_arrayc                 C   s2   |j |j d  }|| }|j | }t|| d S )N)r'   r*   r+   rL   r   r   r   test_div_td_array   s    
zTestNonNano.test_div_td_arrayN)__name__
__module____qualname__rC   Zfixturer   r   r!   r#   markparametrizer   Z
_field_opsr0   r2   r4   r   
datetime64r;   r=   rH   rN   rR   rT   rU   rY   rZ   r\   r   r   r   r   r      s0   





r   c                   @   s   e Zd Zejdeejej	ddgdd Z
dd Zejded	d
ed	d
 ed	d
 gdd Zejdd	e	d	dededdejdddd d d edd d d deddg	ejdddgdd ZdS ) TestTimedeltaArrayr   Zuint32uint64c                 C   s   t tdtdg}t|jdkr2td}n
td}||}d }||krVt}d}tj	||d ||}W d    n1 s0    Y  |j|ksJ t
|| d S )N1HZ2Hurd   r   z( will return exactly the specified dtyper?   )r   Z_from_sequencer   r   r   kindr(   FutureWarningr*   Zassert_produces_warningr+   )r   r   r    Zexpected_dtyper/   warnrG   r.   r   r   r   test_astype_int   s    

(z"TestTimedeltaArray.test_astype_intc                 C   s2   t tjdddd}td|d< |jd u s.J d S )Nre   rJ   HZperiodsfreqr   )r   r<   timedelta_ranger   rm   )r   ar   r   r   test_setitem_clears_freq   s    z+TestTimedeltaArray.test_setitem_clears_freqobjrV   rW   c                 C   s@   t jdddd}t||jd}||d< |d tddks<J d S )	N2 Days   rk   rl   rm   r   rV   rW   )r<   rn   r   rm   r   )r   rq   tdir    r   r   r   test_setitem_objects   s    
z'TestTimedeltaArray.test_setitem_objectsrM   g      ?r6   z
2021-01-01invalid
   i8r         ʚ;zdatetime64[ns]DindexTFc                 C   s~   t jdddd d d }t|dd}|r4t|}d	d
dg}tjt|d |	| W d    n1 sp0    Y  d S )Nrx   ry   r   rz   r{   r|   r}   rt   |z0searchsorted requires compatible dtype or scalarz<value should be a 'Timedelta', 'NaT', or array of those. Gotr?   )
r   r   r   r<   IndexjoinrC   rD   	TypeErrorZsearchsorted)r   rM   r~   datar    rG   r   r   r   test_searchsorted_invalid_types   s    
z2TestTimedeltaArray.test_searchsorted_invalid_typesN)r]   r^   r_   rC   r`   ra   intr   int32r   rj   rp   r   Zto_timedelta64r1   rv   rb   r<   rB   r   r   Z	to_periodr   r   r   r   r   rc      s4   

rc   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestUnaryOpsc                 C   sb   t jg ddd}t|}t jg ddd}t|}t|}t|| t |}t|| d S )Nl  qar6       @B1r&   r   )     qar6   r   )r   arrayr   absr*   assert_timedelta_array_equalr   valsr    Zevalsr/   r.   result2r   r   r   test_abs   s    
zTestUnaryOps.test_absc                 C   sf   t jg ddd}t|}|
 }t|| t||r<J t |}t|| t||rbJ d S )Nr   r&   r   )r   r   r   r*   r   Zshares_memoryZpositive)r   r   r    r.   r   r   r   r   test_pos  s    
zTestUnaryOps.test_posc                 C   s`   t jg ddd}t|}t jg ddd}t|}| }t|| t |}t|| d S )Nr   r&   r   )r   r6   l @B1)r   r   r   r*   r   negativer   r   r   r   test_neg  s    
zTestUnaryOps.test_negc                 C   s^   t jdddd}t||jd}t|j |j d}| }t|| t|}t|| d S )Nrr   rs   rk   rl   rt   )	r<   rn   r   rm   _datar*   r   r   r   )r   ru   r    r/   r.   r   r   r   r   test_neg_freq  s    
zTestUnaryOps.test_neg_freqN)r]   r^   r_   r   r   r   r   r   r   r   r   r      s   r   )datetimer   numpyr   rC   Zpandas._libs.tslibs.dtypesr   Zpandasr<   r   Zpandas._testingZ_testingr*   Zpandas.core.arraysr   r   r   rc   r   r   r   r   r   <module>   s    I