From 1b109c996cda0d2fc1fa1746db5dafb1f3294317 Mon Sep 17 00:00:00 2001 From: Shantanu Jain Date: Tue, 29 Oct 2024 17:31:43 -0700 Subject: [PATCH 1/4] Update enums to reflect typing spec changes See https://typing.readthedocs.io/en/latest/spec/enums.html#defining-members https://github.com/python/typing-council/issues/11 The next version of mypy will obey the spec change: https://github.com/python/mypy/pull/18068 pyright already requires this --- pandas-stubs/_libs/tslibs/dtypes.pyi | 21 +++++----- .../core/interchange/dataframe_protocol.pyi | 41 ++++++++++--------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/pandas-stubs/_libs/tslibs/dtypes.pyi b/pandas-stubs/_libs/tslibs/dtypes.pyi index 786a156bf..7d0a43ab2 100644 --- a/pandas-stubs/_libs/tslibs/dtypes.pyi +++ b/pandas-stubs/_libs/tslibs/dtypes.pyi @@ -1,4 +1,5 @@ from enum import Enum +from typing import cast from .offsets import BaseOffset @@ -29,16 +30,16 @@ class FreqGroup: def get_freq_group(code: int) -> int: ... class Resolution(Enum): - RESO_NS: int - RESO_US: int - RESO_MS: int - RESO_SEC: int - RESO_MIN: int - RESO_HR: int - RESO_DAY: int - RESO_MTH: int - RESO_QTR: int - RESO_YR: int + RESO_NS = cast(int, ...) + RESO_US = cast(int, ...) + RESO_MS = cast(int, ...) + RESO_SEC = cast(int, ...) + RESO_MIN = cast(int, ...) + RESO_HR = cast(int, ...) + RESO_DAY = cast(int, ...) + RESO_MTH = cast(int, ...) + RESO_QTR = cast(int, ...) + RESO_YR = cast(int, ...) def __lt__(self, other) -> bool: ... def __ge__(self, other) -> bool: ... diff --git a/pandas-stubs/core/interchange/dataframe_protocol.pyi b/pandas-stubs/core/interchange/dataframe_protocol.pyi index 8d6052068..f242119f3 100644 --- a/pandas-stubs/core/interchange/dataframe_protocol.pyi +++ b/pandas-stubs/core/interchange/dataframe_protocol.pyi @@ -11,33 +11,34 @@ import enum from typing import ( Any, TypedDict, + cast ) class DlpackDeviceType(enum.IntEnum): - CPU: int - CUDA: int - CPU_PINNED: int - OPENCL: int - VULKAN: int - METAL: int - VPI: int - ROCM: int + CPU = cast(int, ...) + CUDA = cast(int, ...) + CPU_PINNED = cast(int, ...) + OPENCL = cast(int, ...) + VULKAN = cast(int, ...) + METAL = cast(int, ...) + VPI = cast(int, ...) + ROCM = cast(int, ...) class DtypeKind(enum.IntEnum): - INT: int - UINT: int - FLOAT: int - BOOL: int - STRING: int - DATETIME: int - CATEGORICAL: int + INT = cast(int, ...) + UINT = cast(int, ...) + FLOAT = cast(int, ...) + BOOL = cast(int, ...) + STRING = cast(int, ...) + DATETIME = cast(int, ...) + CATEGORICAL = cast(int, ...) class ColumnNullType(enum.IntEnum): - NON_NULLABLE: int - USE_NAN: int - USE_SENTINEL: int - USE_BITMASK: int - USE_BYTEMASK: int + NON_NULLABLE = cast(int, ...) + USE_NAN = cast(int, ...) + USE_SENTINEL = cast(int, ...) + USE_BITMASK = cast(int, ...) + USE_BYTEMASK = cast(int, ...) class ColumnBuffers(TypedDict): data: tuple[Buffer, Any] From 47d0b8034e2e31c423d6e72930561e3fc8e7e736 Mon Sep 17 00:00:00 2001 From: Shantanu Jain Date: Tue, 29 Oct 2024 17:39:36 -0700 Subject: [PATCH 2/4] warning --- pandas-stubs/core/frame.pyi | 2 +- pandas-stubs/core/groupby/generic.pyi | 2 +- pandas-stubs/core/groupby/groupby.pyi | 2 +- pandas-stubs/core/interchange/dataframe_protocol.pyi | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 3f643f57c..a1d295bef 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -605,7 +605,7 @@ class DataFrame(NDFrame, OpsMixin): @overload def __getitem__(self, key: Scalar | tuple[Hashable, ...]) -> Series: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload] @overload - def __getitem__(self, key: Iterable[Hashable] | slice) -> DataFrame: ... + def __getitem__(self, key: Iterable[Hashable] | slice) -> DataFrame: ... # pyright: ignore[reportOverlappingOverload] @overload def __getitem__(self, key: Hashable) -> Series: ... def isetitem( diff --git a/pandas-stubs/core/groupby/generic.pyi b/pandas-stubs/core/groupby/generic.pyi index 5ccc4179b..3d43e75ed 100644 --- a/pandas-stubs/core/groupby/generic.pyi +++ b/pandas-stubs/core/groupby/generic.pyi @@ -234,7 +234,7 @@ class DataFrameGroupBy(GroupBy[DataFrame], Generic[ByT]): self, key: Scalar | Hashable | tuple[Hashable, ...] ) -> SeriesGroupBy[Any, ByT]: ... @overload - def __getitem__( # pyright: ignore[reportIncompatibleMethodOverride] + def __getitem__( # pyright: ignore[reportIncompatibleMethodOverride, reportOverlappingOverload] self, key: Iterable[Hashable] | slice ) -> DataFrameGroupBy[ByT]: ... def nunique(self, dropna: bool = ...) -> DataFrame: ... diff --git a/pandas-stubs/core/groupby/groupby.pyi b/pandas-stubs/core/groupby/groupby.pyi index 75be9578a..a009e50cc 100644 --- a/pandas-stubs/core/groupby/groupby.pyi +++ b/pandas-stubs/core/groupby/groupby.pyi @@ -141,7 +141,7 @@ class BaseGroupBy(SelectionMixin[NDFrameT], GroupByIndexingMixin): @overload def __getitem__(self: BaseGroupBy[DataFrame], key: Scalar | Hashable | tuple[Hashable, ...]) -> generic.SeriesGroupBy: ... # type: ignore[overload-overlap] @overload - def __getitem__( + def __getitem__( # pyright: ignore[reportOverlappingOverload] self: BaseGroupBy[DataFrame], key: Iterable[Hashable] | slice ) -> generic.DataFrameGroupBy: ... @overload diff --git a/pandas-stubs/core/interchange/dataframe_protocol.pyi b/pandas-stubs/core/interchange/dataframe_protocol.pyi index f242119f3..a29c573cc 100644 --- a/pandas-stubs/core/interchange/dataframe_protocol.pyi +++ b/pandas-stubs/core/interchange/dataframe_protocol.pyi @@ -11,7 +11,7 @@ import enum from typing import ( Any, TypedDict, - cast + cast, ) class DlpackDeviceType(enum.IntEnum): From ffa26f2b7127c5d712bed8e014399cb338a758f2 Mon Sep 17 00:00:00 2001 From: Shantanu Jain Date: Tue, 29 Oct 2024 21:32:50 -0700 Subject: [PATCH 3/4] . --- pandas-stubs/core/frame.pyi | 4 +++- scripts/__init__.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index a1d295bef..7f268f315 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -605,7 +605,9 @@ class DataFrame(NDFrame, OpsMixin): @overload def __getitem__(self, key: Scalar | tuple[Hashable, ...]) -> Series: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload] @overload - def __getitem__(self, key: Iterable[Hashable] | slice) -> DataFrame: ... # pyright: ignore[reportOverlappingOverload] + def __getitem__( + self, key: Iterable[Hashable] | slice + ) -> DataFrame: ... # pyright: ignore[reportOverlappingOverload] @overload def __getitem__(self, key: Hashable) -> Series: ... def isetitem( diff --git a/scripts/__init__.py b/scripts/__init__.py index 5d4942219..40a12223b 100644 --- a/scripts/__init__.py +++ b/scripts/__init__.py @@ -1,9 +1,10 @@ import sys +from typing import Any from loguru import logger # Config the format of log message -config = { +config: dict[str, Any] = { "handlers": [ { "sink": sys.stderr, From c58164630b377c4caab20d4024aa424173cfc6b1 Mon Sep 17 00:00:00 2001 From: Shantanu Jain Date: Tue, 29 Oct 2024 21:37:11 -0700 Subject: [PATCH 4/4] . --- pandas-stubs/core/frame.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 7f268f315..ec12ba00c 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -605,9 +605,9 @@ class DataFrame(NDFrame, OpsMixin): @overload def __getitem__(self, key: Scalar | tuple[Hashable, ...]) -> Series: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload] @overload - def __getitem__( + def __getitem__( # pyright: ignore[reportOverlappingOverload] self, key: Iterable[Hashable] | slice - ) -> DataFrame: ... # pyright: ignore[reportOverlappingOverload] + ) -> DataFrame: ... @overload def __getitem__(self, key: Hashable) -> Series: ... def isetitem(