Skip to content

Commit 2938805

Browse files
GH1139 Series.rename inplace (#1140)
* GH1139 Series.rename inplace * Fix linter * GH1139 PR Feedback * GH1139 PR Feedback * GH1139 PR Feedback * GH1139 PR Feedback * GH1139 PR Feedback * GH1139 PR Feedback
1 parent 5f22e39 commit 2938805

File tree

2 files changed

+69
-12
lines changed

2 files changed

+69
-12
lines changed

pandas-stubs/core/series.pyi

+25-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ from typing import (
2525
)
2626

2727
from _typing import (
28+
Label,
2829
ReplaceValue,
2930
TimeZones,
3031
)
@@ -1039,7 +1040,7 @@ class Series(IndexOpsMixin[S1], NDFrame):
10391040
@overload
10401041
def rename(
10411042
self,
1042-
index: Renamer | Hashable | None = ...,
1043+
index: Callable[[Any], Label],
10431044
*,
10441045
axis: Axis | None = ...,
10451046
copy: bool = ...,
@@ -1050,7 +1051,29 @@ class Series(IndexOpsMixin[S1], NDFrame):
10501051
@overload
10511052
def rename(
10521053
self,
1053-
index: Renamer | Hashable | None = ...,
1054+
index: Mapping[Any, Label],
1055+
*,
1056+
axis: Axis | None = ...,
1057+
copy: bool = ...,
1058+
inplace: Literal[True],
1059+
level: Level | None = ...,
1060+
errors: IgnoreRaise = ...,
1061+
) -> None: ...
1062+
@overload
1063+
def rename(
1064+
self,
1065+
index: Scalar | tuple[Hashable, ...] | None = None,
1066+
*,
1067+
axis: Axis | None = ...,
1068+
copy: bool = ...,
1069+
inplace: Literal[True],
1070+
level: Level | None = ...,
1071+
errors: IgnoreRaise = ...,
1072+
) -> Self: ...
1073+
@overload
1074+
def rename(
1075+
self,
1076+
index: Renamer | Scalar | tuple[Hashable, ...] | None = ...,
10541077
*,
10551078
axis: Axis | None = ...,
10561079
copy: bool = ...,

tests/test_series.py

+44-10
Original file line numberDiff line numberDiff line change
@@ -1137,7 +1137,7 @@ def test_types_set_flags() -> None:
11371137

11381138
def test_types_getitem() -> None:
11391139
s = pd.Series({"key": [0, 1, 2, 3]})
1140-
key: list[int] = s["key"]
1140+
check(assert_type(s["key"], Any), list)
11411141
s2 = pd.Series([0, 1, 2, 3])
11421142
check(assert_type(s2[0], int), np.integer)
11431143
check(assert_type(s[:2], pd.Series), pd.Series)
@@ -1180,12 +1180,28 @@ def test_types_rename_axis() -> None:
11801180

11811181

11821182
def test_types_values() -> None:
1183-
n1: np.ndarray | ExtensionArray = pd.Series([1, 2, 3]).values
1184-
n2: np.ndarray | ExtensionArray = pd.Series(list("aabc")).values
1185-
n3: np.ndarray | ExtensionArray = pd.Series(list("aabc")).astype("category").values
1186-
n4: np.ndarray | ExtensionArray = pd.Series(
1187-
pd.date_range("20130101", periods=3, tz="US/Eastern")
1188-
).values
1183+
check(
1184+
assert_type(pd.Series([1, 2, 3]).values, Union[ExtensionArray, np.ndarray]),
1185+
np.ndarray,
1186+
)
1187+
check(
1188+
assert_type(pd.Series(list("aabc")).values, Union[np.ndarray, ExtensionArray]),
1189+
np.ndarray,
1190+
)
1191+
check(
1192+
assert_type(
1193+
pd.Series(list("aabc")).astype("category").values,
1194+
Union[np.ndarray, ExtensionArray],
1195+
),
1196+
pd.Categorical,
1197+
)
1198+
check(
1199+
assert_type(
1200+
pd.Series(pd.date_range("20130101", periods=3, tz="US/Eastern")).values,
1201+
Union[np.ndarray, ExtensionArray],
1202+
),
1203+
np.ndarray,
1204+
)
11891205

11901206

11911207
def test_types_rename() -> None:
@@ -1211,11 +1227,29 @@ def add1(x: int) -> int:
12111227
s5 = pd.Series([1, 2, 3]).rename({1: 10})
12121228
check(assert_type(s5, "pd.Series[int]"), pd.Series, np.integer)
12131229
# inplace
1214-
# TODO fix issue with inplace=True returning a Series, cf pandas #60942
1215-
s6: None = pd.Series([1, 2, 3]).rename("A", inplace=True)
1230+
check(
1231+
assert_type(pd.Series([1, 2, 3]).rename("A", inplace=True), "pd.Series[int]"),
1232+
pd.Series,
1233+
np.integer,
1234+
)
1235+
check(
1236+
assert_type(pd.Series([1, 2, 3]).rename({1: 4, 2: 5}, inplace=True), None),
1237+
type(None),
1238+
)
1239+
check(
1240+
assert_type(
1241+
pd.Series([1, 2, 3]).rename(index=None, inplace=True), "pd.Series[int]"
1242+
),
1243+
pd.Series,
1244+
np.integer,
1245+
)
1246+
check(
1247+
assert_type(pd.Series([1, 2, 3]).rename(lambda x: x**2, inplace=True), None),
1248+
type(None),
1249+
)
12161250

12171251
if TYPE_CHECKING_INVALID_USAGE:
1218-
s7 = pd.Series([1, 2, 3]).rename({1: [3, 4, 5]}) # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
1252+
s7 = pd.Series([1, 2, 3]).rename({1: [3, 4, 5]}) # type: ignore[dict-item] # pyright: ignore[reportArgumentType]
12191253

12201254

12211255
def test_types_ne() -> None:

0 commit comments

Comments
 (0)