def _sanitize_single_value( field: str, value: Optional[float]) -> Optional[EvalableFloat]: if value is None: return None if isinstance(value, (int, float)): return EvalableFloat(value) raise TypeError("%s values for metric must be float, int or None" % field)
def __init__( self, name: str, value: float, *, levels: _OptionalPair = None, boundaries: _OptionalPair = None, ) -> None: self.validate_name(name) if not isinstance(value, (int, float)): raise TypeError("value for metric must be float or int, got %r" % (value, )) self._name = name self._value = EvalableFloat(value) self._levels = self._sanitize_optionals('levels', levels) self._boundaries = self._sanitize_optionals('boundaries', boundaries)
def __new__( cls, name: str, value: float, *, levels: _OptionalPair = None, boundaries: _OptionalPair = None, ) -> 'Metric': cls._validate_name(name) if not isinstance(value, (int, float)): raise TypeError("value for metric must be float or int, got %r" % (value,)) return super().__new__( cls, name=name, value=EvalableFloat(value), levels=cls._sanitize_optionals('levels', levels), boundaries=cls._sanitize_optionals('boundaries', boundaries), )
def test_evalable_float(): inf = EvalableFloat('inf') assert literal_eval("%r" % inf) == float('inf')