Skip to content

Commit 09bb873

Browse files
GH1039 Clear tests and add typehint for Series.unique with datetime/timedelta
1 parent 779aab6 commit 09bb873

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

pandas-stubs/core/series.pyi

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ from pandas.core.api import (
3838
Int32Dtype as Int32Dtype,
3939
Int64Dtype as Int64Dtype,
4040
)
41+
from pandas.core.arrays import TimedeltaArray
4142
from pandas.core.arrays.base import ExtensionArray
4243
from pandas.core.arrays.categorical import CategoricalAccessor
44+
from pandas.core.arrays.datetimes import DatetimeArray
4345
from pandas.core.arrays.interval import IntervalArray
4446
from pandas.core.base import IndexOpsMixin
4547
from pandas.core.frame import DataFrame
@@ -2113,6 +2115,7 @@ class TimestampSeries(Series[Timestamp]):
21132115
) -> TimestampSeries: ...
21142116
def __mul__(self, other: float | Series[int] | Series[float] | Sequence[float]) -> TimestampSeries: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
21152117
def __truediv__(self, other: float | Series[int] | Series[float] | Sequence[float]) -> TimestampSeries: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
2118+
def unique(self) -> DatetimeArray: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
21162119
def mean( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
21172120
self,
21182121
axis: AxisIndex | None = ...,
@@ -2156,6 +2159,7 @@ class TimedeltaSeries(Series[Timedelta]):
21562159
def __mul__( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
21572160
self, other: num | Sequence[num] | Series[int] | Series[float]
21582161
) -> TimedeltaSeries: ...
2162+
def unique(self) -> TimedeltaArray: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
21592163
def __sub__( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
21602164
self,
21612165
other: (

tests/test_series.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@
5555
)
5656
from tests.extension.decimal.array import DecimalDtype
5757

58+
from pandas.core.arrays.datetimes import DatetimeArray
59+
60+
from pandas.core.arrays.timedeltas import TimedeltaArray
61+
5862
if TYPE_CHECKING:
5963
from pandas.core.series import (
6064
OffsetSeries,
@@ -577,7 +581,7 @@ def test_types_value_counts() -> None:
577581

578582
def test_types_unique() -> None:
579583
s = pd.Series([-10, 2, 2, 3, 10, 10])
580-
s.unique()
584+
check(assert_type(s.unique(), np.ndarray), np.ndarray)
581585

582586

583587
def test_types_apply() -> None:
@@ -3373,3 +3377,16 @@ def test_case_when() -> None:
33733377
]
33743378
)
33753379
check(assert_type(r, pd.Series), pd.Series)
3380+
3381+
3382+
def test_series_unique_timestamp() -> None:
3383+
"""Test type return of Series.unique on Series[datetime64[ns]]."""
3384+
sr = pd.Series(pd.bdate_range('2023-10-10', '2023-10-15'))
3385+
check(assert_type(sr.unique(), DatetimeArray), DatetimeArray)
3386+
3387+
3388+
3389+
def test_series_unique_timedelta() -> None:
3390+
"""Test type return of Series.unique on Series[timedeta64[ns]]."""
3391+
sr = pd.Series([pd.Timedelta("1 days"), pd.Timedelta("3 days")])
3392+
check(assert_type(sr.unique(), TimedeltaArray), TimedeltaArray)

0 commit comments

Comments
 (0)