From db6b193bfa446c955941bf2f21168b1fe946b7c0 Mon Sep 17 00:00:00 2001 From: Ihor Dotsenko Date: Mon, 18 Sep 2023 15:53:08 +0000 Subject: [PATCH 1/5] Added `Timestamp` to `Series#__getitem__` #773 --- pandas-stubs/core/series.pyi | 2 +- tests/test_series.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pandas-stubs/core/series.pyi b/pandas-stubs/core/series.pyi index 149d90fb8..f2c6d7e6d 100644 --- a/pandas-stubs/core/series.pyi +++ b/pandas-stubs/core/series.pyi @@ -360,7 +360,7 @@ class Series(IndexOpsMixin[S1], NDFrame): | tuple[Hashable | slice, ...], ) -> Self: ... @overload - def __getitem__(self, idx: int | _str) -> S1: ... + def __getitem__(self, idx: int | _str | Timestamp) -> S1: ... def __setitem__(self, key, value) -> None: ... def repeat( self, repeats: int | list[int], axis: AxisIndex | None = ... diff --git a/tests/test_series.py b/tests/test_series.py index 43fdd4afb..0927480c5 100644 --- a/tests/test_series.py +++ b/tests/test_series.py @@ -998,6 +998,11 @@ def test_types_getitem() -> None: value: int = s2[0] s3: pd.Series = s[:2] +def test_types_getitem_by_timestamp() -> None: + index = pd.date_range("2018-01-01", periods=2, freq="D") + series = pd.Series(range(2), index=index) + value: int = series[index[-1]] + def test_types_eq() -> None: s1 = pd.Series([1, 2, 3]) From 86128a5087cd90dc68419180ea89686bce619c32 Mon Sep 17 00:00:00 2001 From: Ihor Dotsenko Date: Mon, 18 Sep 2023 20:45:12 +0300 Subject: [PATCH 2/5] Fixed code review comments --- tests/test_series.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_series.py b/tests/test_series.py index 0927480c5..d982e2e5e 100644 --- a/tests/test_series.py +++ b/tests/test_series.py @@ -998,10 +998,11 @@ def test_types_getitem() -> None: value: int = s2[0] s3: pd.Series = s[:2] + def test_types_getitem_by_timestamp() -> None: index = pd.date_range("2018-01-01", periods=2, freq="D") series = pd.Series(range(2), index=index) - value: int = series[index[-1]] + check(assert_type(series[index[-1]], int), int) def test_types_eq() -> None: From 7a515043d38925cad935d90a2326c206df0a85d1 Mon Sep 17 00:00:00 2001 From: Ihor Dotsenko Date: Tue, 19 Sep 2023 20:40:39 +0300 Subject: [PATCH 3/5] Replaced `int | _str` with `Scalar` --- pandas-stubs/core/series.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas-stubs/core/series.pyi b/pandas-stubs/core/series.pyi index f2c6d7e6d..7378b6713 100644 --- a/pandas-stubs/core/series.pyi +++ b/pandas-stubs/core/series.pyi @@ -360,7 +360,7 @@ class Series(IndexOpsMixin[S1], NDFrame): | tuple[Hashable | slice, ...], ) -> Self: ... @overload - def __getitem__(self, idx: int | _str | Timestamp) -> S1: ... + def __getitem__(self, idx: Scalar | Timestamp) -> S1: ... def __setitem__(self, key, value) -> None: ... def repeat( self, repeats: int | list[int], axis: AxisIndex | None = ... From 2ad5f92fdc6ef73b05ce4d229b1f90c39595fd72 Mon Sep 17 00:00:00 2001 From: Ihor Dotsenko Date: Tue, 19 Sep 2023 20:43:40 +0300 Subject: [PATCH 4/5] Removed `Timestamp` (it's included in `Scalar`) --- pandas-stubs/core/series.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas-stubs/core/series.pyi b/pandas-stubs/core/series.pyi index 7378b6713..12f8f9524 100644 --- a/pandas-stubs/core/series.pyi +++ b/pandas-stubs/core/series.pyi @@ -360,7 +360,7 @@ class Series(IndexOpsMixin[S1], NDFrame): | tuple[Hashable | slice, ...], ) -> Self: ... @overload - def __getitem__(self, idx: Scalar | Timestamp) -> S1: ... + def __getitem__(self, idx: Scalar) -> S1: ... def __setitem__(self, key, value) -> None: ... def repeat( self, repeats: int | list[int], axis: AxisIndex | None = ... From ea1c635416d05aa832bb02f84044e1a14397a640 Mon Sep 17 00:00:00 2001 From: Ihor Dotsenko Date: Tue, 19 Sep 2023 21:00:32 +0300 Subject: [PATCH 5/5] Fixed failing tests by replacing `int` with `np.integer` --- tests/test_series.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_series.py b/tests/test_series.py index d982e2e5e..e5262fc79 100644 --- a/tests/test_series.py +++ b/tests/test_series.py @@ -1002,7 +1002,7 @@ def test_types_getitem() -> None: def test_types_getitem_by_timestamp() -> None: index = pd.date_range("2018-01-01", periods=2, freq="D") series = pd.Series(range(2), index=index) - check(assert_type(series[index[-1]], int), int) + check(assert_type(series[index[-1]], int), np.integer) def test_types_eq() -> None: