From 99ae64f11bf1f205e85149ec3178c364bd33bdce Mon Sep 17 00:00:00 2001 From: Deepak Cherian Date: Thu, 1 May 2025 07:43:35 -0600 Subject: [PATCH] Add back getattr for ExtensionArrays --- doc/whats-new.rst | 16 ++++++++++++++-- xarray/core/extension_array.py | 5 ++++- xarray/tests/test_duck_array_ops.py | 5 +++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/doc/whats-new.rst b/doc/whats-new.rst index 76fb5d42aa9..dc7165eda9a 100644 --- a/doc/whats-new.rst +++ b/doc/whats-new.rst @@ -16,11 +16,23 @@ What's New np.random.seed(123456) -.. _whats-new.2025.04.0: +.. _whats-new.2025.05.0: -v2025.04.0 (unreleased) +v2025.05.0 (unreleased) ----------------------- +Bug fixes +~~~~~~~~~ + +- Allow accessing arbitrary attributes on Pandas ExtensionArrays. + By `Deepak Cherian Any: + return getattr(self.array, attr) diff --git a/xarray/tests/test_duck_array_ops.py b/xarray/tests/test_duck_array_ops.py index ff84041f8f1..3b75d3d6b2a 100644 --- a/xarray/tests/test_duck_array_ops.py +++ b/xarray/tests/test_duck_array_ops.py @@ -1094,3 +1094,8 @@ def test_extension_array_singleton_equality(categorical1): def test_extension_array_repr(int1): int_duck_array = PandasExtensionArray(int1) assert repr(int1) in repr(int_duck_array) + + +def test_extension_array_attr(): + array = pd.Categorical(["cat2", "cat1", "cat2", "cat3", "cat1"]) + assert (array.categories == PandasExtensionArray(array).categories).all()