From 31947401e054ab6c389eee031e1166ecd5b7e84c Mon Sep 17 00:00:00 2001 From: Brock Date: Fri, 19 Feb 2021 18:40:24 -0800 Subject: [PATCH] REF: De-duplicate ExtensionIndex._validate_fill_value --- pandas/core/indexes/datetimelike.py | 6 ------ pandas/core/indexes/extension.py | 14 ++++++++++---- pandas/core/indexes/interval.py | 3 --- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index b2c67ae2f0a00..afbddefae5e72 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -627,12 +627,6 @@ def insert(self, loc: int, item): result._data._freq = self._get_insert_freq(loc, item) return result - def _validate_fill_value(self, value): - """ - Convert value to be insertable to ndarray. - """ - return self._data._validate_setitem_value(value) - # -------------------------------------------------------------------- # Join/Set Methods diff --git a/pandas/core/indexes/extension.py b/pandas/core/indexes/extension.py index 0097959245686..f1418869713d6 100644 --- a/pandas/core/indexes/extension.py +++ b/pandas/core/indexes/extension.py @@ -4,6 +4,7 @@ from typing import ( List, TypeVar, + Union, ) import numpy as np @@ -25,7 +26,7 @@ ABCSeries, ) -from pandas.core.arrays import ExtensionArray +from pandas.core.arrays import IntervalArray from pandas.core.arrays._mixins import NDArrayBackedExtensionArray from pandas.core.indexers import deprecate_ndim_indexing from pandas.core.indexes.base import Index @@ -216,7 +217,7 @@ class ExtensionIndex(Index): # The base class already passes through to _data: # size, __len__, dtype - _data: ExtensionArray + _data: Union[IntervalArray, NDArrayBackedExtensionArray] __eq__ = _make_wrapped_comparison_op("__eq__") __ne__ = _make_wrapped_comparison_op("__ne__") @@ -240,8 +241,7 @@ def __getitem__(self, key): return type(self)(result, name=self.name) # Unpack to ndarray for MPL compat - # error: "ExtensionArray" has no attribute "_data" - result = result._data # type: ignore[attr-defined] + result = result._ndarray # Includes cases where we get a 2D ndarray back for MPL compat deprecate_ndim_indexing(result) @@ -276,6 +276,12 @@ def insert(self, loc: int, item): # ExtensionIndex subclasses must override Index.insert raise AbstractMethodError(self) + def _validate_fill_value(self, value): + """ + Convert value to be insertable to underlying array. + """ + return self._data._validate_setitem_value(value) + def _get_unique_index(self): if self.is_unique: return self diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index c2fabfc332b23..ace9b5b592900 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -1036,9 +1036,6 @@ def func(self, other, sort=sort): # -------------------------------------------------------------------- - def _validate_fill_value(self, value): - return self._data._validate_setitem_value(value) - @property def _is_all_dates(self) -> bool: """