Skip to content

Commit 1d02adf

Browse files
authored
fix index dtype series invert ArrayLike (#168)
1 parent 0760586 commit 1d02adf

File tree

5 files changed

+22
-5
lines changed

5 files changed

+22
-5
lines changed

partial/pandas/_typing.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ if sys.version_info >= (3, 8):
3636
else:
3737
from typing_extensions import Literal
3838

39-
AnyArrayLike = TypeVar("AnyArrayLike", ExtensionArray, Index, Series, np.ndarray)
40-
ArrayLike = TypeVar("ArrayLike", ExtensionArray, np.ndarray)
39+
ArrayLike = Union[ExtensionArray, np.ndarray]
40+
AnyArrayLike = Union[Index, Series]
4141
PythonScalar = Union[str, int, float, bool, complex]
4242
DatetimeLikeScalar = TypeVar("DatetimeLikeScalar", Period, Timestamp, Timedelta)
4343
PandasScalar = Union[bytes, datetime.date, datetime.datetime, datetime.timedelta]

partial/pandas/core/indexes/base.pyi

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ class Index(IndexOpsMixin[T1], PandasObject, Generic[T1]):
2929
def __len__(self) -> int: ...
3030
def __array__(self, dtype=...) -> np.ndarray: ...
3131
def __array_wrap__(self, result, context=...): ...
32-
def dtype(self): ...
32+
@property
33+
def dtype(self) -> Type[Dtype]: ...
3334
def ravel(self, order: _str = ...): ...
3435
def view(self, cls=...): ...
3536
@overload
3637
def astype(self, dtype: _str) -> Index: ...
3738
@overload
38-
def astype(self, dtype: Type[T2]) -> Index[T2]: ...
39+
def astype(self, dtype: Type[Dtype]) -> Index[Dtype]: ...
3940
def take(self, indices, axis: int = ..., allow_fill: bool = ..., fill_value=..., **kwargs): ...
4041
def repeat(self, repeats, axis=...): ...
4142
def copy(self, name=..., deep: bool = ..., dtype=..., **kwargs): ...

partial/pandas/core/series.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class Series(IndexOpsMixin, NDFrame, Generic[S1]):
135135
@name.setter
136136
def name(self, value: Optional[Hashable]) -> None: ...
137137
@property
138-
def values(self) -> Union[np.ndarray, ExtensionArray]: ...
138+
def values(self) -> ArrayLike: ...
139139
@property
140140
def array(self) -> ExtensionArray: ...
141141
def ravel(self, order: _str = ...) -> np.ndarray: ...
@@ -946,6 +946,7 @@ class Series(IndexOpsMixin, NDFrame, Generic[S1]):
946946
def __sub__(self, other: Union[num, Timedelta, _ListLike, Series[S1]]) -> Series[S1]: ...
947947
def __truediv__(self, other: Union[num, _ListLike, Series[S1]]) -> Series[S1]: ...
948948
def __xor__(self, other: Union[_ListLike, Series[S1]]) -> Series: ...
949+
def __invert__(self) -> Series[bool]: ...
949950
# properties
950951
# @property
951952
# def array(self) -> _npndarray

tests/pandas/test_indexes.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,9 @@ def test_index_isin():
2727
ind = pd.Index([1, 2, 3, 4, 5])
2828
isin = ind.isin([2, 4])
2929
reveal_type(isin, expected_type=np_ndarray_bool)
30+
31+
32+
def test_index_astype():
33+
indi = pd.Index([1, 2, 3])
34+
inds = pd.Index(["a", "b", "c"])
35+
indc = indi.astype(inds.dtype)

tests/pandas/test_series.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,3 +596,12 @@ def test_series_index_isin() -> None:
596596
reveal_type(t2, expected_text="Series[Unknown]")
597597
reveal_type(t3, expected_text="Series[Unknown]")
598598
reveal_type(t4, expected_text="Series[Unknown]")
599+
600+
601+
def test_series_invert() -> None:
602+
s1 = pd.Series([True, False, True])
603+
s2 = ~s1
604+
reveal_type(s2, expected_text="Series[bool]")
605+
s3 = pd.Series([1, 2, 3])
606+
reveal_type(s3[s2], expected_type=pd.Series)
607+
reveal_type(s3.loc[s2], expected_type=pd.Series)

0 commit comments

Comments
 (0)