o
    Eh)                     @   sz   d dl m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mZ G dd dZG dd dZG d	d
 d
ZdS )    )	timedeltaN)	Timedelta)DatetimeArrayTimedeltaArrayc                   @   s   e Zd Zejg dddd Zejdd Zdd Zd	d
 Zej	
dejdd Zdd Z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.d/ Zd0S )1TestNonNano)smsus)paramsc                 C   s   |j S N)Zparam)selfZrequest r   Clib/python3.10/site-packages/pandas/tests/arrays/test_timedeltas.pyunit   s   zTestNonNano.unitc                 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s(J d S )Nr   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   test_non_nano   s   zTestNonNano.test_non_nanoc                 C   s   t jtdd |d W d    n1 sw   Y  t|}t jtdd |d W d    d S 1 s9w   Y  d S )NzSupported unitsmatchD)pytestraises
ValueErroras_unitpdIndex)r   r   tdir   r   r   test_as_unit_raises    s   
"zTestNonNano.test_as_unit_raises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   r0   r1   r2   r3   r   r   r   test_to_pytimedelta2   
   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   r0   r1   r2   r3   r   r   r   test_total_seconds:   r7   zTestNonNano.test_total_secondsc                 C   s4   t d }tt dg d }||ksJ d S )Nz2 minr   )r   r8   r$   array)r   r3   r2   r   r   r   "test_timedelta_array_total_secondsB   s   z.TestNonNano.test_timedelta_array_total_secondsc                 C   sZ   t dgd}t dgd}|| jtdd }|| j j}||ks+J d S )Nz2145-11-02 06:00:00datetime64[ns]z2145-11-02 07:06:00   r   )r$   ZSeriesr,   valuesr   timedelta64Zdtr8   )r   Z
start_timeZend_timer3   r2   r   r   r   test_total_seconds_nanosecondsI   s
   z*TestNonNano.test_total_seconds_nanosecondsnatNaTnsr	   c                 C   sp   || }t |tsJ |j|jksJ |  sJ || }t |ts&J |j|jks.J |  s6J d S r   )
isinstancer   _cresoisnaall)r   rA   r   r2   r   r   r    test_add_nat_datetimelike_scalarQ   s   z,TestNonNano.test_add_nat_datetimelike_scalarc                 C   st   |t j }t|tsJ |j|jksJ |  sJ t j| }t|ts(J |j|jks0J |  s8J d S r   )r$   rB   rD   r   rE   rF   rG   )r   r   r2   r   r   r   test_add_pdnat_   s   

zTestNonNano.test_add_pdnatc                 C   s   t jd|dd}|d| }|| }t|| || }t|| |td7 }|j|j }tj	||j
dd|j}|| }t|| || }t|| d S )Nz
2016-01-01)tzrC   r=   r   ZUTC)r$   	Timestampr#   r.   assert_extension_array_equalr   r+   Zasm8r   r   r   Ztz_localizeZ
tz_convertrJ   )r   r   Ztz_naive_fixturetsr3   resZ
exp_valuesr2   r   r   r   test_add_datetimelike_scalarl   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.   rL   rE   r   r   otherr2   r3   r   r   r   test_mul_scalar   
   zTestNonNano.test_mul_scalarc                 C   sL   t t|}|| }tj|j| |jd}t|| |j	|j	ks$J d S Nr   
r   r   lenr   r   r+   r   r.   rL   rE   rS   r   r   r   test_mul_listlike   
   zTestNonNano.test_mul_listlikec                 C   sR   t t|}||t }tj|j| |jd}t	
