Skip to content

Commit c99c28f

Browse files
Terji PetersenTerji Petersen
Terji Petersen
authored and
Terji Petersen
committed
add typing to IntervalArray._left/_right
1 parent 79a0324 commit c99c28f

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

pandas/core/arrays/interval.py

+19-19
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,8 @@ def ndim(self) -> Literal[1]:
213213
return 1
214214

215215
# To make mypy recognize the fields
216-
_left: np.ndarray
217-
_right: np.ndarray
216+
_left: ArrayLike
217+
_right: ArrayLike
218218
_dtype: IntervalDtype
219219

220220
# ---------------------------------------------------------------------
@@ -714,7 +714,7 @@ def __getitem__(
714714
if is_scalar(left) and isna(left):
715715
return self._fill_value
716716
return Interval(left, right, self.closed)
717-
if np.ndim(left) > 1:
717+
if np.ndim(left) > 1: # type: ignore[arg-type]
718718
# GH#30588 multi-dimensional indexer disallowed
719719
raise ValueError("multi-dimensional indexing not allowed")
720720
return self._shallow_copy(left, right)
@@ -1456,15 +1456,15 @@ def is_non_overlapping_monotonic(self) -> bool:
14561456
# at a point when both sides of intervals are included
14571457
if self.closed == "both":
14581458
return bool(
1459-
(self._right[:-1] < self._left[1:]).all()
1460-
or (self._left[:-1] > self._right[1:]).all()
1459+
(self._right[:-1] < self._left[1:]).all() # type: ignore[operator]
1460+
or (self._left[:-1] > self._right[1:]).all() # type: ignore[operator]
14611461
)
14621462

14631463
# non-strict inequality when closed != 'both'; at least one side is
14641464
# not included in the intervals, so equality does not imply overlapping
14651465
return bool(
1466-
(self._right[:-1] <= self._left[1:]).all()
1467-
or (self._left[:-1] >= self._right[1:]).all()
1466+
(self._right[:-1] <= self._left[1:]).all() # type: ignore[operator]
1467+
or (self._left[:-1] >= self._right[1:]).all() # type: ignore[operator]
14681468
)
14691469

14701470
# ---------------------------------------------------------------------
@@ -1574,9 +1574,11 @@ def _putmask(self, mask: npt.NDArray[np.bool_], value) -> None:
15741574

15751575
if isinstance(self._left, np.ndarray):
15761576
np.putmask(self._left, mask, value_left)
1577+
assert isinstance(self._right, np.ndarray)
15771578
np.putmask(self._right, mask, value_right)
15781579
else:
15791580
self._left._putmask(mask, value_left)
1581+
assert isinstance(self._right, ExtensionArray)
15801582
self._right._putmask(mask, value_right)
15811583

15821584
def insert(self: IntervalArrayT, loc: int, item: Interval) -> IntervalArrayT:
@@ -1603,10 +1605,12 @@ def insert(self: IntervalArrayT, loc: int, item: Interval) -> IntervalArrayT:
16031605

16041606
def delete(self: IntervalArrayT, loc) -> IntervalArrayT:
16051607
if isinstance(self._left, np.ndarray):
1606-
new_left = np.delete(self._left, loc)
1607-
new_right = np.delete(self._right, loc)
1608+
new_left: ArrayLike = np.delete(self._left, loc)
1609+
assert isinstance(self._right, np.ndarray)
1610+
new_right: ArrayLike = np.delete(self._right, loc)
16081611
else:
16091612
new_left = self._left.delete(loc)
1613+
assert isinstance(self._right, ExtensionArray)
16101614
new_right = self._right.delete(loc)
16111615
return self._shallow_copy(left=new_left, right=new_right)
16121616

@@ -1724,17 +1728,13 @@ def _from_combined(self, combined: np.ndarray) -> IntervalArray:
17241728

17251729
dtype = self._left.dtype
17261730
if needs_i8_conversion(dtype):
1727-
# error: "Type[ndarray[Any, Any]]" has no attribute "_from_sequence"
1728-
new_left = type(self._left)._from_sequence( # type: ignore[attr-defined]
1729-
nc[:, 0], dtype=dtype
1730-
)
1731-
# error: "Type[ndarray[Any, Any]]" has no attribute "_from_sequence"
1732-
new_right = type(self._right)._from_sequence( # type: ignore[attr-defined]
1733-
nc[:, 1], dtype=dtype
1734-
)
1731+
assert isinstance(self._left, ExtensionArray)
1732+
new_left = type(self._left)._from_sequence(nc[:, 0], dtype=dtype)
1733+
assert isinstance(self._right, ExtensionArray)
1734+
new_right = type(self._right)._from_sequence(nc[:, 1], dtype=dtype)
17351735
else:
1736-
new_left = nc[:, 0].view(dtype)
1737-
new_right = nc[:, 1].view(dtype)
1736+
new_left = nc[:, 0].view(dtype) # type: ignore[arg-type]
1737+
new_right = nc[:, 1].view(dtype) # type: ignore[arg-type]
17381738
return self._shallow_copy(left=new_left, right=new_right)
17391739

17401740
def unique(self) -> IntervalArray:

0 commit comments

Comments
 (0)