o
    թZh)                     @   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)param)selfrequest r   Z/var/www/html/lang_env/lib/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_pytimedeltar0   r1   )r   r   r2   r3   r4   r5   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_secondsr0   r1   )r   r   r   r2   r3   r4   r5   r   r   r   test_total_seconds:   r9   zTestNonNano.test_total_secondsc                 C   s4   t d }tt dg d }||ksJ d S )Nz2 minr   )r   r:   r&   array)r   r5   r4   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   timedelta64dtr:   )r   
start_timeend_timer5   r4   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   rF   r   r4   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&   rG   rI   r   rJ   rK   rL   )r   r   r4   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)tzrH   r?   r   UTC)r&   	Timestampr%   r0   assert_extension_array_equalr   r-   Zasm8r   r   r   Ztz_localizeZ
tz_convertrO   )r   r   Ztz_naive_fixturetsr5   resZ
exp_valuesr4   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   r0   rR   rJ   r   r   otherr4   r5   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   r0   rR   rJ   rY   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 r]   )r   r   r_   r.   objectr   r   r-   r   r0   rR   rJ   rY   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 rV   rX   rY   r   r   r   test_div_numeric_scalar   r\   z#TestNonNano.test_div_numeric_scalarc                 C   s4   t dd}|| }|jtdd }t|| d S )Nr?   secondsr   )r   r-   r   rA   r0   r1   rY   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 r]   r^   rY   r   r   r   test_div_numeric_array   ra   z"TestNonNano.test_div_numeric_arrayc                 C   s2   |j |j d  }|| }|j | }t|| d S )N)r-   r0   r1   rY   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,   rW   r   )r.   r0   rR   )r   r   r3   r5   rT   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_opsr6   r8   r;   r=   rE   r   
datetime64rM   rN   rU   r[   r`   rc   rd   rg   rh   rj   rk   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   r0   r1   )r   r   r   r4   r5   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 )Nrs   rW   hZperiodsfreqr   )r&   timedelta_range_datar   rz   )r   ar   r   r   test_setitem_clears_freq   s   z+TestTimedeltaArray.test_setitem_clears_freqobjr?   re   c                 C   s8   t jdddd}|j}||d< |d tddksJ d S )N2 Days   rx   ry   r   r?   re   )r&   r{   r|   r   )r   r   r(   r   r   r   r   test_setitem_objects   s   
z'TestTimedeltaArray.test_setitem_objectsrZ   g      ?rG   z
2021-01-01invalid
   rt   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   rt   r   r   r   r   r!   )rz   |z0searchsorted requires compatible dtype or scalarz<value should be a 'Timedelta', 'NaT', or array of those. Gotr   )r   r   r&   ZTimedeltaIndexr|   r'   joinr"   r#   rv   Zsearchsorted)r   rZ   r   datar   msgr   r   r   test_searchsorted_invalid_types   s   
"z2TestTimedeltaArray.test_searchsorted_invalid_typesN)rl   rm   rn   r"   ro   rp   intr   Zint32r   rw   r~   r   Zto_timedelta64r7   r   rq   r&   rQ   r   r   Z	to_periodr   r   r   r   r   rr      s6    

rr   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rG       @B1r,   r   )     qarG   r   )r   r<   r   ru   absr0   assert_timedelta_array_equalr   valsr   Zevalsr5   r4   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   ru   r0   r   Zshares_memoryZpositive)r   r   r   r4   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   rG   l @B1)r   r<   r   ru   r0   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 )Nr   r   rx   ry   )r&   r{   r|   r0   r   r   r   )r   r(   r   r5   r4   r   r   r   r   test_neg_freq/  s   
zTestUnaryOps.test_neg_freqN)rl   rm   rn   r   r   r   r   r   r   r   r   r     s
    r   )datetimer   numpyr   r"   Zpandasr&   r   Zpandas._testingZ_testingr0   Zpandas.core.arraysr   r   r   rr   r   r   r   r   r   <module>   s     6D