From 72b22b527c7f6bdb55520002e9d62387df4d055c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20W=C3=B6rtwein?= Date: Tue, 26 Dec 2023 13:05:51 -0500 Subject: [PATCH] Series(Mapping) (#843) * Series(Mapping) * Hashable keys * empty * incremental changes * _str --- pandas-stubs/core/series.pyi | 11 +++++++---- tests/test_series.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/pandas-stubs/core/series.pyi b/pandas-stubs/core/series.pyi index 40738979..c40f5820 100644 --- a/pandas-stubs/core/series.pyi +++ b/pandas-stubs/core/series.pyi @@ -228,6 +228,7 @@ class Series(IndexOpsMixin[S1], NDFrame): cls, data: DatetimeIndex | Sequence[np.datetime64 | datetime] + | dict[HashableT1, np.datetime64 | datetime] | np.datetime64 | datetime, index: Axes | None = ..., @@ -261,6 +262,7 @@ class Series(IndexOpsMixin[S1], NDFrame): cls, data: TimedeltaIndex | Sequence[np.timedelta64 | timedelta] + | dict[HashableT1, np.timedelta64 | timedelta] | np.timedelta64 | timedelta, index: Axes | None = ..., @@ -274,7 +276,8 @@ class Series(IndexOpsMixin[S1], NDFrame): cls, data: IntervalIndex[Interval[_OrderableT]] | Interval[_OrderableT] - | Sequence[Interval[_OrderableT]], + | Sequence[Interval[_OrderableT]] + | dict[HashableT1, Interval[_OrderableT]], index: Axes | None = ..., *, dtype: Literal["Interval"] = ..., @@ -284,7 +287,7 @@ class Series(IndexOpsMixin[S1], NDFrame): @overload def __new__( cls, - data: Scalar | _ListLike | dict[int, Any] | dict[_str, Any] | None, + data: Scalar | _ListLike | dict[HashableT1, Any] | None, index: Axes | None = ..., *, dtype: type[S1], @@ -294,7 +297,7 @@ class Series(IndexOpsMixin[S1], NDFrame): @overload def __new__( cls, - data: S1 | _ListLike[S1] | dict[int, S1] | dict[_str, S1], + data: S1 | _ListLike[S1] | dict[HashableT1, S1], index: Axes | None = ..., *, dtype: Dtype = ..., @@ -304,7 +307,7 @@ class Series(IndexOpsMixin[S1], NDFrame): @overload def __new__( cls, - data: Scalar | _ListLike | dict[int, Any] | dict[_str, Any] | None = ..., + data: Scalar | _ListLike | dict[HashableT1, Any] | None = ..., index: Axes | None = ..., *, dtype: Dtype = ..., diff --git a/tests/test_series.py b/tests/test_series.py index cf376221..f93a4a8f 100644 --- a/tests/test_series.py +++ b/tests/test_series.py @@ -2863,6 +2863,35 @@ def test_series_new_empty() -> None: check(assert_type(pd.Series(), "pd.Series[Any]"), pd.Series) +def test_series_mapping() -> None: + # GH 831 + check( + assert_type( + pd.Series( + { + pd.Timestamp(2023, 1, 2): "b", + } + ), + "pd.Series[str]", + ), + pd.Series, + str, + ) + + check( + assert_type( + pd.Series( + { + ("a", "b"): "c", + } + ), + "pd.Series[str]", + ), + pd.Series, + str, + ) + + def test_timedeltaseries_operators() -> None: series = pd.Series([pd.Timedelta(days=1)]) check(