@@ -278,8 +278,10 @@ def __init__(
278278 self .set_prop ("display" , slider = slider )
279279 self .set_prop ("data" , step = step )
280280
281- def __set__ (self , instance : Any , value : Any ) -> None :
282- """Override DataItem.__set__ to convert integers to float"""
281+ def _set_value_with_validation (
282+ self , instance : Any , value : Any , force_allow_none : bool = False
283+ ) -> None :
284+ """Override DataItem._set_value_with_validation to convert integers to float"""
283285 # Try to convert NumPy numeric types to Python float
284286 # (will convert silently either floating point or integer types to float)
285287 try :
@@ -291,7 +293,7 @@ def __set__(self, instance: Any, value: Any) -> None:
291293 # (no more NumPy types at this point)
292294 if isinstance (value , int ):
293295 value = float (value )
294- super ().__set__ (instance , value )
296+ super ()._set_value_with_validation (instance , value , force_allow_none )
295297
296298 def get_value_from_reader (
297299 self , reader : HDF5Reader | JSONReader | INIReader
@@ -362,16 +364,19 @@ def get_auto_help(self, instance: DataSet) -> str:
362364 auto_help += ", " + _ ("odd" )
363365 return auto_help
364366
365- def __set__ (self , instance : Any , value : Any ) -> None :
366- """Override DataItem.__set__ to convert NumPy numeric types to int"""
367+ def _set_value_with_validation (
368+ self , instance : Any , value : Any , force_allow_none : bool = False
369+ ) -> None :
370+ """Override DataItem._set_value_with_validation
371+ to convert NumPy numeric types to int"""
367372 # Try to convert NumPy integer types to Python int
368373 # (will convert silently only integer types to int)
369374 try :
370375 if isinstance (value , np .integer ):
371376 value = self .type (value )
372377 except (TypeError , ValueError ):
373378 pass
374- super ().__set__ (instance , value )
379+ super ()._set_value_with_validation (instance , value , force_allow_none )
375380
376381 def check_value (self , value : int , raise_exception : bool = False ) -> bool :
377382 """Override DataItem method"""
@@ -1015,11 +1020,13 @@ def get_value(self, instance: DataSet) -> str | None:
10151020 # guidata internals should call this; keep it returning the raw key
10161021 return super ().__get__ (instance , instance .__class__ ) # string (or None)
10171022
1018- def __set__ (self , instance : DataSet , value : Any ) -> None :
1019- """Override DataItem.__set__ to accept Enum members"""
1023+ def _set_value_with_validation (
1024+ self , instance : Any , value : Any , force_allow_none : bool = False
1025+ ) -> None :
1026+ """Override DataItem._set_value_with_validation to accept Enum members"""
10201027 if self ._enum_cls is not None and value is not None :
10211028 value = self ._enum_coerce_in (value ) # → member.name
1022- super ().__set__ (instance , value )
1029+ super ()._set_value_with_validation (instance , value , force_allow_none )
10231030
10241031 def _normalize_choice (
10251032 self , idx : int , choice_tuple : tuple [Any , ...]
0 commit comments