timedeltas.pyi 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. from datetime import timedelta
  2. from typing import (
  3. ClassVar,
  4. Literal,
  5. TypeVar,
  6. overload,
  7. )
  8. import numpy as np
  9. from pandas._libs.tslibs import (
  10. NaTType,
  11. Tick,
  12. )
  13. from pandas._typing import npt
  14. # This should be kept consistent with the keys in the dict timedelta_abbrevs
  15. # in pandas/_libs/tslibs/timedeltas.pyx
  16. UnitChoices = Literal[
  17. "Y",
  18. "y",
  19. "M",
  20. "W",
  21. "w",
  22. "D",
  23. "d",
  24. "days",
  25. "day",
  26. "hours",
  27. "hour",
  28. "hr",
  29. "h",
  30. "m",
  31. "minute",
  32. "min",
  33. "minutes",
  34. "t",
  35. "s",
  36. "seconds",
  37. "sec",
  38. "second",
  39. "ms",
  40. "milliseconds",
  41. "millisecond",
  42. "milli",
  43. "millis",
  44. "l",
  45. "us",
  46. "microseconds",
  47. "microsecond",
  48. "µs",
  49. "micro",
  50. "micros",
  51. "u",
  52. "ns",
  53. "nanoseconds",
  54. "nano",
  55. "nanos",
  56. "nanosecond",
  57. "n",
  58. ]
  59. _S = TypeVar("_S", bound=timedelta)
  60. def ints_to_pytimedelta(
  61. arr: npt.NDArray[np.timedelta64],
  62. box: bool = ...,
  63. ) -> npt.NDArray[np.object_]: ...
  64. def array_to_timedelta64(
  65. values: npt.NDArray[np.object_],
  66. unit: str | None = ...,
  67. errors: str = ...,
  68. ) -> np.ndarray: ... # np.ndarray[m8ns]
  69. def parse_timedelta_unit(unit: str | None) -> UnitChoices: ...
  70. def delta_to_nanoseconds(
  71. delta: np.timedelta64 | timedelta | Tick,
  72. reso: int = ..., # NPY_DATETIMEUNIT
  73. round_ok: bool = ...,
  74. ) -> int: ...
  75. def floordiv_object_array(
  76. left: np.ndarray, right: npt.NDArray[np.object_]
  77. ) -> np.ndarray: ...
  78. def truediv_object_array(
  79. left: np.ndarray, right: npt.NDArray[np.object_]
  80. ) -> np.ndarray: ...
  81. class Timedelta(timedelta):
  82. _creso: int
  83. min: ClassVar[Timedelta]
  84. max: ClassVar[Timedelta]
  85. resolution: ClassVar[Timedelta]
  86. value: int # np.int64
  87. _value: int # np.int64
  88. # error: "__new__" must return a class instance (got "Union[Timestamp, NaTType]")
  89. def __new__( # type: ignore[misc]
  90. cls: type[_S],
  91. value=...,
  92. unit: str | None = ...,
  93. **kwargs: float | np.integer | np.floating,
  94. ) -> _S | NaTType: ...
  95. @classmethod
  96. def _from_value_and_reso(cls, value: np.int64, reso: int) -> Timedelta: ...
  97. @property
  98. def days(self) -> int: ...
  99. @property
  100. def seconds(self) -> int: ...
  101. @property
  102. def microseconds(self) -> int: ...
  103. def total_seconds(self) -> float: ...
  104. def to_pytimedelta(self) -> timedelta: ...
  105. def to_timedelta64(self) -> np.timedelta64: ...
  106. @property
  107. def asm8(self) -> np.timedelta64: ...
  108. # TODO: round/floor/ceil could return NaT?
  109. def round(self: _S, freq: str) -> _S: ...
  110. def floor(self: _S, freq: str) -> _S: ...
  111. def ceil(self: _S, freq: str) -> _S: ...
  112. @property
  113. def resolution_string(self) -> str: ...
  114. def __add__(self, other: timedelta) -> Timedelta: ...
  115. def __radd__(self, other: timedelta) -> Timedelta: ...
  116. def __sub__(self, other: timedelta) -> Timedelta: ...
  117. def __rsub__(self, other: timedelta) -> Timedelta: ...
  118. def __neg__(self) -> Timedelta: ...
  119. def __pos__(self) -> Timedelta: ...
  120. def __abs__(self) -> Timedelta: ...
  121. def __mul__(self, other: float) -> Timedelta: ...
  122. def __rmul__(self, other: float) -> Timedelta: ...
  123. # error: Signature of "__floordiv__" incompatible with supertype "timedelta"
  124. @overload # type: ignore[override]
  125. def __floordiv__(self, other: timedelta) -> int: ...
  126. @overload
  127. def __floordiv__(self, other: float) -> Timedelta: ...
  128. @overload
  129. def __floordiv__(
  130. self, other: npt.NDArray[np.timedelta64]
  131. ) -> npt.NDArray[np.intp]: ...
  132. @overload
  133. def __floordiv__(
  134. self, other: npt.NDArray[np.number]
  135. ) -> npt.NDArray[np.timedelta64] | Timedelta: ...
  136. @overload
  137. def __rfloordiv__(self, other: timedelta | str) -> int: ...
  138. @overload
  139. def __rfloordiv__(self, other: None | NaTType) -> NaTType: ...
  140. @overload
  141. def __rfloordiv__(self, other: np.ndarray) -> npt.NDArray[np.timedelta64]: ...
  142. @overload
  143. def __truediv__(self, other: timedelta) -> float: ...
  144. @overload
  145. def __truediv__(self, other: float) -> Timedelta: ...
  146. def __mod__(self, other: timedelta) -> Timedelta: ...
  147. def __divmod__(self, other: timedelta) -> tuple[int, Timedelta]: ...
  148. def __le__(self, other: timedelta) -> bool: ...
  149. def __lt__(self, other: timedelta) -> bool: ...
  150. def __ge__(self, other: timedelta) -> bool: ...
  151. def __gt__(self, other: timedelta) -> bool: ...
  152. def __hash__(self) -> int: ...
  153. def isoformat(self) -> str: ...
  154. def to_numpy(self) -> np.timedelta64: ...
  155. def view(self, dtype: npt.DTypeLike = ...) -> object: ...
  156. @property
  157. def unit(self) -> str: ...
  158. def as_unit(self, unit: str, round_ok: bool = ...) -> Timedelta: ...