From 8828553a710f69fa9202d667d4c78f4bb07ffccf Mon Sep 17 00:00:00 2001 From: Luke Manley Date: Fri, 21 Jul 2023 20:08:23 -0400 Subject: [PATCH 1/2] PERF: ArrowDtype.__eq__ --- pandas/core/dtypes/dtypes.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pandas/core/dtypes/dtypes.py b/pandas/core/dtypes/dtypes.py index 5d3d5a1a6b344..c8f34cbb4b27b 100644 --- a/pandas/core/dtypes/dtypes.py +++ b/pandas/core/dtypes/dtypes.py @@ -2046,6 +2046,15 @@ def __init__(self, pyarrow_dtype: pa.DataType) -> None: def __repr__(self) -> str: return self.name + def __hash__(self) -> int: + # make myself hashable + return hash(str(self)) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, type(self)): + return super().__eq__(other) + return self.pyarrow_dtype == other.pyarrow_dtype + @property def type(self): """ @@ -2104,6 +2113,12 @@ def name(self) -> str: # type: ignore[override] """ A string identifying the data type. """ + # try: + # return self._cache_dtype_names[self.pyarrow_dtype] + # except KeyError: + # name = f"{str(self.pyarrow_dtype)}[{self.storage}]" + # self._cache_dtype_names[self.pyarrow_dtype] = name + # return name return f"{str(self.pyarrow_dtype)}[{self.storage}]" @cache_readonly From b0a33cec68d0715db2a3b44c6adef14dbd8e29a8 Mon Sep 17 00:00:00 2001 From: Luke Manley Date: Fri, 21 Jul 2023 20:13:32 -0400 Subject: [PATCH 2/2] cleanup --- pandas/core/dtypes/dtypes.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pandas/core/dtypes/dtypes.py b/pandas/core/dtypes/dtypes.py index c8f34cbb4b27b..70575a97b9aff 100644 --- a/pandas/core/dtypes/dtypes.py +++ b/pandas/core/dtypes/dtypes.py @@ -2113,12 +2113,6 @@ def name(self) -> str: # type: ignore[override] """ A string identifying the data type. """ - # try: - # return self._cache_dtype_names[self.pyarrow_dtype] - # except KeyError: - # name = f"{str(self.pyarrow_dtype)}[{self.storage}]" - # self._cache_dtype_names[self.pyarrow_dtype] = name - # return name return f"{str(self.pyarrow_dtype)}[{self.storage}]" @cache_readonly