| from typing import ( |
| Any, |
| Generic, |
| TypeVar, |
| overload, |
| ) |
|
|
| import numpy as np |
| import numpy.typing as npt |
|
|
| from pandas._typing import ( |
| IntervalClosedType, |
| Timedelta, |
| Timestamp, |
| ) |
|
|
| VALID_CLOSED: frozenset[str] |
|
|
| _OrderableScalarT = TypeVar("_OrderableScalarT", int, float) |
| _OrderableTimesT = TypeVar("_OrderableTimesT", Timestamp, Timedelta) |
| _OrderableT = TypeVar("_OrderableT", int, float, Timestamp, Timedelta) |
|
|
| class _LengthDescriptor: |
| @overload |
| def __get__( |
| self, instance: Interval[_OrderableScalarT], owner: Any |
| ) -> _OrderableScalarT: ... |
| @overload |
| def __get__( |
| self, instance: Interval[_OrderableTimesT], owner: Any |
| ) -> Timedelta: ... |
|
|
| class _MidDescriptor: |
| @overload |
| def __get__(self, instance: Interval[_OrderableScalarT], owner: Any) -> float: ... |
| @overload |
| def __get__( |
| self, instance: Interval[_OrderableTimesT], owner: Any |
| ) -> _OrderableTimesT: ... |
|
|
| class IntervalMixin: |
| @property |
| def closed_left(self) -> bool: ... |
| @property |
| def closed_right(self) -> bool: ... |
| @property |
| def open_left(self) -> bool: ... |
| @property |
| def open_right(self) -> bool: ... |
| @property |
| def is_empty(self) -> bool: ... |
| def _check_closed_matches(self, other: IntervalMixin, name: str = ...) -> None: ... |
|
|
| class Interval(IntervalMixin, Generic[_OrderableT]): |
| @property |
| def left(self: Interval[_OrderableT]) -> _OrderableT: ... |
| @property |
| def right(self: Interval[_OrderableT]) -> _OrderableT: ... |
| @property |
| def closed(self) -> IntervalClosedType: ... |
| mid: _MidDescriptor |
| length: _LengthDescriptor |
| def __init__( |
| self, |
| left: _OrderableT, |
| right: _OrderableT, |
| closed: IntervalClosedType = ..., |
| ) -> None: ... |
| def __hash__(self) -> int: ... |
| @overload |
| def __contains__( |
| self: Interval[Timedelta], key: Timedelta | Interval[Timedelta] |
| ) -> bool: ... |
| @overload |
| def __contains__( |
| self: Interval[Timestamp], key: Timestamp | Interval[Timestamp] |
| ) -> bool: ... |
| @overload |
| def __contains__( |
| self: Interval[_OrderableScalarT], |
| key: _OrderableScalarT | Interval[_OrderableScalarT], |
| ) -> bool: ... |
| @overload |
| def __add__( |
| self: Interval[_OrderableTimesT], y: Timedelta |
| ) -> Interval[_OrderableTimesT]: ... |
| @overload |
| def __add__( |
| self: Interval[int], y: _OrderableScalarT |
| ) -> Interval[_OrderableScalarT]: ... |
| @overload |
| def __add__(self: Interval[float], y: float) -> Interval[float]: ... |
| @overload |
| def __radd__( |
| self: Interval[_OrderableTimesT], y: Timedelta |
| ) -> Interval[_OrderableTimesT]: ... |
| @overload |
| def __radd__( |
| self: Interval[int], y: _OrderableScalarT |
| ) -> Interval[_OrderableScalarT]: ... |
| @overload |
| def __radd__(self: Interval[float], y: float) -> Interval[float]: ... |
| @overload |
| def __sub__( |
| self: Interval[_OrderableTimesT], y: Timedelta |
| ) -> Interval[_OrderableTimesT]: ... |
| @overload |
| def __sub__( |
| self: Interval[int], y: _OrderableScalarT |
| ) -> Interval[_OrderableScalarT]: ... |
| @overload |
| def __sub__(self: Interval[float], y: float) -> Interval[float]: ... |
| @overload |
| def __rsub__( |
| self: Interval[_OrderableTimesT], y: Timedelta |
| ) -> Interval[_OrderableTimesT]: ... |
| @overload |
| def __rsub__( |
| self: Interval[int], y: _OrderableScalarT |
| ) -> Interval[_OrderableScalarT]: ... |
| @overload |
| def __rsub__(self: Interval[float], y: float) -> Interval[float]: ... |
| @overload |
| def __mul__( |
| self: Interval[int], y: _OrderableScalarT |
| ) -> Interval[_OrderableScalarT]: ... |
| @overload |
| def __mul__(self: Interval[float], y: float) -> Interval[float]: ... |
| @overload |
| def __rmul__( |
| self: Interval[int], y: _OrderableScalarT |
| ) -> Interval[_OrderableScalarT]: ... |
| @overload |
| def __rmul__(self: Interval[float], y: float) -> Interval[float]: ... |
| @overload |
| def __truediv__( |
| self: Interval[int], y: _OrderableScalarT |
| ) -> Interval[_OrderableScalarT]: ... |
| @overload |
| def __truediv__(self: Interval[float], y: float) -> Interval[float]: ... |
| @overload |
| def __floordiv__( |
| self: Interval[int], y: _OrderableScalarT |
| ) -> Interval[_OrderableScalarT]: ... |
| @overload |
| def __floordiv__(self: Interval[float], y: float) -> Interval[float]: ... |
| def overlaps(self: Interval[_OrderableT], other: Interval[_OrderableT]) -> bool: ... |
|
|
| def intervals_to_interval_bounds( |
| intervals: np.ndarray, validate_closed: bool = ... |
| ) -> tuple[np.ndarray, np.ndarray, IntervalClosedType]: ... |
|
|
| class IntervalTree(IntervalMixin): |
| def __init__( |
| self, |
| left: np.ndarray, |
| right: np.ndarray, |
| closed: IntervalClosedType = ..., |
| leaf_size: int = ..., |
| ) -> None: ... |
| @property |
| def mid(self) -> np.ndarray: ... |
| @property |
| def length(self) -> np.ndarray: ... |
| def get_indexer(self, target) -> npt.NDArray[np.intp]: ... |
| def get_indexer_non_unique( |
| self, target |
| ) -> tuple[npt.NDArray[np.intp], npt.NDArray[np.intp]]: ... |
| _na_count: int |
| @property |
| def is_overlapping(self) -> bool: ... |
| @property |
| def is_monotonic_increasing(self) -> bool: ... |
| def clear_mapping(self) -> None: ... |
|
|