You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			175 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			175 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Python
		
	
from datetime import timedelta
 | 
						|
from typing import (
 | 
						|
    ClassVar,
 | 
						|
    Literal,
 | 
						|
    TypeAlias,
 | 
						|
    TypeVar,
 | 
						|
    overload,
 | 
						|
)
 | 
						|
 | 
						|
import numpy as np
 | 
						|
 | 
						|
from pandas._libs.tslibs import (
 | 
						|
    NaTType,
 | 
						|
    Tick,
 | 
						|
)
 | 
						|
from pandas._typing import (
 | 
						|
    Frequency,
 | 
						|
    Self,
 | 
						|
    npt,
 | 
						|
)
 | 
						|
 | 
						|
# This should be kept consistent with the keys in the dict timedelta_abbrevs
 | 
						|
# in pandas/_libs/tslibs/timedeltas.pyx
 | 
						|
UnitChoices: TypeAlias = Literal[
 | 
						|
    "Y",
 | 
						|
    "y",
 | 
						|
    "M",
 | 
						|
    "W",
 | 
						|
    "w",
 | 
						|
    "D",
 | 
						|
    "d",
 | 
						|
    "days",
 | 
						|
    "day",
 | 
						|
    "hours",
 | 
						|
    "hour",
 | 
						|
    "hr",
 | 
						|
    "h",
 | 
						|
    "m",
 | 
						|
    "minute",
 | 
						|
    "min",
 | 
						|
    "minutes",
 | 
						|
    "T",
 | 
						|
    "t",
 | 
						|
    "s",
 | 
						|
    "seconds",
 | 
						|
    "sec",
 | 
						|
    "second",
 | 
						|
    "ms",
 | 
						|
    "milliseconds",
 | 
						|
    "millisecond",
 | 
						|
    "milli",
 | 
						|
    "millis",
 | 
						|
    "L",
 | 
						|
    "l",
 | 
						|
    "us",
 | 
						|
    "microseconds",
 | 
						|
    "microsecond",
 | 
						|
    "µs",
 | 
						|
    "micro",
 | 
						|
    "micros",
 | 
						|
    "u",
 | 
						|
    "ns",
 | 
						|
    "nanoseconds",
 | 
						|
    "nano",
 | 
						|
    "nanos",
 | 
						|
    "nanosecond",
 | 
						|
    "n",
 | 
						|
]
 | 
						|
_S = TypeVar("_S", bound=timedelta)
 | 
						|
 | 
						|
def get_unit_for_round(freq, creso: int) -> int: ...
 | 
						|
def disallow_ambiguous_unit(unit: str | None) -> None: ...
 | 
						|
def ints_to_pytimedelta(
 | 
						|
    m8values: npt.NDArray[np.timedelta64],
 | 
						|
    box: bool = ...,
 | 
						|
) -> npt.NDArray[np.object_]: ...
 | 
						|
def array_to_timedelta64(
 | 
						|
    values: npt.NDArray[np.object_],
 | 
						|
    unit: str | None = ...,
 | 
						|
    errors: str = ...,
 | 
						|
) -> np.ndarray: ...  # np.ndarray[m8ns]
 | 
						|
def parse_timedelta_unit(unit: str | None) -> UnitChoices: ...
 | 
						|
def delta_to_nanoseconds(
 | 
						|
    delta: np.timedelta64 | timedelta | Tick,
 | 
						|
    reso: int = ...,  # NPY_DATETIMEUNIT
 | 
						|
    round_ok: bool = ...,
 | 
						|
) -> int: ...
 | 
						|
def floordiv_object_array(
 | 
						|
    left: np.ndarray, right: npt.NDArray[np.object_]
 | 
						|
) -> np.ndarray: ...
 | 
						|
def truediv_object_array(
 | 
						|
    left: np.ndarray, right: npt.NDArray[np.object_]
 | 
						|
) -> np.ndarray: ...
 | 
						|
 | 
						|
