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
		
	
	
		
			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: ...
 |