From 84ccb39b57c8c59109df7ed2ba485c15537e9808 Mon Sep 17 00:00:00 2001 From: brzegorzTesco Date: Thu, 21 Nov 2024 12:39:20 +0100 Subject: [PATCH 1/6] Update _typing.pyi: add "cross" option to JoinHow --- pandas-stubs/_typing.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas-stubs/_typing.pyi b/pandas-stubs/_typing.pyi index c4ee25c4b..6fe1ade63 100644 --- a/pandas-stubs/_typing.pyi +++ b/pandas-stubs/_typing.pyi @@ -729,8 +729,8 @@ InterpolateOptions: TypeAlias = Literal[ ReplaceMethod: TypeAlias = Literal["pad", "ffill", "bfill"] SortKind: TypeAlias = Literal["quicksort", "mergesort", "heapsort", "stable"] NaPosition: TypeAlias = Literal["first", "last"] -JoinHow: TypeAlias = Literal["left", "right", "outer", "inner"] -MergeHow: TypeAlias = JoinHow | Literal["cross"] +JoinHow: TypeAlias = Literal["left", "right", "outer", "inner", "cross"] +MergeHow: TypeAlias = JoinHow JsonFrameOrient: TypeAlias = Literal[ "split", "records", "index", "columns", "values", "table" ] From dbda093191d4bc82aa5b7c984a1572f75f06f6f0 Mon Sep 17 00:00:00 2001 From: brzegorzTesco Date: Fri, 22 Nov 2024 10:44:36 +0100 Subject: [PATCH 2/6] Removed "cross" option from JoinHow and added it back to MergeHow --- pandas-stubs/_typing.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas-stubs/_typing.pyi b/pandas-stubs/_typing.pyi index 6fe1ade63..c4ee25c4b 100644 --- a/pandas-stubs/_typing.pyi +++ b/pandas-stubs/_typing.pyi @@ -729,8 +729,8 @@ InterpolateOptions: TypeAlias = Literal[ ReplaceMethod: TypeAlias = Literal["pad", "ffill", "bfill"] SortKind: TypeAlias = Literal["quicksort", "mergesort", "heapsort", "stable"] NaPosition: TypeAlias = Literal["first", "last"] -JoinHow: TypeAlias = Literal["left", "right", "outer", "inner", "cross"] -MergeHow: TypeAlias = JoinHow +JoinHow: TypeAlias = Literal["left", "right", "outer", "inner"] +MergeHow: TypeAlias = JoinHow | Literal["cross"] JsonFrameOrient: TypeAlias = Literal[ "split", "records", "index", "columns", "values", "table" ] From 64b7dab608c40cef88e4d17c28ea430fdb95cd64 Mon Sep 17 00:00:00 2001 From: brzegorzTesco Date: Fri, 22 Nov 2024 10:45:16 +0100 Subject: [PATCH 3/6] Replaced JoinHow with MergeHow in frame.join --- pandas-stubs/core/frame.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 295aad8b0..99d3e398b 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -1421,7 +1421,7 @@ class DataFrame(NDFrame, OpsMixin): self, other: DataFrame | Series | list[DataFrame | Series], on: _str | list[_str] | None = ..., - how: JoinHow = ..., + how: MergeHow = ..., lsuffix: _str = ..., rsuffix: _str = ..., sort: _bool = ..., From 58071999b20acb21726e070d2c784e4e3ea2c910 Mon Sep 17 00:00:00 2001 From: brzegorzTesco Date: Fri, 22 Nov 2024 10:46:03 +0100 Subject: [PATCH 4/6] Added a test for join "how" --- tests/test_frame.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/test_frame.py b/tests/test_frame.py index f67294d53..a8af58434 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -2345,6 +2345,16 @@ def test_join() -> None: check(assert_type(left.join(right, validate="1:m"), pd.DataFrame), pd.DataFrame) +def test_types_join() -> None: + df1 = pd.DataFrame({"A":[1,2], "B": ["test", "test"]}) + df2 = pd.DataFrame({"C":[2, 3], "D": ["test", "test"]}) + df1.join(df2, how="cross") + df1.join(df2, how="inner") + df1.join(df2, how="outer") + df1.join(df2, how="left") + df1.join(df2, how="right") + + def test_types_ffill() -> None: # GH 44 df = pd.DataFrame([[1, 2, 3]]) From f00b7c65e493c8fd1c9f9611d37f92dd2b97a96d Mon Sep 17 00:00:00 2001 From: brzegorzTesco Date: Mon, 25 Nov 2024 11:50:27 +0100 Subject: [PATCH 5/6] Update test_frame.py: used check(assert_type pattern in unit test --- tests/test_frame.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_frame.py b/tests/test_frame.py index a8af58434..c98a4f4cc 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -2348,11 +2348,11 @@ def test_join() -> None: def test_types_join() -> None: df1 = pd.DataFrame({"A":[1,2], "B": ["test", "test"]}) df2 = pd.DataFrame({"C":[2, 3], "D": ["test", "test"]}) - df1.join(df2, how="cross") - df1.join(df2, how="inner") - df1.join(df2, how="outer") - df1.join(df2, how="left") - df1.join(df2, how="right") + check(assert_type(df1.join(df2, how="cross"), pd.DataFrame), pd.DataFrame) + check(assert_type(df1.join(df2, how="inner"), pd.DataFrame), pd.DataFrame) + check(assert_type(df1.join(df2, how="outer"), pd.DataFrame), pd.DataFrame) + check(assert_type(df1.join(df2, how="left"), pd.DataFrame), pd.DataFrame) + check(assert_type(df1.join(df2, how="right"), pd.DataFrame), pd.DataFrame) def test_types_ffill() -> None: From 752bc0549a16aea2dfcdd9ce35a9f05f126f4bd5 Mon Sep 17 00:00:00 2001 From: brzegorzTesco Date: Tue, 26 Nov 2024 11:12:23 +0100 Subject: [PATCH 6/6] Update test_frame.py Fix formatting --- tests/test_frame.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_frame.py b/tests/test_frame.py index c98a4f4cc..2983040b5 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -2346,8 +2346,8 @@ def test_join() -> None: def test_types_join() -> None: - df1 = pd.DataFrame({"A":[1,2], "B": ["test", "test"]}) - df2 = pd.DataFrame({"C":[2, 3], "D": ["test", "test"]}) + df1 = pd.DataFrame({"A": [1, 2], "B": ["test", "test"]}) + df2 = pd.DataFrame({"C": [2, 3], "D": ["test", "test"]}) check(assert_type(df1.join(df2, how="cross"), pd.DataFrame), pd.DataFrame) check(assert_type(df1.join(df2, how="inner"), pd.DataFrame), pd.DataFrame) check(assert_type(df1.join(df2, how="outer"), pd.DataFrame), pd.DataFrame)