interval.pyi 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. from typing import (
  2. Any,
  3. Generic,
  4. TypeVar,
  5. overload,
  6. )
  7. import numpy as np
  8. import numpy.typing as npt
  9. from pandas._typing import (
  10. IntervalClosedType,
  11. Timedelta,
  12. Timestamp,
  13. )
  14. VALID_CLOSED: frozenset[str]
  15. _OrderableScalarT = TypeVar("_OrderableScalarT", int, float)
  16. _OrderableTimesT = TypeVar("_OrderableTimesT", Timestamp, Timedelta)
  17. _OrderableT = TypeVar("_OrderableT", int, float, Timestamp, Timedelta)
  18. class _LengthDescriptor:
  19. @overload
  20. def __get__(
  21. self, instance: Interval[_OrderableScalarT], owner: Any
  22. ) -> _OrderableScalarT: ...
  23. @overload
  24. def __get__(
  25. self, instance: Interval[_OrderableTimesT], owner: Any
  26. ) -> Timedelta: ...
  27. class _MidDescriptor:
  28. @overload
  29. def __get__(self, instance: Interval[_OrderableScalarT], owner: Any) -> float: ...
  30. @overload
  31. def __get__(
  32. self, instance: Interval[_OrderableTimesT], owner: Any
  33. ) -> _OrderableTimesT: ...
  34. class IntervalMixin:
  35. @property
  36. def closed_left(self) -> bool: ...
  37. @property
  38. def closed_right(self) -> bool: ...
  39. @property
  40. def open_left(self) -> bool: ...
  41. @property
  42. def open_right(self) -> bool: ...
  43. @property
  44. def is_empty(self) -> bool: ...
  45. def _check_closed_matches(self, other: IntervalMixin, name: str = ...) -> None: ...
  46. class Interval(IntervalMixin, Generic[_OrderableT]):
  47. @property
  48. def left(self: Interval[_OrderableT]) -> _OrderableT: ...
  49. @property
  50. def right(self: Interval[_OrderableT]) -> _OrderableT: ...
  51. @property
  52. def closed(self) -> IntervalClosedType: ...
  53. mid: _MidDescriptor
  54. length: _LengthDescriptor
  55. def __init__(
  56. self,
  57. left: _OrderableT,
  58. right: _OrderableT,
  59. closed: IntervalClosedType = ...,
  60. ) -> None: ...
  61. def __hash__(self) -> int: ...
  62. @overload
  63. def __contains__(
  64. self: Interval[Timedelta], key: Timedelta | Interval[Timedelta]
  65. ) -> bool: ...
  66. @overload
  67. def __contains__(
  68. self: Interval[Timestamp], key: Timestamp | Interval[Timestamp]
  69. ) -> bool: ...
  70. @overload
  71. def __contains__(
  72. self: Interval[_OrderableScalarT],
  73. key: _OrderableScalarT | Interval[_OrderableScalarT],
  74. ) -> bool: ...
  75. @overload
  76. def __add__(
  77. self: Interval[_OrderableTimesT], y: Timedelta
  78. ) -> Interval[_OrderableTimesT]: ...
  79. @overload
  80. def __add__(
  81. self: Interval[int], y: _OrderableScalarT
  82. ) -> Interval[_OrderableScalarT]: ...
  83. @overload
  84. def __add__(self: Interval[float], y: float) -> Interval[float]: ...
  85. @overload
  86. def __radd__(
  87. self: Interval[_OrderableTimesT], y: Timedelta
  88. ) -> Interval[_OrderableTimesT]: ...
  89. @overload
  90. def __radd__(
  91. self: Interval[int], y: _OrderableScalarT
  92. ) -> Interval[_OrderableScalarT]: ...
  93. @overload
  94. def __radd__(self: Interval[float], y: float) -> Interval[float]: ...
  95. @overload
  96. def __sub__(
  97. self: Interval[_OrderableTimesT], y: Timedelta
  98. ) -> Interval[_OrderableTimesT]: ...
  99. @overload
  100. def __sub__(
  101. self: Interval[int], y: _OrderableScalarT
  102. ) -> Interval[_OrderableScalarT]: ...
  103. @overload
  104. def __sub__(self: Interval[float], y: float) -> Interval[float]: ...
  105. @overload
  106. def __rsub__(
  107. self: Interval[_OrderableTimesT], y: Timedelta
  108. ) -> Interval[_OrderableTimesT]: ...
  109. @overload
  110. def __rsub__(
  111. self: Interval[int], y: _OrderableScalarT
  112. ) -> Interval[_OrderableScalarT]: ...
  113. @overload
  114. def __rsub__(self: Interval[float], y: float) -> Interval[float]: ...
  115. @overload
  116. def __mul__(
  117. self: Interval[int], y: _OrderableScalarT
  118. ) -> Interval[_OrderableScalarT]: ...
  119. @overload
  120. def __mul__(self: Interval[float], y: float) -> Interval[float]: ...
  121. @overload
  122. def __rmul__(
  123. self: Interval[int], y: _OrderableScalarT
  124. ) -> Interval[_OrderableScalarT]: ...
  125. @overload
  126. def __rmul__(self: Interval[float], y: float) -> Interval[float]: ...
  127. @overload
  128. def __truediv__(
  129. self: Interval[int], y: _OrderableScalarT
  130. ) -> Interval[_OrderableScalarT]: ...
  131. @overload
  132. def __truediv__(self: Interval[float], y: float) -> Interval[float]: ...
  133. @overload
  134. def __floordiv__(
  135. self: Interval[int], y: _OrderableScalarT
  136. ) -> Interval[_OrderableScalarT]: ...
  137. @overload
  138. def __floordiv__(self: Interval[float], y: float) -> Interval[float]: ...
  139. def overlaps(self: Interval[_OrderableT], other: Interval[_OrderableT]) -> bool: ...
  140. def intervals_to_interval_bounds(
  141. intervals: np.ndarray, validate_closed: bool = ...
  142. ) -> tuple[np.ndarray, np.ndarray, str]: ...
  143. class IntervalTree(IntervalMixin):
  144. def __init__(
  145. self,
  146. left: np.ndarray,
  147. right: np.ndarray,
  148. closed: IntervalClosedType = ...,
  149. leaf_size: int = ...,
  150. ) -> None: ...
  151. @property
  152. def mid(self) -> np.ndarray: ...
  153. @property
  154. def length(self) -> np.ndarray: ...
  155. def get_indexer(self, target) -> npt.NDArray[np.intp]: ...
  156. def get_indexer_non_unique(
  157. self, target
  158. ) -> tuple[npt.NDArray[np.intp], npt.NDArray[np.intp]]: ...
  159. _na_count: int
  160. @property
  161. def is_overlapping(self) -> bool: ...
  162. @property
  163. def is_monotonic_increasing(self) -> bool: ...
  164. def clear_mapping(self) -> None: ...