diff --git a/pandas/core/dtypes/generic.py b/pandas/core/dtypes/generic.py index be78ee7e08421..47a6009590d8b 100644 --- a/pandas/core/dtypes/generic.py +++ b/pandas/core/dtypes/generic.py @@ -5,6 +5,7 @@ if TYPE_CHECKING: from pandas import ( + Categorical, CategoricalIndex, DataFrame, DatetimeIndex, @@ -19,6 +20,13 @@ TimedeltaIndex, UInt64Index, ) + from pandas.core.arrays import ( + DatetimeArray, + ExtensionArray, + PandasArray, + PeriodArray, + TimedeltaArray, + ) from pandas.core.generic import NDFrame @@ -111,16 +119,32 @@ def _check(cls, inst) -> bool: "Type[DataFrame]", create_pandas_abc_type("ABCDataFrame", "_typ", ("dataframe",)) ) -ABCCategorical = create_pandas_abc_type("ABCCategorical", "_typ", ("categorical")) -ABCDatetimeArray = create_pandas_abc_type("ABCDatetimeArray", "_typ", ("datetimearray")) -ABCTimedeltaArray = create_pandas_abc_type( - "ABCTimedeltaArray", "_typ", ("timedeltaarray") -) -ABCPeriodArray = create_pandas_abc_type("ABCPeriodArray", "_typ", ("periodarray",)) -ABCExtensionArray = create_pandas_abc_type( - "ABCExtensionArray", - "_typ", - # Note: IntervalArray and SparseArray are included bc they have _typ="extension" - {"extension", "categorical", "periodarray", "datetimearray", "timedeltaarray"}, -) -ABCPandasArray = create_pandas_abc_type("ABCPandasArray", "_typ", ("npy_extension",)) +ABCCategorical = cast( + "Type[Categorical]", + create_pandas_abc_type("ABCCategorical", "_typ", ("categorical")), +) +ABCDatetimeArray = cast( + "Type[DatetimeArray]", + create_pandas_abc_type("ABCDatetimeArray", "_typ", ("datetimearray")), +) +ABCTimedeltaArray = cast( + "Type[TimedeltaArray]", + create_pandas_abc_type("ABCTimedeltaArray", "_typ", ("timedeltaarray")), +) +ABCPeriodArray = cast( + "Type[PeriodArray]", + create_pandas_abc_type("ABCPeriodArray", "_typ", ("periodarray",)), +) +ABCExtensionArray = cast( + "Type[ExtensionArray]", + create_pandas_abc_type( + "ABCExtensionArray", + "_typ", + # Note: IntervalArray and SparseArray are included bc they have _typ="extension" + {"extension", "categorical", "periodarray", "datetimearray", "timedeltaarray"}, + ), +) +ABCPandasArray = cast( + "Type[PandasArray]", + create_pandas_abc_type("ABCPandasArray", "_typ", ("npy_extension",)), +)