o
    ŀg0                     @   s   d dl mZmZ d dlZd dl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 d dlmZ d dlmZ G dd dZd	d
 Zejdddgdd ZdS )    )time	timedeltaN)IS64)OutOfBoundsTimedelta)SeriesTimedeltaIndexisnato_timedelta)TimedeltaArrayc                
   @   s8  e Zd Zdd Zejdddgdd Zdd	 Zd
d Z	dd Z
dd Zejdddgddgddgddgddggdd Zdd Zejdedddeedddgejd g d!ejd"d#d$ Zd%d& Zejdd'dgd'gd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zejd2g d3d4d5 Zd6d7 Zd8d9 Zd:d; Zejd<ejej ej!gd=d> Z"ejd<ejej ej!gd?d@ Z#ejj$e% dAdBdCdD Z&dEdF Z'dGdH Z(ejdIe)ddJdgdKdKggdLdM Z*ejdNg dOejdPej+e,gdQdR Z-dSdT Z.dUdV Z/dWdX Z0dKS )YTestTimedeltasc                 C   s   d}t tjg}tjt|d t| W d    n1 sw   Y  tjt|d | t W d    d S 1 s=w   Y  d S )Nz?dtype datetime64\[ns\] cannot be converted to timedelta64\[ns\]match)	r   pdNaTpytestraises	TypeErrorr	   to_frameapply)selfmsgser r   X/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/tools/test_to_timedelta.pytest_to_timedelta_dt64_raises   s   
"z,TestTimedeltas.test_to_timedelta_dt64_raisesreadonlyTFc                 C   s>   t jg td}|r|jdd t|}tg }t|| d S )NdtypeF)write)nparrayobjectsetflagsr	   tmassert_index_equal)r   r   arrresultexpectedr   r   r   test_to_timedelta_readonly#   s   z)TestTimedeltas.test_to_timedelta_readonlyc                 C   s    t ddg}t| sJ d S )N )r	   r   all)r   r&   r   r   r   test_to_timedelta_null-   s   z%TestTimedeltas.test_to_timedelta_nullc                 C   sB   t ttddg}tttddg}t|| d S )N   s)r	   r   r    timedelta64r   Indexr#   r$   r   r&   r'   r   r   r   %test_to_timedelta_same_np_timedelta641   s   z4TestTimedeltas.test_to_timedelta_same_np_timedelta64c                 C   s:   t tddtdddg}tt ddg}t|| d S )Nr,   days)r3   seconds1dz1days 00:00:01r   r   r	   r#   assert_series_equalr   r'   r&   r   r   r   test_to_timedelta_series7   s   z'TestTimedeltas.test_to_timedelta_seriesc                 C   sB   t tddtdddg}tddgdd}t|| d S )Nr   ns
   r-   m8[ns]unit)r   r   r.   astyper	   r#   r$   r0   r   r   r   test_to_timedelta_units=   s
   z&TestTimedeltas.test_to_timedelta_unitszdtype, unitint64r-   mhztimedelta64[s]ztimedelta64[D]Dc                 C   sZ   t jdgd |d}t||d}|dkrdnd}tt d|gd |d}t|| d S )Nr,      r   r=   rA   r<   m8[s])r   r    r	   r   r.   r#   r$   )r   r   r>   r%   r&   	exp_dtyper'   r   r   r   test_to_timedelta_units_dtypesE   s
   z-TestTimedeltas.test_to_timedelta_units_dtypesc                 C   s   t jtjjd gdd}d}tjt|d t| W d    n1 s$w   Y  tjt|d t	| W d    n1 s?w   Y  tjt|d t
j|dd W d    d S 1 s^w   Y  d S )Nr,   ztimedelta64[m]r   zPCannot convert -9223372036854775807 minutes to timedelta64\[s\] without overflowr   rF   )r   r    r   r   _valuer   r   r   r	   r   r
   _from_sequence)r   r%   r   r   r   r   test_to_timedelta_oob_non_nanoW   s   

