175 lines
5.3 KiB
Python
175 lines
5.3 KiB
Python
|
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: ...
|