a
    d                     @   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| rBJ t d} t| sXJ d}tjt|d  tt t j W d    n1 s0    Y  d}tjt|d td W d    n1 s0    Y  d S )	NM8[ns]
datetime64m8[ns]Ztimedelta64z'dtype must be datetime64 or timedelta64matchz#Argument 'dtype' has incorrect typeZfoo)npdtyper   pytestraises
ValueErrorint64	TypeError)r   msg r   m/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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s4J t tdtjjksNJ t tdtjjkshJ 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sZJ t tdtjjksvJ 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sVJ t tdtjjksrJ t tdtjjksJ t tdtjjksJ t tdtjjksJ 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   ZNPY_FR_YvalueZNPY_FR_MZNPY_FR_WZNPY_FR_DZNPY_FR_hZNPY_FR_mNPY_FR_s	NPY_FR_ms	NPY_FR_us	NPY_FR_nsZ	NPY_FR_psZ	NPY_FR_fsZ	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s8J t | tjj}dd	d
dddddddd
}||kslJ t | tjj}dd	ddddddddd
}||ksJ t | tjj}ddddddddddd
}||ksJ d S )Nl   *L r      i  i|     i )
daysZhrsminsecmsusnssecondsmicrosecondsnanoseconds      "   i0  iJ	    %      i2  i i3    
   i) )r   r   r!   r   r    r   r   )	valZres1Zexp1Zres2Zexp2Zres3Zexp3Zres4Zexp4r   r   r   test_td64_to_tdstructI   sj    r7   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 sJ0    Y  tjt|d t||dd W d    n1 s0    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 sT0    Y  tjt|d t||d
d	 W d    n1 s0    Y  d S )Nr9   i8r   r   r   r:   r   Tr;   F)r   r=   viewr   r   r   r   r   r>   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 rNJ d}tjt|d t	|| W d    n1 s0    Y  t d	}t	||}||}	t
||	 d S )
Nr	   
2262-04-05Dr5   r   rC   z"Out of bounds nanosecond timestampr   r   )r   r   r
   r=   astypeallr   r   r   r   tmassert_numpy_array_equal
r?   r   dtr@   ZwrongZ	roundtripr   Z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 rXJ d}tjt	|d t
|| W d    n1 s0    Y  t d	}t
||}||}	t||	 d S )
Nr   rF   rG   r5   r   rC   z@Cannot convert 106752 days to timedelta64\[ns\] without overflowr   r   )r   r   r
   r=   rD   rH   rI   r   r   r   r   rJ   rK   rL   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 sR0    Y  t||d
d	}||}t	|| d S )Ni$i  r	   rC   r   z'Cannot losslessly cast '-1500 ns' to usr   F)Zround_okT)
r   arrayr   r   r   r   r   rH   rJ   rK   )r?   r@   r   r   rN   rO   r   r   r   *test_astype_overflowsafe_disallow_rounding   s    
,
zATestAstypeOverflowSafe.test_astype_overflowsafe_disallow_roundingN)__name__
__module____qualname__rA   rE   rP   rQ   rS   r   r   r   r   r8      s
   r8   )numpyr   r   Zpandas._libs.tslibs.dtypesr   Zpandas._libs.tslibs.np_datetimer   r   r   r   r   r   Zpandas._testingZ_testingrJ   r   r"   r7   r8   r   r   r   r   <module>   s    	"A