From 91d2a93ebc897be44ec8b07003e3600bcef67789 Mon Sep 17 00:00:00 2001 From: cmp0xff Date: Mon, 15 Dec 2025 17:08:44 +0100 Subject: [PATCH] np.dtype for py310 --- pandas-stubs/core/arrays/base.pyi | 10 +++++++-- pandas-stubs/core/arrays/datetimes.pyi | 11 ++++++++-- pandas-stubs/core/arrays/numpy_.pyi | 12 +++++++++-- pandas-stubs/core/computation/ops.pyi | 9 ++++++-- pandas-stubs/core/construction.pyi | 28 ++++++++++++++++++------- pandas-stubs/core/dtypes/dtypes.pyi | 9 ++++++-- pandas-stubs/core/indexes/base.pyi | 13 +++++++++--- pandas-stubs/core/indexes/datetimes.pyi | 11 ++++++++-- pandas-stubs/core/indexes/multi.pyi | 10 +++++++-- pandas-stubs/core/indexes/range.pyi | 10 +++++++-- pandas-stubs/core/series.pyi | 12 ++++++++--- tests/extension/decimal/array.py | 11 ++++++++-- 12 files changed, 115 insertions(+), 31 deletions(-) diff --git a/pandas-stubs/core/arrays/base.pyi b/pandas-stubs/core/arrays/base.pyi index 7ce4f26c6..911b2df86 100644 --- a/pandas-stubs/core/arrays/base.pyi +++ b/pandas-stubs/core/arrays/base.pyi @@ -2,6 +2,7 @@ from collections.abc import ( Iterator, Sequence, ) +import sys from typing import ( Any, Literal, @@ -55,8 +56,13 @@ class ExtensionArray: def ndim(self) -> int: ... @property def nbytes(self) -> int: ... - @overload - def astype(self, dtype: np.dtype, copy: bool = True) -> np_1darray: ... + if sys.version_info >= (3, 11): + @overload + def astype(self, dtype: np.dtype, copy: bool = True) -> np_1darray: ... + else: + @overload + def astype(self, dtype: np.dtype[Any], copy: bool = True) -> np_1darray: ... + @overload def astype(self, dtype: ExtensionDtype, copy: bool = True) -> ExtensionArray: ... @overload diff --git a/pandas-stubs/core/arrays/datetimes.pyi b/pandas-stubs/core/arrays/datetimes.pyi index 82d884fe6..79b36c0f3 100644 --- a/pandas-stubs/core/arrays/datetimes.pyi +++ b/pandas-stubs/core/arrays/datetimes.pyi @@ -1,4 +1,6 @@ from datetime import tzinfo as _tzinfo +import sys +from typing import Any import numpy as np from pandas.core.arrays.datetimelike import ( @@ -19,8 +21,13 @@ class DatetimeArray(DatetimeLikeArrayMixin, TimelikeOps, DatelikeOps): __array_priority__: int = ... def __init__(self, values, dtype=..., freq=..., copy: bool = ...) -> None: ... # ignore in dtype() is from the pandas source - @property - def dtype(self) -> np.dtype | DatetimeTZDtype: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] + if sys.version_info >= (3, 11): + @property + def dtype(self) -> np.dtype | DatetimeTZDtype: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] + else: + @property + def dtype(self) -> np.dtype[Any] | DatetimeTZDtype: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] + @property def tz(self): ... @tz.setter diff --git a/pandas-stubs/core/arrays/numpy_.pyi b/pandas-stubs/core/arrays/numpy_.pyi index 760d82e84..4081a6766 100644 --- a/pandas-stubs/core/arrays/numpy_.pyi +++ b/pandas-stubs/core/arrays/numpy_.pyi @@ -1,3 +1,6 @@ +import sys +from typing import Any + import numpy as np from numpy.lib.mixins import NDArrayOperatorsMixin from pandas.core.arrays.base import ( @@ -8,8 +11,13 @@ from pandas.core.arrays.base import ( from pandas.core.dtypes.dtypes import ExtensionDtype class PandasDtype(ExtensionDtype): - @property - def numpy_dtype(self) -> np.dtype: ... + if sys.version_info >= (3, 11): + @property + def numpy_dtype(self) -> np.dtype: ... + else: + @property + def numpy_dtype(self) -> np.dtype[Any]: ... + @property def itemsize(self) -> int: ... diff --git a/pandas-stubs/core/computation/ops.pyi b/pandas-stubs/core/computation/ops.pyi index 69be2f864..7cc0f95f9 100644 --- a/pandas-stubs/core/computation/ops.pyi +++ b/pandas-stubs/core/computation/ops.pyi @@ -1,3 +1,4 @@ +import sys from typing import Any import numpy as np @@ -75,8 +76,12 @@ class UnaryOp(Op): func = ... def __init__(self, op: str, operand) -> None: ... def __call__(self, env): ... - @property - def return_type(self) -> np.dtype: ... + if sys.version_info >= (3, 11): + @property + def return_type(self) -> np.dtype: ... + else: + @property + def return_type(self) -> np.dtype[Any]: ... class MathCall(Op): func = ... diff --git a/pandas-stubs/core/construction.pyi b/pandas-stubs/core/construction.pyi index 3638fac78..c677f1cb9 100644 --- a/pandas-stubs/core/construction.pyi +++ b/pandas-stubs/core/construction.pyi @@ -1,5 +1,9 @@ from collections.abc import Sequence -from typing import overload +import sys +from typing import ( + Any, + overload, +) import numpy as np from pandas.core.arrays.base import ExtensionArray @@ -40,9 +44,19 @@ def array( dtype: PandasFloatDtypeArg | None = None, copy: bool = True, ) -> FloatingArray: ... -@overload -def array( - data: Sequence[object], - dtype: str | np.dtype | ExtensionDtype | None = None, - copy: bool = True, -) -> ExtensionArray: ... + +if sys.version_info >= (3, 11): + @overload + def array( + data: Sequence[object], + dtype: str | np.dtype | ExtensionDtype | None = None, + copy: bool = True, + ) -> ExtensionArray: ... + +else: + @overload + def array( + data: Sequence[object], + dtype: str | np.dtype[Any] | ExtensionDtype | None = None, + copy: bool = True, + ) -> ExtensionArray: ... diff --git a/pandas-stubs/core/dtypes/dtypes.pyi b/pandas-stubs/core/dtypes/dtypes.pyi index 3826e7d2a..73be65dcf 100644 --- a/pandas-stubs/core/dtypes/dtypes.pyi +++ b/pandas-stubs/core/dtypes/dtypes.pyi @@ -1,4 +1,5 @@ import datetime as dt +import sys from typing import ( Any, Literal, @@ -59,5 +60,9 @@ class PeriodDtype(PandasExtensionDtype): class IntervalDtype(PandasExtensionDtype): def __init__(self, subtype: str | npt.DTypeLike | None = ...) -> None: ... - @property - def subtype(self) -> np.dtype | None: ... + if sys.version_info >= (3, 11): + @property + def subtype(self) -> np.dtype | None: ... + else: + @property + def subtype(self) -> np.dtype[Any] | None: ... diff --git a/pandas-stubs/core/indexes/base.pyi b/pandas-stubs/core/indexes/base.pyi index 35a610cf4..2a409930b 100644 --- a/pandas-stubs/core/indexes/base.pyi +++ b/pandas-stubs/core/indexes/base.pyi @@ -10,6 +10,7 @@ from datetime import ( timedelta, ) from pathlib import Path +import sys from typing import ( Any, ClassVar, @@ -371,9 +372,15 @@ class Index(IndexOpsMixin[S1], ElementOpsMixin[S1]): @final def is_(self, other: Any) -> bool: ... def __len__(self) -> int: ... - def __array__( - self, dtype: _str | np.dtype = ..., copy: bool | None = ... - ) -> np_1darray: ... + if sys.version_info >= (3, 11): + def __array__( + self, dtype: _str | np.dtype = ..., copy: bool | None = ... + ) -> np_1darray: ... + else: + def __array__( + self, dtype: _str | np.dtype[Any] = ..., copy: bool | None = ... + ) -> np_1darray: ... + @property def dtype(self) -> DtypeObj: ... @final diff --git a/pandas-stubs/core/indexes/datetimes.pyi b/pandas-stubs/core/indexes/datetimes.pyi index 193a37a33..f42f9f0e6 100644 --- a/pandas-stubs/core/indexes/datetimes.pyi +++ b/pandas-stubs/core/indexes/datetimes.pyi @@ -8,7 +8,9 @@ from datetime import ( timedelta, tzinfo as _tzinfo, ) +import sys from typing import ( + Any, final, overload, ) @@ -103,8 +105,13 @@ class DatetimeIndex( def isocalendar(self) -> DataFrame: ... @property def tzinfo(self) -> _tzinfo | None: ... - @property - def dtype(self) -> np.dtype | DatetimeTZDtype: ... + if sys.version_info >= (3, 11): + @property + def dtype(self) -> np.dtype | DatetimeTZDtype: ... + else: + @property + def dtype(self) -> np.dtype[Any] | DatetimeTZDtype: ... + def shift( self, periods: int = 1, freq: Frequency | timedelta | None = None ) -> Self: ... diff --git a/pandas-stubs/core/indexes/multi.pyi b/pandas-stubs/core/indexes/multi.pyi index 144abeecb..b7de51d47 100644 --- a/pandas-stubs/core/indexes/multi.pyi +++ b/pandas-stubs/core/indexes/multi.pyi @@ -5,6 +5,7 @@ from collections.abc import ( Mapping, Sequence, ) +import sys from typing import ( Any, overload, @@ -116,8 +117,13 @@ class MultiIndex(Index): self, names: SequenceNotStr[Hashable] = ..., deep: bool = False ) -> Self: ... def view(self, cls: NumpyNotTimeDtypeArg | NumpyTimedeltaDtypeArg | NumpyTimestampDtypeArg | type[np_ndarray] | None = None) -> MultiIndex: ... # type: ignore[override] # pyrefly: ignore[bad-override] # pyright: ignore[reportIncompatibleMethodOverride] - @property - def dtype(self) -> np.dtype: ... + if sys.version_info >= (3, 11): + @property + def dtype(self) -> np.dtype: ... + else: + @property + def dtype(self) -> np.dtype[Any]: ... + @property def dtypes(self) -> pd.Series[Dtype]: ... def memory_usage(self, deep: bool = False) -> int: ... diff --git a/pandas-stubs/core/indexes/range.pyi b/pandas-stubs/core/indexes/range.pyi index 691d7c26d..3c9814420 100644 --- a/pandas-stubs/core/indexes/range.pyi +++ b/pandas-stubs/core/indexes/range.pyi @@ -2,6 +2,7 @@ from collections.abc import ( Hashable, Sequence, ) +import sys from typing import ( Any, overload, @@ -50,8 +51,13 @@ class RangeIndex(_IndexSubclassBase[int, np.int64]): @property def nbytes(self) -> int: ... def memory_usage(self, deep: bool = ...) -> int: ... - @property - def dtype(self) -> np.dtype: ... + if sys.version_info >= (3, 11): + @property + def dtype(self) -> np.dtype: ... + else: + @property + def dtype(self) -> np.dtype[Any]: ... + @property def is_unique(self) -> bool: ... @property diff --git a/pandas-stubs/core/series.pyi b/pandas-stubs/core/series.pyi index 73ee89cc0..c2fc80ea7 100644 --- a/pandas-stubs/core/series.pyi +++ b/pandas-stubs/core/series.pyi @@ -562,9 +562,15 @@ class Series(IndexOpsMixin[S1], ElementOpsMixin[S1], NDFrame): def __array_ufunc__( self, ufunc: Callable[..., Any], method: _str, *inputs: Any, **kwargs: Any ) -> Any: ... - def __array__( # ty: ignore[invalid-method-override] - self, dtype: _str | np.dtype = ..., copy: bool | None = ... - ) -> np_1darray: ... + if sys.version_info >= (3, 11): + def __array__( # ty: ignore[invalid-method-override] + self, dtype: _str | np.dtype = ..., copy: bool | None = ... + ) -> np_1darray: ... + else: + def __array__( # ty: ignore[invalid-method-override] + self, dtype: _str | np.dtype[Any] = ..., copy: bool | None = ... + ) -> np_1darray: ... + @final def __getattr__(self, name: _str) -> S1: ... diff --git a/tests/extension/decimal/array.py b/tests/extension/decimal/array.py index 26cccd2f5..dfcff1ecb 100644 --- a/tests/extension/decimal/array.py +++ b/tests/extension/decimal/array.py @@ -230,8 +230,15 @@ def take( def copy(self) -> DecimalArray: return type(self)(self._data.copy(), dtype=self.dtype) - @overload - def astype(self, dtype: np.dtype, copy: bool = True) -> np_1darray: ... + if sys.version_info >= (3, 11): + + @overload + def astype(self, dtype: np.dtype, copy: bool = True) -> np_1darray: ... + + else: + + @overload + def astype(self, dtype: np.dtype[Any], copy: bool = True) -> np_1darray: ... @overload def astype(self, dtype: ExtensionDtype, copy: bool = True) -> ExtensionArray: ... @overload