"z-TestTimedeltas.test_to_timedelta_oob_non_nanoargr;      rE   errors)ignoreraisecoercez2ignore:errors='ignore' is deprecated:FutureWarningc                 C   s@   t jtdd t||d W d    d S 1 sw   Y  d S )Nz	1-d arrayr   rN   )r   r   r   r	   )r   rL   rN   r   r   r   test_to_timedelta_dataframeg   s   "z*TestTimedeltas.test_to_timedelta_dataframec                 C   sF   d}t jt|d tdgdd W d    d S 1 sw   Y  d S )Nzerrors must be one ofr   fooneverrR   r   r   
ValueErrorr	   r   r   r   r   r    test_to_timedelta_invalid_errorsq   s   "z/TestTimedeltas.test_to_timedelta_invalid_errorsr,   c                 C   sD   d}t jt|d t|dd W d    d S 1 sw   Y  d S )Nzinvalid unit abbreviation: foor   rT   r=   rV   )r   rL   r   r   r   r   test_to_timedelta_invalid_unitw   s   "z-TestTimedeltas.test_to_timedelta_invalid_unitc                 C   s`   d}t jt|d ttdd W d    n1 sw   Y  ttddddtju s.J d S )NzIValue must be Timedelta, string, integer, float, timedelta or convertibler   r,   )secondrQ   rR   )r   r   rW   r	   r   r   r   rX   r   r   r   test_to_timedelta_time~   s    z%TestTimedeltas.test_to_timedelta_timec                 C   sD   d}t jt|d tddg W d    d S 1 sw   Y  d S )Nz*Could not convert 'foo' to NumPy timedeltar   rT   barrV   rX   r   r   r   test_to_timedelta_bad_value   s   "z*TestTimedeltas.test_to_timedelta_bad_valuec                 C   sL   t ttjtjgtddgdd t tdtjdgtg ddd d S )NrT   r]   rQ   rR   1 day1 min)r_   r]   r`   )r#   r$   r   r   r   r	   )r   r   r   r   "test_to_timedelta_bad_value_coerce   s   z1TestTimedeltas.test_to_timedelta_bad_value_coercec                 C   sT  d}d}t jt|d t|dd}W d    n1 sw   Y  ||ks'J ddg}tj|td}t jt|d t|dd}W d    n1 sJw   Y  t || t	ddg}t jt|d t|dd}W d    n1 stw   Y  t 
|| tddg}t jt|d t|dd}W d    n1 sw   Y  t || d S )Nerrors='ignore' is deprecatedappler   rO   rR   z1 daysr   )r#   assert_produces_warningFutureWarningr	   r   r    r!   assert_numpy_array_equalr   r/   r$   r   r7   )r   r   invalid_datar&   r'   r   r   r   'test_to_timedelta_invalid_errors_ignore   s,   z6TestTimedeltas.test_to_timedelta_invalid_errors_ignorezval, errors)
)1MT)z1 MT)1YT)z1 YT)1yT)z1 yT)1mF)z1 mF)r_   F)2dayFc                 C   sP   d}|r"t jt|d t| W d    d S 1 sw   Y  d S t| d S )Nz=Units 'M', 'Y' and 'y' do not represent unambiguous timedeltar   rV   )r   valrN   r   r   r   r   !test_unambiguous_timedelta_values   s   
"z0TestTimedeltas.test_unambiguous_timedelta_valuesc                 C   sL   t tddg}t dgt}t|| t tdg}t|| d S )Nr,   r-   00:00:01)r   r   r.   r   r	   r#   r7   r8   r   r   r   test_to_timedelta_via_apply   s
   z*TestTimedeltas.test_to_timedelta_via_applyc                 C   sb   dt jg}td  t|}W d    n1 sw   Y  tt jddt jg}t|| d S )Nrp   r,   )r4   )r   r   r#   rd   r	   r   	Timedeltar$   )r   valsr&   r'   r   r   r   +test_to_timedelta_inference_without_warning   s   

z:TestTimedeltas.test_to_timedelta_inference_without_warningc                 C   sr   t d}ttdt jg}tt dd|gtj dd}t|| tdtj	gdd}t|}t|| d S )Nr   rp    ʚ;r:   r<   r   )
r   r.   r	   r   nanr#   ENDIANr7   r   r   )r   timedelta_NaTactualr'   r   r   r   r   #test_to_timedelta_on_missing_values   s   

