@@ -852,15 +852,15 @@ def _validate_fill_value(self, value):
852
852
return self ._validate_scalar (value )
853
853
854
854
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 :
856
859
msg = (
857
860
"'IntervalArray.fillna' only supports filling with a "
858
861
f"scalar 'pandas.Interval'. Got a '{ type (value ).__name__ } ' instead."
859
862
)
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
864
864
865
865
def _validate_insert_value (self , value ):
866
866
return self ._validate_scalar (value )
@@ -887,14 +887,7 @@ def _validate_setitem_value(self, value):
887
887
value_left , value_right = value .left , value .right
888
888
889
889
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 )
898
891
899
892
if needs_float_conversion :
900
893
raise ValueError ("Cannot set float NaN to integer-backed IntervalArray" )
0 commit comments