Skip to content

Commit f2d42ef

Browse files
GH1379 Drop OffsetSeries replacing it with Series[BaseOffset]
1 parent b984cba commit f2d42ef

File tree

4 files changed

+30
-24
lines changed

4 files changed

+30
-24
lines changed

pandas-stubs/_libs/tslibs/period.pyi

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ from pandas import (
1212
Timedelta,
1313
TimedeltaIndex,
1414
)
15-
from pandas.core.series import (
16-
OffsetSeries,
17-
)
1815
from typing_extensions import TypeAlias
1916

2017
from pandas._libs.tslibs import NaTType
@@ -97,7 +94,7 @@ class Period(PeriodMixin):
9794
def __add__(self, other: Index) -> PeriodIndex: ...
9895
@overload
9996
def __add__(
100-
self, other: OffsetSeries | Series[Timedelta]
97+
self, other: Series[BaseOffset] | Series[Timedelta]
10198
) -> Series[Period]: ... # pyrefly: ignore[bad-specialization]
10299
# ignore[misc] here because we know all other comparisons
103100
# are False, so we use Literal[False]

pandas-stubs/core/series.pyi

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,7 @@ class Series(IndexOpsMixin[S1], NDFrame):
848848
@overload
849849
def diff(self: Series[Timedelta], periods: int = ...) -> Series[Timedelta]: ... # type: ignore[overload-overlap]
850850
@overload
851-
def diff(self: Series[Period], periods: int = ...) -> OffsetSeries: ... # type: ignore[overload-overlap]
851+
def diff(self: Series[Period], periods: int = ...) -> Series[BaseOffset]: ... # type: ignore[overload-overlap]
852852
@overload
853853
def diff(self, periods: int = ...) -> Series[float]: ...
854854
def autocorr(self, lag: int = 1) -> float: ...
@@ -1061,7 +1061,7 @@ class Series(IndexOpsMixin[S1], NDFrame):
10611061
convertDType: _bool = ...,
10621062
args: tuple = ...,
10631063
**kwargs: Any,
1064-
) -> OffsetSeries: ...
1064+
) -> Series[BaseOffset]: ...
10651065
@overload
10661066
def apply(
10671067
self,
@@ -2014,6 +2014,10 @@ class Series(IndexOpsMixin[S1], NDFrame):
20142014
other: _str | Sequence[_str] | np_ndarray_str | Index[_str] | Series[_str],
20152015
) -> Series[_str]: ...
20162016
@overload
2017+
def __radd__(self: Series[BaseOffset], other: Period) -> Series[Period]: ...
2018+
@overload
2019+
def __radd__(self: Series[BaseOffset], other: BaseOffset) -> Series[BaseOffset]: ...
2020+
@overload
20172021
def radd(
20182022
self: Series[Never],
20192023
other: complex | _ListLike | Index | Series,
@@ -4669,6 +4673,22 @@ class Series(IndexOpsMixin[S1], NDFrame):
46694673
**kwargs,
46704674
) -> np_1darray[np.int64]: ...
46714675
@overload
4676+
def to_numpy(
4677+
self: Series[BaseOffset],
4678+
dtype: None = None,
4679+
copy: bool = False,
4680+
na_value: Scalar = ...,
4681+
**kwargs,
4682+
) -> np_1darray[np.object_]: ...
4683+
@overload
4684+
def to_numpy(
4685+
self: Series[BaseOffset],
4686+
dtype: type[np.bytes_],
4687+
copy: bool = False,
4688+
na_value: Scalar = ...,
4689+
**kwargs,
4690+
) -> np_1darray[np.bytes_]: ...
4691+
@overload
46724692
def to_numpy( # pyright: ignore[reportIncompatibleMethodOverride]
46734693
self,
46744694
dtype: DTypeLike | None = None,
@@ -4762,14 +4782,6 @@ class _SeriesSubclassBase(Series[S1], Generic[S1, GenericT_co]):
47624782
**kwargs,
47634783
) -> np_1darray: ...
47644784

4765-
class OffsetSeries(_SeriesSubclassBase[BaseOffset, np.object_]):
4766-
@overload # type: ignore[override]
4767-
def __radd__(self, other: Period) -> Series[Period]: ...
4768-
@overload
4769-
def __radd__( # pyright: ignore[reportIncompatibleMethodOverride]
4770-
self, other: BaseOffset
4771-
) -> OffsetSeries: ...
4772-
47734785
class IntervalSeries(
47744786
_SeriesSubclassBase[Interval[_OrderableT], np.object_], Generic[_OrderableT]
47754787
):

tests/series/test_series.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@
7272
)
7373

7474
if TYPE_CHECKING:
75-
from pandas.core.series import OffsetSeries
76-
7775
from tests import (
7876
BooleanDtypeArg,
7977
BytesDtypeArg,
@@ -89,9 +87,6 @@
8987
VoidDtypeArg,
9088
)
9189

92-
else:
93-
OffsetSeries: TypeAlias = pd.Series
94-
9590
if not PD_LTE_23:
9691
from pandas.errors import Pandas4Warning # type: ignore[attr-defined] # pyright: ignore # isort: skip
9792
else:
@@ -3487,7 +3482,7 @@ def test_diff() -> None:
34873482
pd.Series(
34883483
pd.period_range(start="2017-01-01", end="2017-02-01", freq="D")
34893484
).diff(),
3490-
"OffsetSeries",
3485+
"pd.Series[BaseOffset]",
34913486
),
34923487
pd.Series,
34933488
BaseOffset,
@@ -3499,7 +3494,7 @@ def test_diff() -> None:
34993494
pd.Series(
35003495
pd.period_range(start="2017-01-01", end="2017-02-01", freq="D")
35013496
).diff(),
3502-
"OffsetSeries",
3497+
"pd.Series[BaseOffset]",
35033498
),
35043499
pd.Series,
35053500
BaseOffset,
@@ -3672,7 +3667,9 @@ def test_apply_dateoffset() -> None:
36723667
months = [1, 2, 3]
36733668
s = pd.Series(months)
36743669
check(
3675-
assert_type(s.apply(lambda x: pd.DateOffset(months=x)), "OffsetSeries"),
3670+
assert_type(
3671+
s.apply(lambda x: pd.DateOffset(months=x)), "pd.Series[BaseOffset]"
3672+
),
36763673
pd.Series,
36773674
pd.DateOffset,
36783675
)

tests/test_timefuncs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252
if TYPE_CHECKING:
5353
from pandas.core.series import (
5454
IntervalSeries,
55-
OffsetSeries,
5655
)
5756

5857
if not PD_LTE_23:
@@ -947,7 +946,8 @@ def test_series_types_to_numpy() -> None:
947946
ts_s = pd.to_datetime(pd.Series(["2020-01-01", "2020-01-02"]))
948947
p_s = pd.Series(pd.period_range("2012-1-1", periods=10, freq="D"))
949948
o_s = cast(
950-
"OffsetSeries", pd.Series([pd.DateOffset(days=1), pd.DateOffset(days=2)])
949+
"pd.Series[BaseOffset]",
950+
pd.Series([pd.DateOffset(days=1), pd.DateOffset(days=2)]),
951951
)
952952
i_s = cast("IntervalSeries", pd.interval_range(1, 2).to_series())
953953

0 commit comments

Comments
 (0)