From c7192f655d8557143fa82cfff95cf3c57666e571 Mon Sep 17 00:00:00 2001 From: Marco Gorelli <33491632+MarcoGorelli@users.noreply.github.com> Date: Sun, 2 Mar 2025 14:56:21 +0000 Subject: [PATCH 1/2] type align --- pandas-stubs/core/frame.pyi | 6 +----- pandas-stubs/core/series.pyi | 6 +----- tests/test_frame.py | 3 +++ tests/test_series.py | 11 +++++++++++ 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 344dd3a39..0dcdb0047 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -732,11 +732,7 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack): axis: Axis | None = ..., level: Level | None = ..., copy: _bool = ..., - fill_value=..., - method: FillnaOptions | None = ..., - limit: int | None = ..., - fill_axis: Axis = ..., - broadcast_axis: Axis | None = ..., + fill_value: Hashable | None = ..., ) -> tuple[Self, NDFrameT]: ... def reindex( self, diff --git a/pandas-stubs/core/series.pyi b/pandas-stubs/core/series.pyi index 2ade583c7..bf090a5fa 100644 --- a/pandas-stubs/core/series.pyi +++ b/pandas-stubs/core/series.pyi @@ -1034,11 +1034,7 @@ class Series(IndexOpsMixin[S1], NDFrame): axis: Axis | None = ..., level: Level | None = ..., copy: _bool = ..., - fill_value=..., - method: FillnaOptions | None = ..., - limit: int | None = ..., - fill_axis: AxisIndex = ..., - broadcast_axis: AxisIndex | None = ..., + fill_value: Hashable | None = ..., ) -> tuple[Series, Series]: ... @overload def rename( diff --git a/tests/test_frame.py b/tests/test_frame.py index e506528e3..c97fa47cf 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -3662,6 +3662,9 @@ def test_align() -> None: aligned_df0, aligned_s0 = df0.align(s0, axis="index") check(assert_type(aligned_df0, pd.DataFrame), pd.DataFrame) check(assert_type(aligned_s0, "pd.Series[str]"), pd.Series, str) + aligned_df0, aligned_s0 = df0.align(s0, axis="index", fill_value=0) + check(assert_type(aligned_df0, pd.DataFrame), pd.DataFrame) + check(assert_type(aligned_s0, "pd.Series[str]"), pd.Series, str) s1 = pd.Series(data={"A": "A", "D": "D"}) aligned_df0, aligned_s1 = df0.align(s1, axis="columns") diff --git a/tests/test_series.py b/tests/test_series.py index 0c700fcbd..c76fc9856 100644 --- a/tests/test_series.py +++ b/tests/test_series.py @@ -3672,3 +3672,14 @@ def test_info() -> None: check(assert_type(s.info(show_counts=True), None), type(None)) check(assert_type(s.info(show_counts=False), None), type(None)) check(assert_type(s.info(show_counts=None), None), type(None)) + + +def test_align() -> None: + s0 = pd.Series(data={0: 1, 3: 3, 5: 5}) + s1 = pd.Series(data={0: 1, 2: 2}) + aligned_s0, aligned_s1 = s0.align(s1) + check(assert_type(aligned_s0, pd.Series), pd.Series) + check(assert_type(aligned_s1, pd.Series), pd.Series) + aligned_s0, aligned_s1 = s0.align(s1, fill_value=0, axis=0, level=0, copy=False) + check(assert_type(aligned_s0, pd.Series), pd.Series) + check(assert_type(aligned_s1, pd.Series), pd.Series) From 768384a00127d10233380ffa7127d3a220df9a8d Mon Sep 17 00:00:00 2001 From: Marco Gorelli <33491632+MarcoGorelli@users.noreply.github.com> Date: Tue, 4 Mar 2025 10:17:19 +0000 Subject: [PATCH 2/2] prefer Scalar | NAType | None --- pandas-stubs/core/frame.pyi | 2 +- pandas-stubs/core/series.pyi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index fafc78c99..4c4fb3d76 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -732,7 +732,7 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack): axis: Axis | None = ..., level: Level | None = ..., copy: _bool = ..., - fill_value: Hashable | None = ..., + fill_value: Scalar | NAType | None = ..., ) -> tuple[Self, NDFrameT]: ... def reindex( self, diff --git a/pandas-stubs/core/series.pyi b/pandas-stubs/core/series.pyi index 6014fc4f7..69779d5ef 100644 --- a/pandas-stubs/core/series.pyi +++ b/pandas-stubs/core/series.pyi @@ -1034,7 +1034,7 @@ class Series(IndexOpsMixin[S1], NDFrame): axis: Axis | None = ..., level: Level | None = ..., copy: _bool = ..., - fill_value: Hashable | None = ..., + fill_value: Scalar | NAType | None = ..., ) -> tuple[Series, Series]: ... @overload def rename(