|| |j|jks'J d S rW   )r   r   rY   r,   objectr   r   r+   r   r.   rL   rE   rS   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 rP   rR   rS   r   r   r   test_div_numeric_scalar   rV   z#TestNonNano.test_div_numeric_scalarc                 C   s4   t dd}|| }|jtdd }t|| d S )Nr=   Zsecondsr   )r   r+   r   r?   r.   r/   rS   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s$J d S rW   rX   rS   r   r   r   test_div_numeric_array   r[   z"TestNonNano.test_div_numeric_arrayc                 C   s2   |j |j d  }|| }|j | }t|| d S )N)r+   r.   r/   rS   r   r   r   test_div_td_array   s   
zTestNonNano.test_div_td_arrayc                 C   sn   | d}|d }|| }t|| || }t|| |d }|| }t|| || }t|| d S )Nr*   rQ   r   )r,   r.   rL   )r   r   r1   r3   rN   r   r   r   test_add_timedeltaarraylike   s   
z'TestNonNano.test_add_timedeltaarraylikeN)__name__
__module____qualname__r    Zfixturer   r   r   r'   markparametrizer   Z
_field_opsr4   r6   r9   r;   r@   r   
datetime64rH   rI   rO   rU   rZ   r]   r^   r`   ra   rc   rd   r   r   r   r   r      s6    

	

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uint32Zuint64c                 C   s   t jtdtdgdd}t|tjkr4tjtdd |	| W d    d S 1 s-w   Y  d S |	|}|j
d}t|| d S )N1hZ2hr*   r   zDo obj.astype\('int64'\)r   i8)r   _from_sequencer   r   r   r   r    r!   	TypeErrorr,   r+   r   r.   r/   )r   r   r   r2   r3   r   r   r   test_astype_int   s   

z"TestTimedeltaArray.test_astype_intc                 C   s0   t jddddj}td|d< |jd u sJ d S )Nrl   rQ   hZperiodsfreqr   )r$   timedelta_range_datar   rs   )r   ar   r   r   test_setitem_clears_freq   s   z+TestTimedeltaArray.test_setitem_clears_freqobjr=   r_   c                 C   s8   t jdddd}|j}||d< |d tddksJ d S )N2 Days   rq   rr   r   r=   r_   )r$   rt   ru   r   )r   rx   r&   r   r   r   r   test_setitem_objects   s   
z'TestTimedeltaArray.test_setitem_objectsrT   g      ?rB   z
2021-01-01Zinvalid
   rm   r         ʚ;r<   r   indexTFc                 C   s   t jdddd d d }tj|ddj}|rt|}d	d
dg}tjt	|d |
| W d    d S 1 s;w   Y  d S )Nr|   rm   r   r}   r~   r   r   )rs   |z0searchsorted requires compatible dtype or scalarz<value should be a 'Timedelta', 'NaT', or array of those. Gotr   )r   r   r$   ZTimedeltaIndexru   r%   joinr    r!   ro   Zsearchsorted)r   rT   r   datar   msgr   r   r   test_searchsorted_invalid_types   s   
"z2TestTimedeltaArray.test_searchsorted_invalid_typesN)re   rf   rg   r    rh   ri   intr   Zint32r   rp   rw   r   Zto_timedelta64r5   r{   rj   r$   rK   r   r   Z	to_periodr   r   r   r   r   rk      s6    

rk   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestUnaryOpsc                 C   sf   t jg ddd}t|}t jg ddd}t|}t|}t|| t |}t|| d S )Nl  qarB       @B1r*   r   )     qarB   r   )r   r:   r   rn   absr.   assert_timedelta_array_equalr   valsr   Zevalsr3   r2   result2r   r   r   test_abs	  s   


zTestUnaryOps.test_absc                 C   sh   t jg ddd}t|}|
 }t|| t||rJ t |}t|| t||r2J d S )Nr   r*   r   )r   r:   r   rn   r.   r   Zshares_memoryZpositive)r   r   r   r2   r   r   r   r   test_pos  s   

zTestUnaryOps.test_posc                 C   sd   t jg ddd}t|}t jg ddd}t|}| }t|| t |}t|| d S )Nr   r*   r   )r   rB   l @B1)r   r:   r   rn   r.   r   negativer   r   r   r   test_neg"  s   


zTestUnaryOps.test_negc                 C   sJ   t jdddd}|j}|j }| }t|| t|}t|| d S )Nry   rz   rq   rr   )r$   rt   ru   r.   r   r   r   )r   r&   r   r3   r2   r   r   r   r   test_neg_freq/  s   
zTestUnaryOps.test_neg_freqN)re   rf   rg   r   r   r   r   r   r   r   r   r     s
    r   )Zdatetimer   Znumpyr   r    Zpandasr$   r   Zpandas._testingZ_testingr.   Zpandas.core.arraysr   r   r   rk   r   r   r   r   r   <module>   s     6D