a
    Pf0                     @   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<0    Y  tjt|d | t W d    n1 sx0    Y  d S )Nz?dtype datetime64\[ns\] cannot be converted to timedelta64\[ns\]match)	r   pdNaTpytestraises	TypeErrorr	   Zto_frameapply)selfmsgser r   ]/var/www/ai-form-bot/venv/lib/python3.9/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objectZ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)r1   secondsZ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"   r.   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:   r>   r9   m8[s])r   r   r	   r   r,   r!   r"   )r   r   r;   r#   r$   Z	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 sH0    Y  tjt|d t	| W d    n1 s~0    Y  tjt|d t
j|dd W d    n1 s0    Y  d S )Nr*   ztimedelta64[m]r   zPCannot convert -9223372036854775807 minutes to timedelta64\[s\] without overflowr   rC   )r   r   r   r   _valuer   r   r   r	   r   r
   Z_from_sequence)r   r#   r   r   r   r   test_to_timedelta_oob_non_nanoW   s    &&z-TestTimedeltas.test_to_timedelta_oob_non_nanoargr8      rB   errors)ignoreraisecoercez2ignore:errors='ignore' is deprecated:FutureWarningc                 C   s>   t jtdd t||d W d    n1 s00    Y  d S )Nz	1-d arrayr   rI   )r   r   r   r	   )r   rG   rI   r   r   r   test_to_timedelta_dataframeg   s    z*TestTimedeltas.test_to_timedelta_dataframec                 C   sD   d}t jt|d tdgdd W d    n1 s60    Y  d S )Nzerrors must be one ofr   fooneverrM   r   r   
ValueErrorr	   r   r   r   r   r    test_to_timedelta_invalid_errorsq   s    z/TestTimedeltas.test_to_timedelta_invalid_errorsr*   c                 C   sB   d}t jt|d t|dd W d    n1 s40    Y  d S )Nzinvalid unit abbreviation: foor   rO   r:   rQ   )r   rG   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 s60    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*   )secondrL   rM   )r   r   rR   r	   r   r   r   rS   r   r   r   test_to_timedelta_time~   s
    ,z%TestTimedeltas.test_to_timedelta_timec                 C   sB   d}t jt|d tddg W d    n1 s40    Y  d S )Nz*Could not convert 'foo' to NumPy timedeltar   rO   barrQ   rS   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 )NrO   rX   rL   rM   1 day1 min)rZ   rX   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   sV  d}d}t jt|d t|dd}W d    n1 s80    Y  ||ksNJ ddg}tj|td}t jt|d t|dd}W d    n1 s0    Y  t || t	ddg}t jt|d t|dd}W d    n1 s0    Y  t 
|| tddg}t jt|d t|dd}W d    n1 s<0    Y  t || d S )Nerrors='ignore' is deprecatedappler   rJ   rM   z1 daysr   )r!   assert_produces_warningFutureWarningr	   r   r   r    assert_numpy_array_equalr   r-   r"   r   r4   )r   r   Zinvalid_datar$   r%   r   r   r   'test_to_timedelta_invalid_errors_ignore   s$    ***,z6TestTimedeltas.test_to_timedelta_invalid_errors_ignorezval, errors)
)Z1MT)z1 MT)Z1YT)z1 YT)Z1yT)z1 yT)Z1mF)z1 mF)rZ   F)Z2dayFc                 C   sL   d}|r@t jt|d t| W d    qH1 s40    Y  nt| d S )Nz=Units 'M', 'Y' and 'y' do not represent unambiguous timedeltar   rQ   )r   valrI   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!   r4   r5   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 s20    Y  tt jddt jg}t|| d S )Nre   r*   )r2   )r   r   r!   r_   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   re    ʚ;r7   r9   r   )
r   r,   r	   r   nanr!   ZENDIANr4   r   r   )r   Ztimedelta_NaTactualr%   r   r   r   r   #test_to_timedelta_on_missing_values   s    

z2TestTimedeltas.test_to_timedelta_on_missing_valuesrc   c                 C   s&   t |}|jtddks"J d S )Nr   r>   r	   rE   r   r,   r<   r   rc   rl   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   r>   rn   ro   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;rj   i  r>   r   )r   aranger	   r!   ra   Zasi8)r   r#   r$   Z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*   rH   errorr   r7   rL   r;   rI   r*   rH   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 sH0    Y  t|| d S )Nru   r   r]   r   r7   rJ   rw   )r   r   r    r!   r_   r`   r	   ra   )r   r#   r   r$   r   r   r   %test_to_timedelta_ignore_strings_unit  s
    ,z4TestTimedeltas.test_to_timedelta_ignore_strings_unitzexpected_val, result_valr0   Nc                 C   s:   t tdd|g}tt d|gdddd}t|| d S )Nr*   r0   ZInt64r   r1   r:   r3   )r   Zexpected_valZ
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   rg   )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 sB0    Y  |d}t|}t|t	j
snJ |j|dksJ d S )NzYValue must be Timedelta, string, integer, float, timedelta or convertible, not datetime64r   r9   i8)Zto_datetime64r   r   r   r   rR   r	   view
isinstancer   rg   rE   )r   Zfixed_now_tsZdt64rG   r   Z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   r7   r:   )r   r   NAr	   rg   r   r!   r4   )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?r@   r:   z0 days 00:19:59.999999998)r	   r   rg   r.   r   r   r   test_to_timedelta_fraction?  s    
z)TestTimedeltas.test_to_timedelta_fraction)1__name__
__module____qualname__r   r   markparametrizer&   r)   r/   r6   r=   rD   rF   r   rs   Zreshaper   Z	DataFramefilterwarningsrN   rT   rU   rW   rY   r\   rb   rd   rf   ri   rm   rk   r   r   rp   rq   Zxfailr   rt   rx   ry   r   rz   rg   r	   r   r   r   r   r   r   r   r   r      sx   
	

*

	
	





r   c                 C   sL   t d tddg|   dd}t|}tddgdd}t|| d S )Npyarrowr*   rH   z	[pyarrow]r   ztimedelta64[ns])r   importorskipr   lowerr	   r!   r4   )r   r   r$   r%   r   r   r   test_from_numeric_arrow_dtypeE  s
    
r   r;   r7   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!   r4   )r;   r%   r$   r   r   r   test_from_timedelta_arrow_dtypeN  s    
r   )datetimer   r   numpyr   r   Zpandas.compatr   Zpandas.errorsr   Zpandasr   r   r   r   r	   Zpandas._testingZ_testingr!   Zpandas.core.arraysr
   r   r   r   r   r   r   r   r   r   <module>   s     0	