From 1b1141de873e33731e234c4b92beb8e563f413de Mon Sep 17 00:00:00 2001 From: Aftab Uddin Date: Fri, 22 Mar 2024 08:07:37 +0600 Subject: [PATCH 1/2] Fixed TYP of names argument of concat method and included test Pointing to the issue #883 --- pandas-stubs/core/reshape/concat.pyi | 14 +++++----- tests/test_pandas.py | 39 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/pandas-stubs/core/reshape/concat.pyi b/pandas-stubs/core/reshape/concat.pyi index bdd11b7e3..61e547ac8 100644 --- a/pandas-stubs/core/reshape/concat.pyi +++ b/pandas-stubs/core/reshape/concat.pyi @@ -32,7 +32,7 @@ def concat( ignore_index: bool = ..., keys: Iterable[HashableT2] = ..., levels: Sequence[list[HashableT3] | tuple[HashableT3, ...]] = ..., - names: list[HashableT4] = ..., + names: list[HashableT4] | None = ..., verify_integrity: bool = ..., sort: bool = ..., copy: bool = ..., @@ -46,7 +46,7 @@ def concat( # type: ignore[overload-overlap] # pyright: ignore[reportOverlappin ignore_index: bool = ..., keys: Iterable[HashableT2] = ..., levels: Sequence[list[HashableT3] | tuple[HashableT3, ...]] = ..., - names: list[HashableT4] = ..., + names: list[HashableT4] | None = ..., verify_integrity: bool = ..., sort: bool = ..., copy: bool = ..., @@ -60,7 +60,7 @@ def concat( # type: ignore[overload-overlap] # pyright: ignore[reportOverlappin ignore_index: bool = ..., keys: Iterable[HashableT2] = ..., levels: Sequence[list[HashableT3] | tuple[HashableT3, ...]] = ..., - names: list[HashableT4] = ..., + names: list[HashableT4] | None = ..., verify_integrity: bool = ..., sort: bool = ..., copy: bool = ..., @@ -74,7 +74,7 @@ def concat( ignore_index: bool = ..., keys: Iterable[HashableT2] = ..., levels: Sequence[list[HashableT3] | tuple[HashableT3, ...]] = ..., - names: list[HashableT4] = ..., + names: list[HashableT4] | None = ..., verify_integrity: bool = ..., sort: bool = ..., copy: bool = ..., @@ -88,7 +88,7 @@ def concat( # type: ignore[overload-overlap] ignore_index: bool = ..., keys: Iterable[HashableT2] = ..., levels: Sequence[list[HashableT3] | tuple[HashableT3, ...]] = ..., - names: list[HashableT4] = ..., + names: list[HashableT4] | None = ..., verify_integrity: bool = ..., sort: bool = ..., copy: bool = ..., @@ -102,7 +102,7 @@ def concat( # type: ignore[overload-overlap] ignore_index: bool = ..., keys: Iterable[HashableT2] = ..., levels: Sequence[list[HashableT3] | tuple[HashableT3, ...]] = ..., - names: list[HashableT4] = ..., + names: list[HashableT4] | None = ..., verify_integrity: bool = ..., sort: bool = ..., copy: bool = ..., @@ -119,7 +119,7 @@ def concat( ignore_index: bool = ..., keys: Iterable[HashableT2] = ..., levels: Sequence[list[HashableT3] | tuple[HashableT3, ...]] = ..., - names: list[HashableT4] = ..., + names: list[HashableT4] | None = ..., verify_integrity: bool = ..., sort: bool = ..., copy: bool = ..., diff --git a/tests/test_pandas.py b/tests/test_pandas.py index fddce825e..298ea1c76 100644 --- a/tests/test_pandas.py +++ b/tests/test_pandas.py @@ -98,6 +98,13 @@ def test_types_concat() -> None: ), pd.Series, ) + check( + assert_type( + pd.concat([s, s2], keys=["first", "second"], names=None), + pd.Series, + ), + pd.Series, + ) # Depends on the axis check( @@ -140,6 +147,13 @@ def test_types_concat() -> None: ), pd.DataFrame, ) + check( + assert_type( + pd.concat([df, df2], keys=["first", "second"], names=None), + pd.DataFrame, + ), + pd.DataFrame, + ) check( assert_type( @@ -189,6 +203,12 @@ def test_concat_args() -> None: ), pd.DataFrame, ) + check( + assert_type( + pd.concat([df, df2], keys=["df1", "df2"], names=None), pd.DataFrame + ), + pd.DataFrame, + ) check( assert_type( pd.concat([df, df2], keys=["df1", "df2"], names=[pd.Timedelta(1, "D")]), @@ -196,6 +216,13 @@ def test_concat_args() -> None: ), pd.DataFrame, ) + check( + assert_type( + pd.concat([df, df2], keys=["df1", "df2"], names=None), + pd.DataFrame, + ), + pd.DataFrame, + ) check( assert_type( pd.concat( @@ -248,6 +275,18 @@ def test_concat_args() -> None: ), pd.DataFrame, ) + check( + assert_type( + pd.concat( + [df, df2, df, df2], + keys=[("foo", "one"), ("foo", "two"), ("baz", "one"), ("baz", "two")], + levels=levels, + names=None, + ), + pd.DataFrame, + ), + pd.DataFrame, + ) check( assert_type( From 74df71ab66bbc35f5612d6b28018ba938e14410a Mon Sep 17 00:00:00 2001 From: Aftab Uddin Date: Fri, 22 Mar 2024 22:59:53 +0600 Subject: [PATCH 2/2] Removed the duplicate test --- tests/test_pandas.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tests/test_pandas.py b/tests/test_pandas.py index 298ea1c76..8bb108498 100644 --- a/tests/test_pandas.py +++ b/tests/test_pandas.py @@ -216,13 +216,6 @@ def test_concat_args() -> None: ), pd.DataFrame, ) - check( - assert_type( - pd.concat([df, df2], keys=["df1", "df2"], names=None), - pd.DataFrame, - ), - pd.DataFrame, - ) check( assert_type( pd.concat(