@@ -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