Skip to content

Commit e610b76

Browse files
GH1039 Clear tests and add typehint for Series.unique with datetime/timedelta (#1040)
* GH1039 Clear tests and add typehint for Series.unique with datetime/timedelta * Formatting
1 parent 779aab6 commit e610b76

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-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: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
ExtensionArray,
2929
ExtensionDtype,
3030
)
31+
from pandas.core.arrays.datetimes import DatetimeArray
32+
from pandas.core.arrays.timedeltas import TimedeltaArray
3133
from pandas.core.window import ExponentialMovingWindow
3234
import pytest
3335
from typing_extensions import (
@@ -577,7 +579,7 @@ def test_types_value_counts() -> None:
577579

578580
def test_types_unique() -> None:
579581
s = pd.Series([-10, 2, 2, 3, 10, 10])
580-
s.unique()
582+
check(assert_type(s.unique(), np.ndarray), np.ndarray)
581583

582584

583585
def test_types_apply() -> None:
@@ -3373,3 +3375,15 @@ def test_case_when() -> None:
33733375
]
33743376
)
33753377
check(assert_type(r, pd.Series), pd.Series)
3378+
3379+
3380+
def test_series_unique_timestamp() -> None:
3381+
"""Test type return of Series.unique on Series[datetime64[ns]]."""
3382+
sr = pd.Series(pd.bdate_range("2023-10-10", "2023-10-15"))
3383+
check(assert_type(sr.unique(), DatetimeArray), DatetimeArray)
3384+
3385+
3386+
def test_series_unique_timedelta() -> None:
3387+
"""Test type return of Series.unique on Series[timedeta64[ns]]."""
3388+
sr = pd.Series([pd.Timedelta("1 days"), pd.Timedelta("3 days")])
3389+
check(assert_type(sr.unique(), TimedeltaArray), TimedeltaArray)

0 commit comments

Comments
 (0)