z2TestTimedeltas.test_to_timedelta_on_missing_valuesrn   c                 C   s&   t |}|jtddksJ d S )Nr   rA   r	   rI   r   r.   r?   r   rn   ry   r   r   r   *test_to_timedelta_on_missing_values_scalar   s   z9TestTimedeltas.test_to_timedelta_on_missing_values_scalarc                 C   s,   t |g}|d jtddksJ d S )Nr   r   rA   r{   r|   r   r   r   (test_to_timedelta_on_missing_values_list   s   
"z7TestTimedeltas.test_to_timedelta_on_missing_values_listzFloating point error)reasonc                 C   sF   t ddddd  }t|dd}t jddd	d
d}t|j| d S )Nr   r,   gư>ir-   r=   i;ru   i  rA   r   )r   aranger	   r#   rf   asi8)r   r%   r&   expected_asi8r   r   r   test_to_timedelta_float   s   z&TestTimedeltas.test_to_timedelta_floatc                 C   sD   t jg dtd}t|ddd}tddtjgdd}t|| d S )	Nr,   rM   errorr   r:   rQ   r>   rN   r,   rM   r=   )r   r    r!   r	   r   r   r#   r$   )r   r%   r&   r'   r   r   r   %test_to_timedelta_coerce_strings_unit   s   z4TestTimedeltas.test_to_timedelta_coerce_strings_unitc                 C   sb   t jg dtd}d}tjt|d t|ddd}W d    n1 s$w   Y  t|| d S )Nr   r   rb   r   r:   rO   r   )r   r    r!   r#   rd   re   r	   rf   )r   r%   r   r&   r   r   r   %test_to_timedelta_ignore_strings_unit  s   z4TestTimedeltas.test_to_timedelta_ignore_strings_unitzexpected_val, result_valr2   Nc                 C   s:   t tdd|g}tt d|gdddd}t|| d S )Nr,   r2   Int64r   r3   r=   r6   )r   expected_val
result_valr'   r&   r   r   r   &test_to_timedelta_nullable_int64_dtype  s   z5TestTimedeltas.test_to_timedelta_nullable_int64_dtype)inputr'   ))z8:53:08.71800000001z8:53:08.718)8:53:08.718001r   )8:53:08.7180000001r   )z-8:53:08.71800000001z-8:53:08.718)z8:53:08.7180000089z8:53:08.718000008funcc                 C   s"   t |}||}||ksJ d S )N)r   rr   )r   r   r'   r   r&   r   r   r   &test_to_timedelta_precision_over_nanos  s   
z5TestTimedeltas.test_to_timedelta_precision_over_nanosc                 C   s   |  }t|}d}tjt|d t| W d    n1 s!w   Y  |d}t|}t|t	j
s7J |j|dksAJ d S )NzYValue must be Timedelta, string, integer, float, timedelta or convertible, not datetime64r   r<   i8)to_datetime64r   r    r   r   rW   r	   view
isinstancer   rr   rI   )r   fixed_now_tsdt64rL   r   arg2r&   r   r   r   test_to_timedelta_zerodim'  s   


z(TestTimedeltas.test_to_timedelta_zerodimc                 C   sB   t dtjg|d}t|}t tjdddtjg}t|| d S )Nr,   r   r:   r=   )r   r   NAr	   rr   r   r#   r7   )r   any_numeric_ea_dtyper   r&   r'   r   r   r   test_to_timedelta_numeric_ea8  s   z+TestTimedeltas.test_to_timedelta_numeric_eac                 C   s&   t ddd}td}||ksJ d S )NgUUUUUU?rC   r=   z0 days 00:19:59.999999998)r	   r   rr   r0   r   r   r   test_to_timedelta_fraction?  s   
z)TestTimedeltas.test_to_timedelta_fraction)1__name__
__module____qualname__r   r   markparametrizer(   r+   r1   r9   r@   rH   rK   r   r   reshaper   	DataFramefilterwarningsrS   rY   rZ   r\   r^   ra   rh   ro   rq   rt   rz   rv   r   r   r}   r~   xfailr   r   r   r   r   r   rr   r	   r   r   r   r   r   r   r   r   r      sz    
	

*

	
	





r   c                 C   sL   t d tddg|   dd}t|}tddgdd}t|| d S )Npyarrowr,   rM   z	[pyarrow]r   ztimedelta64[ns])r   importorskipr   lowerr	   r#   r7   )r   r   r&   r'   r   r   r   test_from_numeric_arrow_dtypeE  s
   
r   r>   r:   msc                 C   s<   t d ttdgd|  dd}t|}t|| d S )Nr   r,   z	duration[z
][pyarrow]r   )r   r   r   r   r	   r#   r7   )r>   r'   r&   r   r   r   test_from_timedelta_arrow_dtypeN  s   
r   )datetimer   r   numpyr   r   pandas.compatr   pandas.errorsr   pandasr   r   r   r   r	   pandas._testing_testingr#   pandas.core.arraysr
   r   r   r   r   r   r   r   r   r   <module>   s      0	