Skip to content

Commit 6d7e004

Browse files
authored
TYP: fix mid and length for Interval and Intervalarray (#46472)
1 parent 40fbd59 commit 6d7e004

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

pandas/_libs/interval.pyi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ class _LengthDescriptor:
3232
def __get__(
3333
self, instance: Interval[_OrderableTimesT], owner: Any
3434
) -> Timedelta: ...
35-
@overload
36-
def __get__(self, instance: IntervalTree, owner: Any) -> np.ndarray: ...
3735

3836
class _MidDescriptor:
3937
@overload
@@ -42,8 +40,6 @@ class _MidDescriptor:
4240
def __get__(
4341
self, instance: Interval[_OrderableTimesT], owner: Any
4442
) -> _OrderableTimesT: ...
45-
@overload
46-
def __get__(self, instance: IntervalTree, owner: Any) -> np.ndarray: ...
4743

4844
class IntervalMixin:
4945
@property
@@ -54,8 +50,6 @@ class IntervalMixin:
5450
def open_left(self) -> bool: ...
5551
@property
5652
def open_right(self) -> bool: ...
57-
mid: _MidDescriptor
58-
length: _LengthDescriptor
5953
@property
6054
def is_empty(self) -> bool: ...
6155
def _check_closed_matches(self, other: IntervalMixin, name: str = ...) -> None: ...
@@ -67,6 +61,8 @@ class Interval(IntervalMixin, Generic[_OrderableT]):
6761
def right(self: Interval[_OrderableT]) -> _OrderableT: ...
6862
@property
6963
def closed(self) -> IntervalClosedType: ...
64+
mid: _MidDescriptor
65+
length: _LengthDescriptor
7066
def __init__(
7167
self,
7268
left: _OrderableT,
@@ -162,6 +158,10 @@ class IntervalTree(IntervalMixin):
162158
closed: IntervalClosedType = ...,
163159
leaf_size: int = ...,
164160
): ...
161+
@property
162+
def mid(self) -> np.ndarray: ...
163+
@property
164+
def length(self) -> np.ndarray: ...
165165
def get_indexer(self, target) -> npt.NDArray[np.intp]: ...
166166
def get_indexer_non_unique(
167167
self, target

pandas/core/arrays/interval.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
)
88
import textwrap
99
from typing import (
10+
TYPE_CHECKING,
1011
Sequence,
1112
TypeVar,
1213
Union,
@@ -93,6 +94,10 @@
9394
unpack_zerodim_and_defer,
9495
)
9596

97+
if TYPE_CHECKING:
98+
from pandas import Index
99+
100+
96101
IntervalArrayT = TypeVar("IntervalArrayT", bound="IntervalArray")
97102
IntervalOrNA = Union[Interval, float]
98103

@@ -1230,15 +1235,15 @@ def right(self):
12301235
return Index(self._right, copy=False)
12311236

12321237
@property
1233-
def length(self):
1238+
def length(self) -> Index:
12341239
"""
12351240
Return an Index with entries denoting the length of each Interval in
12361241
the IntervalArray.
12371242
"""
12381243
return self.right - self.left
12391244

12401245
@property
1241-
def mid(self):
1246+
def mid(self) -> Index:
12421247
"""
12431248
Return the midpoint of each Interval in the IntervalArray as an Index.
12441249
"""

0 commit comments

Comments
 (0)