class Timedelta(timedelta):
 | 
						|
    _creso: int
 | 
						|
    min: ClassVar[Timedelta]
 | 
						|
    max: ClassVar[Timedelta]
 | 
						|
    resolution: ClassVar[Timedelta]
 | 
						|
    value: int  # np.int64
 | 
						|
    _value: int  # np.int64
 | 
						|
    # error: "__new__" must return a class instance (got "Union[Timestamp, NaTType]")
 | 
						|
    def __new__(  # type: ignore[misc]
 | 
						|
        cls: type[_S],
 | 
						|
        value=...,
 | 
						|
        unit: str | None = ...,
 | 
						|
        **kwargs: float | np.integer | np.floating,
 | 
						|
    ) -> _S | NaTType: ...
 | 
						|
    @classmethod
 | 
						|
    def _from_value_and_reso(cls, value: np.int64, reso: int) -> Timedelta: ...
 | 
						|
    @property
 | 
						|
    def days(self) -> int: ...
 | 
						|
    @property
 | 
						|
    def seconds(self) -> int: ...
 | 
						|
    @property
 | 
						|
    def microseconds(self) -> int: ...
 | 
						|
    def total_seconds(self) -> float: ...
 | 
						|
    def to_pytimedelta(self) -> timedelta: ...
 | 
						|
    def to_timedelta64(self) -> np.timedelta64: ...
 | 
						|
    @property
 | 
						|
    def asm8(self) -> np.timedelta64: ...
 | 
						|
    # TODO: round/floor/ceil could return NaT?
 | 
						|
    def round(self, freq: Frequency) -> Self: ...
 | 
						|
    def floor(self, freq: Frequency) -> Self: ...
 | 
						|
    def ceil(self, freq: Frequency) -> Self: ...
 | 
						|
    @property
 | 
						|
    def resolution_string(self) -> str: ...
 | 
						|
    def __add__(self, other: timedelta) -> Timedelta: ...
 | 
						|
    def __radd__(self, other: timedelta) -> Timedelta: ...
 | 
						|
    def __sub__(self, other: timedelta) -> Timedelta: ...
 | 
						|
    def __rsub__(self, other: timedelta) -> Timedelta: ...
 | 
						|
    def __neg__(self) -> Timedelta: ...
 | 
						|
    def __pos__(self) -> Timedelta: ...
 | 
						|
    def __abs__(self) -> Timedelta: ...
 | 
						|
    def __mul__(self, other: float) -> Timedelta: ...
 | 
						|
    def __rmul__(self, other: float) -> Timedelta: ...
 | 
						|
    # error: Signature of "__floordiv__" incompatible with supertype "timedelta"
 | 
						|
    @overload  # type: ignore[override]
 | 
						|
    def __floordiv__(self, other: timedelta) -> int: ...
 | 
						|
    @overload
 | 
						|
    def __floordiv__(self, other: float) -> Timedelta: ...
 | 
						|
    @overload
 | 
						|
    def __floordiv__(
 | 
						|
        self, other: npt.NDArray[np.timedelta64]
 | 
						|
    ) -> npt.NDArray[np.intp]: ...
 | 
						|
    @overload
 | 
						|
    def __floordiv__(
 | 
						|
        self, other: npt.NDArray[np.number]
 | 
						|
    ) -> npt.NDArray[np.timedelta64] | Timedelta: ...
 | 
						|
    @overload
 | 
						|
    def __rfloordiv__(self, other: timedelta | str) -> int: ...
 | 
						|
    @overload
 | 
						|
    def __rfloordiv__(self, other: None | NaTType) -> NaTType: ...
 | 
						|
    @overload
 | 
						|
    def __rfloordiv__(self, other: np.ndarray) -> npt.NDArray[np.timedelta64]: ...
 | 
						|
    @overload
 | 
						|
    def __truediv__(self, other: timedelta) -> float: ...
 | 
						|
    @overload
 | 
						|
    def __truediv__(self, other: float) -> Timedelta: ...
 | 
						|
    def __mod__(self, other: timedelta) -> Timedelta: ...
 | 
						|
    def __divmod__(self, other: timedelta) -> tuple[int, Timedelta]: ...
 | 
						|
    def __le__(self, other: timedelta) -> bool: ...
 | 
						|
    def __lt__(self, other: timedelta) -> bool: ...
 | 
						|
    def __ge__(self, other: timedelta) -> bool: ...
 | 
						|
    def __gt__(self, other: timedelta) -> bool: ...
 | 
						|
    def __hash__(self) -> int: ...
 | 
						|
    def isoformat(self) -> str: ...
 | 
						|
    def to_numpy(
 | 
						|
        self, dtype: npt.DTypeLike = ..., copy: bool = False
 | 
						|
    ) -> np.timedelta64: ...
 | 
						|
    def view(self, dtype: npt.DTypeLike) -> object: ...
 | 
						|
    @property
 | 
						|
    def unit(self) -> str: ...
 | 
						|
    def as_unit(self, unit: str, round_ok: bool = ...) -> Timedelta: ...
 |