Skip to content

Commit 755732d

Browse files
authored
REF: De-duplicate ExtensionIndex._validate_fill_value (#39923)
1 parent 8d2a57e commit 755732d

File tree

3 files changed

+10
-13
lines changed

3 files changed

+10
-13
lines changed

pandas/core/indexes/datetimelike.py

-6
Original file line numberDiff line numberDiff line change
@@ -627,12 +627,6 @@ def insert(self, loc: int, item):
627627
result._data._freq = self._get_insert_freq(loc, item)
628628
return result
629629

630-
def _validate_fill_value(self, value):
631-
"""
632-
Convert value to be insertable to ndarray.
633-
"""
634-
return self._data._validate_setitem_value(value)
635-
636630
# --------------------------------------------------------------------
637631
# Join/Set Methods
638632

pandas/core/indexes/extension.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from typing import (
55
List,
66
TypeVar,
7+
Union,
78
)
89

910
import numpy as np
@@ -25,7 +26,7 @@
2526
ABCSeries,
2627
)
2728

28-
from pandas.core.arrays import ExtensionArray
29+
from pandas.core.arrays import IntervalArray
2930
from pandas.core.arrays._mixins import NDArrayBackedExtensionArray
3031
from pandas.core.indexers import deprecate_ndim_indexing
3132
from pandas.core.indexes.base import Index
@@ -216,7 +217,7 @@ class ExtensionIndex(Index):
216217
# The base class already passes through to _data:
217218
# size, __len__, dtype
218219

219-
_data: ExtensionArray
220+
_data: Union[IntervalArray, NDArrayBackedExtensionArray]
220221

221222
__eq__ = _make_wrapped_comparison_op("__eq__")
222223
__ne__ = _make_wrapped_comparison_op("__ne__")
@@ -240,8 +241,7 @@ def __getitem__(self, key):
240241
return type(self)(result, name=self.name)
241242
# Unpack to ndarray for MPL compat
242243

243-
# error: "ExtensionArray" has no attribute "_data"
244-
result = result._data # type: ignore[attr-defined]
244+
result = result._ndarray
245245

246246
# Includes cases where we get a 2D ndarray back for MPL compat
247247
deprecate_ndim_indexing(result)
@@ -276,6 +276,12 @@ def insert(self, loc: int, item):
276276
# ExtensionIndex subclasses must override Index.insert
277277
raise AbstractMethodError(self)
278278

279+
def _validate_fill_value(self, value):
280+
"""
281+
Convert value to be insertable to underlying array.
282+
"""
283+
return self._data._validate_setitem_value(value)
284+
279285
def _get_unique_index(self):
280286
if self.is_unique:
281287
return self

pandas/core/indexes/interval.py

-3
Original file line numberDiff line numberDiff line change
@@ -1034,9 +1034,6 @@ def func(self, other, sort=sort):
10341034

10351035
# --------------------------------------------------------------------
10361036

1037-
def _validate_fill_value(self, value):
1038-
return self._data._validate_setitem_value(value)
1039-
10401037
@property
10411038
def _is_all_dates(self) -> bool:
10421039
"""

0 commit comments

Comments
 (0)