
    ]jA!                         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mZ d dlmZ ej$                  j'                  d      d        Zd Zd Z G d	 d
      Zy)    N)NpyDatetimeUnit)OutOfBoundsDatetimeOutOfBoundsTimedeltaastype_overflowsafeis_unitlesspy_get_unit_from_dtypepy_td64_to_tdstruct)is_numpy_devnp_version_gt2_5z*ignore:.*'generic' unit:DeprecationWarningc                  J   t        j                  d      } t        |       rJ t        j                  d      } t        |       sJ t        j                  d      } t        |       rJ t        j                  d      } t        |       sJ d}t        j                  t
        |      5  t        t        j                  t         j                               d d d        d}t        j                  t        |      5  t        d       d d d        y # 1 sw Y   ;xY w# 1 sw Y   y xY w)	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   msgs     N/root/env/lib/python3.12/site-packages/pandas/tests/tslibs/test_np_datetime.pytest_is_unitlessr      s    HHXE5!!!HH\"EuHHXE5!!!HH]#Eu
3C	z	- (BHHRXX&'( 0C	y	, E 	( ( s   &-D8DDD"c                      t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d	            t        j                  j
                  k(  sJ t        t        j                  d
            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                   j
                  k(  sJ t        t        j                  d            t        j"                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                  j
                  k(  sJ t        t        j                  d            t        j                   j
                  k(  sJ t        t        j                  d            t        j"                  j
                  k(  sJ y )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_as     r   test_get_unit_from_dtyper3   ,   s   !"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXX ""((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((7"348P8P8V8VVVV!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXX!"((8"459R9R9X9XXXXr2   c                     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(  sJ 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(  sJ y )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exp4s	            r   test_td64_to_tdstructrR   N   s5   
CsO$=$=$C$CDDD 4<<sO$=$=$C$CDDD 4<<sO$=$=$C$CDDD 4<< sO$<$<$B$BCDD 4<<r2   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestAstypeOverflowSafec                 T   t        j                  d      }t        j                  d      }d}t        j                  t
        |      5  t        ||d       d d d        t        j                  t
        |      5  t        ||d       d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)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   s       r   test_pass_non_dt64_arrayz/TestAstypeOverflowSafe.test_pass_non_dt64_array   s    iil"2 	 ]]9C0 	7U6	7 ]]9C0 	8U7	8 	8	7 	7	8 	8s   B:BBB'c                 v   t        j                  dd      j                  d      }t        j                  d      }d}t	        j
                  t        |      5  t        ||d	       d d d        t	        j
                  t        |      5  t        ||d
	       d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)NrV   i8r   r   r   rW   r   TrX   F)r   rZ   viewr   r   r   r   r   r[   s       r   test_pass_non_dt64_dtypez/TestAstypeOverflowSafe.test_pass_non_dt64_dtype   s    ii&++G4"2 	 ]]9C0 	7U6	7 ]]9C0 	8U7	8 	8	7 	7	8 	8s   B#B/#B,/B8c                    t        j                  d      }t        j                  dd      }|t        j                  dd      z   }t        st
        r6t        j                  t        d      5  |j                  |       d d d        nA|j                  |      }|j                  |j                        }||k(  j                         rJ d	}t        j                  t        |      5  t        ||       d d d        t        j                  d
      }t        ||      }|j                  |      }	t        j                  ||	       y # 1 sw Y   xY w# 1 sw Y   ^xY w)Nr   
2262-04-05DrH   r!   ra   Overflowr   z"Out of bounds nanosecond timestampr    )r   r   r   rZ   r
   r   r   r   OverflowErrorastypeallr   r   tmassert_numpy_array_equal
r\   r   dtr]   wrong	roundtripr   dtype2resultexpecteds
             r   test_astype_overflowsafe_dt64z4TestAstypeOverflowSafe.test_astype_overflowsafe_dt64   s   "]]<-299Rw//+}J? "

5!" " JJu%ESYY/I*//1112]].c: 	,U+	, (#$S&1::f%
##FH5!" "	, 	,s   -E&EEEc                    t        j                  d      }t        j                  dd      }|t        j                  dd      z   }|j	                  d      }t
        st        r6t        j                  t        d      5  |j                  |       d d d        nA|j                  |      }|j                  |j                        }||k(  j                         rJ d	}t        j                  t        |      5  t        ||       d d d        t        j                  d
      }t        ||      }|j                  |      }	t        j                  ||	       y # 1 sw Y   xY w# 1 sw Y   ^xY w)Nr   re   rf   rH   r!   ra   rg   r   z@Cannot convert 106752 days to timedelta64\[ns\] without overflowr"   )r   r   r   rZ   rb   r
   r   r   r   rh   ri   rj   r   r   rk   rl   rm   s
             r   test_astype_overflowsafe_td64z4TestAstypeOverflowSafe.test_astype_overflowsafe_td64   s#   "]]<-299Rw//hhw+}J? "

5!" " JJu%ESYY/I*//111Q]]/s; 	,U+	, (#$S&1::f%
##FH5!" "	, 	,s   >E7E!E!E*c                 J   t        j                  ddgd      }t        j                  d      }d}t        j                  t
        |      5  t        ||d	       d d d        t        ||d
	      }|j                  |      }t        j                  ||       y # 1 sw Y   ?xY w)Ni$i  r   ra   r    z'Cannot losslessly cast '-1500 ns' to usr   F)round_okT)
r   arrayr   r   r   r   r   ri   rk   rl   )r\   r]   r   r   rr   rs   s         r   *test_astype_overflowsafe_disallow_roundingzATestAstypeOverflowSafe.test_astype_overflowsafe_disallow_rounding   s    hht}H5"7]]:S1 	<UU;	< %S%$?::e$
##FH5	< 	<s   BB"N)__name__
__module____qualname__r^   rc   rt   rv   rz   r1   r2   r   rT   rT      s    886466
6r2   rT   )numpyr   r   pandas._libs.tslibs.dtypesr   pandas._libs.tslibs.np_datetimer   r   r   r   r   r	   pandas.compat.numpyr
   r   pandas._testing_testingrk   markfilterwarningsr   r3   rR   rT   r1   r2   r   <module>r      s`      6 
  HI J,YD>B^6 ^6r2   