From d6ec2ba227fd454f4c5dd5149d897a05bdb0d6b7 Mon Sep 17 00:00:00 2001 From: zmoon Date: Wed, 1 Mar 2023 17:41:11 -0700 Subject: [PATCH 1/4] Add test for Series as CategoricalDtype --- tests/test_series.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/test_series.py b/tests/test_series.py index 169fddb5d..d5850eaf6 100644 --- a/tests/test_series.py +++ b/tests/test_series.py @@ -1591,3 +1591,15 @@ def test_updated_astype() -> None: pd.Series, Decimal, ) + + # Categorical + check( + assert_type(s.astype(pd.CategoricalDtype()), "pd.Series[Any]"), + pd.Series, + pd.CategoricalDtype, + ) + check( + assert_type(s.astype("category"), "pd.Series[Any]"), + pd.Series, + pd.CategoricalDtype, + ) From db99baf403999b8365f5733a86f569b09b9a5fb7 Mon Sep 17 00:00:00 2001 From: zmoon Date: Wed, 1 Mar 2023 17:43:49 -0700 Subject: [PATCH 2/4] Add `CategoryDtypeArg` to `AstypeArg` --- pandas-stubs/_typing.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/pandas-stubs/_typing.pyi b/pandas-stubs/_typing.pyi index 935d43470..7cf6eb9d1 100644 --- a/pandas-stubs/_typing.pyi +++ b/pandas-stubs/_typing.pyi @@ -160,6 +160,7 @@ AstypeArg: TypeAlias = ( | TimedeltaDtypeArg | TimestampDtypeArg | CategoricalDtype + | CategoryDtypeArg | ExtensionDtype ) # DtypeArg specifies all allowable dtypes in a functions its dtype argument From 48177b53e4961ab2e10a10f7fd37420e6af8ae46 Mon Sep 17 00:00:00 2001 From: zmoon Date: Wed, 1 Mar 2023 20:20:47 -0700 Subject: [PATCH 3/4] Apply review suggestions --- pandas-stubs/_typing.pyi | 3 +-- tests/test_series.py | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/pandas-stubs/_typing.pyi b/pandas-stubs/_typing.pyi index 7cf6eb9d1..8c8fee8b4 100644 --- a/pandas-stubs/_typing.pyi +++ b/pandas-stubs/_typing.pyi @@ -148,7 +148,7 @@ ComplexDtypeArg: TypeAlias = ( ) TimedeltaDtypeArg: TypeAlias = Literal["timedelta64[ns]"] TimestampDtypeArg: TypeAlias = Literal["datetime64[ns]"] -CategoryDtypeArg: TypeAlias = Literal["category"] +CategoryDtypeArg: TypeAlias = CategoricalDtype | Literal["category"] AstypeArg: TypeAlias = ( BooleanDtypeArg @@ -159,7 +159,6 @@ AstypeArg: TypeAlias = ( | ComplexDtypeArg | TimedeltaDtypeArg | TimestampDtypeArg - | CategoricalDtype | CategoryDtypeArg | ExtensionDtype ) diff --git a/tests/test_series.py b/tests/test_series.py index d5850eaf6..63c2cd011 100644 --- a/tests/test_series.py +++ b/tests/test_series.py @@ -1596,10 +1596,10 @@ def test_updated_astype() -> None: check( assert_type(s.astype(pd.CategoricalDtype()), "pd.Series[Any]"), pd.Series, - pd.CategoricalDtype, + np.integer, ) check( assert_type(s.astype("category"), "pd.Series[Any]"), pd.Series, - pd.CategoricalDtype, + np.integer, ) From 3770f4eaed8c4e8d0aea7c5dcf11177ea0f275a8 Mon Sep 17 00:00:00 2001 From: zmoon Date: Thu, 2 Mar 2023 15:44:28 -0700 Subject: [PATCH 4/4] Add test for `DataFrame.astype('category')` --- tests/test_frame.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_frame.py b/tests/test_frame.py index 9be9b77e5..254cfc514 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -2442,3 +2442,5 @@ def test_astype() -> None: assert_type(ab.astype({"col1": "int32", "col2": str}), "pd.DataFrame"), pd.DataFrame, ) + check(assert_type(s.astype(pd.CategoricalDtype()), "pd.DataFrame"), pd.DataFrame) + check(assert_type(s.astype("category"), "pd.DataFrame"), pd.DataFrame) # GH 559