o
    _~#g                     @   sr   d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZ d dlmZ dd Zdd Zdd	 ZG d
d dZdS )    N)NpyDatetimeUnit)OutOfBoundsDatetimeOutOfBoundsTimedeltaastype_overflowsafeis_unitlesspy_get_unit_from_dtypepy_td64_to_tdstructc                  C   s   t d} t| rJ t d} t| sJ t d} t| r!J t d} t| s,J d}tjt|d tt t j W d    n1 sHw   Y  d}tjt|d td W d    d S 1 sfw   Y  d S )	NM8[ns]
datetime64m8[ns]timedelta64z'dtype must be datetime64 or timedelta64matchz#Argument 'dtype' has incorrect typefoo)npdtyper   pytestraises
ValueErrorint64	TypeError)r   msg r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/tslibs/test_np_datetime.pytest_is_unitless   s    




"r   c                   C   s  t tdtjjksJ t tdtjjksJ t tdtjjks'J t tdtjjks4J t tdtj	jksAJ t tdtj
jksNJ t tdtjjks[J t tdtjjkshJ t td	tjjksuJ t td
tjjksJ t tdtjjksJ t tdtjjksJ t tdtjjksJ t tdtjjksJ t tdtjjksJ t tdtjjksJ t tdtjjksJ t tdtj	jksJ t tdtj
jksJ t tdtjjksJ t tdtjjksJ t tdtjjks!J t tdtjjks/J t tdtjjks=J t tdtjjksKJ t tdtjjksYJ d S )NzM8[Y]zM8[M]zM8[W]M8[D]zM8[h]zM8[m]zM8[s]zM8[ms]M8[us]r	   zM8[ps]zM8[fs]zM8[as]zm8[Y]zm8[M]zm8[W]m8[D]zm8[h]zm8[m]zm8[s]zm8[ms]m8[us]r   zm8[ps]zm8[fs]zm8[as])r   r   r   r   NPY_FR_YvalueNPY_FR_MNPY_FR_WNPY_FR_DNPY_FR_hNPY_FR_mNPY_FR_s	NPY_FR_ms	NPY_FR_us	NPY_FR_ns	NPY_FR_ps	NPY_FR_fs	NPY_FR_asr   r   r   r   test_get_unit_from_dtype'   s4    r-   c            	      C   s   d} t | tjj}ddddddddddd
}||ksJ t | tjj}dd	d
dddddddd
}||ks6J t | tjj}dd	ddddddddd
}||ksPJ t | tjj}ddddddddddd
}||ksjJ d S )Nl   *L r      i  i|     i )
dayshrsminsecmsusnssecondsmicrosecondsnanoseconds      "   i0  iJ	    %      i2  i i3    
   i) )r   r   r)   r    r(   r'   r&   )	valres1exp1res2exp2res3exp3res4exp4r   r   r   test_td64_to_tdstructI   sj   rK   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestAstypeOverflowSafec                 C   s   t d}t d}d}tjt|d t||dd W d    n1 s%w   Y  tjt|d t||dd W d    d S 1 sDw   Y  d S )N   r	   ]astype_overflowsafe values.dtype and dtype must be either both-datetime64 or both-timedelta64r   TcopyF)r   aranger   r   r   r   r   selfarrr   r   r   r   r   test_pass_non_dt64_array   s   

"z/TestAstypeOverflowSafe.test_pass_non_dt64_arrayc                 C   s   t jdddd}t d}d}tjt|d t||dd	 W d    n1 s*w   Y  tjt|d t||d
d	 W d    d S 1 sIw   Y  d S )NrM   i8r   r   r   rN   r   TrO   F)r   rQ   viewr   r   r   r   r   rR   r   r   r   test_pass_non_dt64_dtype   s   
"z/TestAstypeOverflowSafe.test_pass_non_dt64_dtypec           
      C   s   t d}t dd}|t jddd }||}||j}||k r'J d}tjt|d t	|| W d    n1 s@w   Y  t d	}t	||}||}	t
||	 d S )
Nr	   
2262-04-05DrA   r   rW   z"Out of bounds nanosecond timestampr   r   )r   r   r
   rQ   astypeallr   r   r   r   tmassert_numpy_array_equal
rS   r   dtrT   wrong	roundtripr   dtype2resultexpectedr   r   r   test_astype_overflowsafe_dt64   s   




z4TestAstypeOverflowSafe.test_astype_overflowsafe_dt64c           
      C   s   t d}t dd}|t jddd }|d}||}||j}||k r,J d}tjt	|d t
|| W d    n1 sEw   Y  t d	}t
||}||}	t||	 d S )
Nr   rZ   r[   rA   r   rW   z@Cannot convert 106752 days to timedelta64\[ns\] without overflowr   r   )r   r   r
   rQ   rX   r\   r]   r   r   r   r   r^   r_   r`   r   r   r   test_astype_overflowsafe_td64   s   





z4TestAstypeOverflowSafe.test_astype_overflowsafe_td64c                 C   s   t jddgdd}t d}d}tjt|d t||dd	 W d    n1 s)w   Y  t||d
d	}||}t	|| d S )Ni$i  r	   rW   r   z'Cannot losslessly cast '-1500 ns' to usr   F)round_okT)
r   arrayr   r   r   r   r   r\   r^   r_   )rS   rT   r   r   re   rf   r   r   r   *test_astype_overflowsafe_disallow_rounding   s   

zATestAstypeOverflowSafe.test_astype_overflowsafe_disallow_roundingN)__name__
__module____qualname__rU   rY   rg   rh   rk   r   r   r   r   rL      s    rL   )numpyr   r   pandas._libs.tslibs.dtypesr   pandas._libs.tslibs.np_datetimer   r   r   r   r   r   pandas._testing_testingr^   r   r-   rK   rL   r   r   r   r   <module>   s     	"A