From 068e199c5f8e90fa43249ba988eb9cbb2ba67dba Mon Sep 17 00:00:00 2001 From: Jan-Eric Nitschke <47750513+JanEricNitschke@users.noreply.github.com> Date: Fri, 28 Jun 2024 10:07:59 +0200 Subject: [PATCH 1/2] Add type parameters to generics in isna and notna --- pandas-stubs/_typing.pyi | 2 +- pandas-stubs/core/dtypes/missing.pyi | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/pandas-stubs/_typing.pyi b/pandas-stubs/_typing.pyi index f4cc75370..fbbd9cdc9 100644 --- a/pandas-stubs/_typing.pyi +++ b/pandas-stubs/_typing.pyi @@ -53,7 +53,7 @@ from pandas.io.formats.format import EngFormatter # where it is the only acceptable type. Incomplete: TypeAlias = Any -ArrayLike: TypeAlias = ExtensionArray | np.ndarray +ArrayLike: TypeAlias = ExtensionArray | np.ndarray[Any, Any] AnyArrayLike: TypeAlias = Index | Series | np.ndarray PythonScalar: TypeAlias = str | bool | complex DatetimeLikeScalar = TypeVar("DatetimeLikeScalar", Period, Timestamp, Timedelta) diff --git a/pandas-stubs/core/dtypes/missing.pyi b/pandas-stubs/core/dtypes/missing.pyi index 84bc8ff35..58295e9cf 100644 --- a/pandas-stubs/core/dtypes/missing.pyi +++ b/pandas-stubs/core/dtypes/missing.pyi @@ -1,4 +1,7 @@ -from typing import overload +from typing import ( + Any, + overload, +) import numpy as np from numpy import typing as npt @@ -7,12 +10,12 @@ from pandas import ( Index, Series, ) +from pandas.core.arrays.base import ExtensionArray from typing_extensions import TypeGuard from pandas._libs.missing import NAType from pandas._libs.tslibs import NaTType from pandas._typing import ( - ArrayLike, Scalar, ScalarT, ) @@ -23,9 +26,11 @@ isneginf_scalar = ... @overload def isna(obj: DataFrame) -> DataFrame: ... @overload -def isna(obj: Series) -> Series[bool]: ... +def isna(obj: Series[Any]) -> Series[bool]: ... @overload -def isna(obj: Index | list | ArrayLike) -> npt.NDArray[np.bool_]: ... +def isna( + obj: Index[Any] | list[Any] | ExtensionArray | np.ndarray[Any, Any] +) -> npt.NDArray[np.bool_]: ... @overload def isna( obj: Scalar | NaTType | NAType | None, @@ -36,9 +41,11 @@ isnull = isna @overload def notna(obj: DataFrame) -> DataFrame: ... @overload -def notna(obj: Series) -> Series[bool]: ... +def notna(obj: Series[Any]) -> Series[bool]: ... @overload -def notna(obj: Index | list | ArrayLike) -> npt.NDArray[np.bool_]: ... +def notna( + obj: Index[Any] | list[Any] | ExtensionArray | np.ndarray[Any, Any] +) -> npt.NDArray[np.bool_]: ... @overload def notna(obj: ScalarT | NaTType | NAType | None) -> TypeGuard[ScalarT]: ... From 53c92bec8e5038b123738269cb5e20e1d05a1296 Mon Sep 17 00:00:00 2001 From: Jan-Eric Nitschke <47750513+JanEricNitschke@users.noreply.github.com> Date: Fri, 28 Jun 2024 16:35:31 +0200 Subject: [PATCH 2/2] Reintroduce ArrayLike --- pandas-stubs/core/dtypes/missing.pyi | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pandas-stubs/core/dtypes/missing.pyi b/pandas-stubs/core/dtypes/missing.pyi index 58295e9cf..22bf8edd8 100644 --- a/pandas-stubs/core/dtypes/missing.pyi +++ b/pandas-stubs/core/dtypes/missing.pyi @@ -10,12 +10,12 @@ from pandas import ( Index, Series, ) -from pandas.core.arrays.base import ExtensionArray from typing_extensions import TypeGuard from pandas._libs.missing import NAType from pandas._libs.tslibs import NaTType from pandas._typing import ( + ArrayLike, Scalar, ScalarT, ) @@ -28,9 +28,7 @@ def isna(obj: DataFrame) -> DataFrame: ... @overload def isna(obj: Series[Any]) -> Series[bool]: ... @overload -def isna( - obj: Index[Any] | list[Any] | ExtensionArray | np.ndarray[Any, Any] -) -> npt.NDArray[np.bool_]: ... +def isna(obj: Index[Any] | list[Any] | ArrayLike) -> npt.NDArray[np.bool_]: ... @overload def isna( obj: Scalar | NaTType | NAType | None, @@ -43,9 +41,7 @@ def notna(obj: DataFrame) -> DataFrame: ... @overload def notna(obj: Series[Any]) -> Series[bool]: ... @overload -def notna( - obj: Index[Any] | list[Any] | ExtensionArray | np.ndarray[Any, Any] -) -> npt.NDArray[np.bool_]: ... +def notna(obj: Index[Any] | list[Any] | ArrayLike) -> npt.NDArray[np.bool_]: ... @overload def notna(obj: ScalarT | NaTType | NAType | None) -> TypeGuard[ScalarT]: ...