Skip to content

Commit 713fcda

Browse files
jbrockmendelKevin D Smith
authored and
Kevin D Smith
committed
CLN: de-duplicate IntervalArray validators (pandas-dev#36653)
1 parent 4194d14 commit 713fcda

File tree

1 file changed

+6
-13
lines changed

1 file changed

+6
-13
lines changed

pandas/core/arrays/interval.py

+6-13
Original file line numberDiff line numberDiff line change
@@ -852,15 +852,15 @@ def _validate_fill_value(self, value):
852852
return self._validate_scalar(value)
853853

854854
def _validate_fillna_value(self, value):
855-
if not isinstance(value, Interval):
855+
# This mirrors Datetimelike._validate_fill_value
856+
try:
857+
return self._validate_scalar(value)
858+
except ValueError as err:
856859
msg = (
857860
"'IntervalArray.fillna' only supports filling with a "
858861
f"scalar 'pandas.Interval'. Got a '{type(value).__name__}' instead."
859862
)
860-
raise TypeError(msg)
861-
862-
self._check_closed_matches(value, name="value")
863-
return value.left, value.right
863+
raise TypeError(msg) from err
864864

865865
def _validate_insert_value(self, value):
866866
return self._validate_scalar(value)
@@ -887,14 +887,7 @@ def _validate_setitem_value(self, value):
887887
value_left, value_right = value.left, value.right
888888

889889
else:
890-
try:
891-
# list-like of intervals
892-
array = IntervalArray(value)
893-
value_left, value_right = array.left, array.right
894-
except TypeError as err:
895-
# wrong type: not interval or NA
896-
msg = f"'value' should be an interval type, got {type(value)} instead."
897-
raise TypeError(msg) from err
890+
return self._validate_listlike(value)
898891

899892
if needs_float_conversion:
900893
raise ValueError("Cannot set float NaN to integer-backed IntervalArray")

0 commit comments

Comments
 (0)