def test_roundtrip_floats(self): v = "2.2" as_python_float = json_loads(v) self.assertTrue(isinstance(as_python_float, float)) as_decimal = to_decimal(as_python_float) self.assertTrue(isinstance(as_decimal, decimal.Decimal)) self.assertEqual(decimal.Decimal("2.2"), as_decimal) self.assertEqual("2.2", json_dumps(json_loads(v))) v = "2.2639520464" as_python_float = json_loads(v) self.assertTrue(isinstance(as_python_float, float)) as_decimal = to_decimal(as_python_float) self.assertTrue(isinstance(as_decimal, decimal.Decimal)) self.assertEqual(decimal.Decimal(v), as_decimal) self.assertEqual(v, json_dumps(json_loads(v)))
def __init__(self, value): super(NumericRangeWinnowValue, self).__init__(value) self.max = to_decimal(value[u"max"]) self.min = to_decimal(value[u"min"]) if self.max < self.min: raise OptionsExceptionFailedValidation("NumericRangeSieveValue: max %s less than min %s" % (self.max, self.min))
def __init__(self, value): super(NumericStepWinnowValue, self).__init__(value) self.start = to_decimal(value[u"start"]) self.step = to_decimal(value[u"step"]) if self.first_value() is None: raise OptionsExceptionFailedValidation("NumericStepSieveValue: empty set")
def __init__(self, value): super(NumericStepWinnowValue, self).__init__(value) self.start = to_decimal(value[u"start"]) self.step = to_decimal(value[u"step"]) if self.first_value() is None: raise OptionsExceptionFailedValidation( "NumericStepSieveValue: empty set")
def __init__(self, value): super(NumericRangeWinnowValue, self).__init__(value) self.max = to_decimal(value[u"max"]) self.min = to_decimal(value[u"min"]) if self.max < self.min: raise OptionsExceptionFailedValidation( "NumericRangeSieveValue: max %s less than min %s" % (self.max, self.min))
def __init__(self, value): super(NumericSetWinnowValue, self).__init__(value) if isinstance(value, list) or isinstance(value, set): self.as_list = value else: as_list = [to_decimal(d) for d in value[u"value"]] if not (isinstance(as_list, list) or isinstance(as_list, set)): raise OptionsExceptionFailedValidation( "NumericNumberSieveValue must be a Decimal") self.as_list = as_list for v in self.as_list: if not isinstance(v, Decimal): raise OptionsExceptionFailedValidation( "NumericSetSieveValue all values must be Decimals") if len(self.as_list) == 0: raise OptionsExceptionFailedValidation( "NumericSetSieveValue: empty set") if len(self.as_list) == 1: raise OptionsExceptionFailedValidation( "NumericSetSieveValue: set with one value should have been cast into NumericNumberSieveValue" )
def from_value(cls, value): if isinstance(value, list): try: decimal_list = [to_decimal(v) for v in value] except: raise OptionsExceptionFailedValidation( "NumericSieveValue unrecognised value type") numeric = NumericSetWinnowValue(decimal_list) if numeric is None: raise OptionsExceptionFailedValidation( "NumericSieveValue: empty set") return numeric elif isinstance(value, dict): numeric_type = value[u"type"] if numeric_type == VALUE_TYPE_NUMERIC_NUMBER: return NumericNumberWinnowValue(value) elif numeric_type == VALUE_TYPE_NUMERIC_SET: numeric = NumericSetWinnowValue(value) if numeric is None: raise OptionsExceptionFailedValidation( "NumericSieveValue: empty set") return numeric elif numeric_type == VALUE_TYPE_NUMERIC_RANGE: return NumericRangeWinnowValue(value) elif numeric_type == VALUE_TYPE_NUMERIC_STEP: step = NumericStepWinnowValue(value) first = step.first_value() if first is None: raise OptionsExceptionFailedValidation( "NumericSieveValue: empty set") elif first + step.step > step.max: return NumericNumberWinnowValue(first) else: return step else: try: d = to_decimal(value) except: raise OptionsExceptionFailedValidation( "NumericSieveValue unrecognised value type") return NumericNumberWinnowValue(d)
def __init__(self, value): super(NumericNumberWinnowValue, self).__init__(value) if isinstance(value, Decimal): self.number = value else: number = to_decimal(value[u"value"]) if not isinstance(number, Decimal): raise OptionsExceptionFailedValidation("NumericNumberSieveValue must be a Decimal") self.number = number
def __init__(self, value): super(NumericNumberWinnowValue, self).__init__(value) if isinstance(value, Decimal): self.number = value else: number = to_decimal(value[u"value"]) if not isinstance(number, Decimal): raise OptionsExceptionFailedValidation( "NumericNumberSieveValue must be a Decimal") self.number = number
def from_value(cls, value): if isinstance(value, list): try: decimal_list = [to_decimal(v) for v in value] except: raise OptionsExceptionFailedValidation("NumericSieveValue unrecognised value type") numeric = NumericSetWinnowValue(decimal_list) if numeric is None: raise OptionsExceptionFailedValidation("NumericSieveValue: empty set") return numeric elif isinstance(value, dict): numeric_type = value[u"type"] if numeric_type == VALUE_TYPE_NUMERIC_NUMBER: return NumericNumberWinnowValue(value) elif numeric_type == VALUE_TYPE_NUMERIC_SET: numeric = NumericSetWinnowValue(value) if numeric is None: raise OptionsExceptionFailedValidation("NumericSieveValue: empty set") return numeric elif numeric_type == VALUE_TYPE_NUMERIC_RANGE: return NumericRangeWinnowValue(value) elif numeric_type == VALUE_TYPE_NUMERIC_STEP: step = NumericStepWinnowValue(value) first = step.first_value() if first is None: raise OptionsExceptionFailedValidation("NumericSieveValue: empty set") elif first + step.step > step.max: return NumericNumberWinnowValue(first) else: return step else: try: d = to_decimal(value) except: raise OptionsExceptionFailedValidation("NumericSieveValue unrecognised value type") return NumericNumberWinnowValue(d)
def __init__(self, value): if isinstance(value, dict): self.name = value.get("name") self.description = value.get("description") self.image_url = value.get("image_url") self.scopes = value.get("scopes") self._default = to_decimal(value.get("default")) if value.get("default") else None else: self.name = None self.description = None self.image_url = None self.scopes = None self._default = None
def __init__(self, value): if isinstance(value, dict): self.name = value.get("name") self.description = value.get("description") self.image_url = value.get("image_url") self.scopes = value.get("scopes") self._default = to_decimal( value.get("default")) if value.get("default") else None else: self.name = None self.description = None self.image_url = None self.scopes = None self._default = None
def __init__(self, value): super(NumericSetWinnowValue, self).__init__(value) if isinstance(value, list) or isinstance(value, set): self.as_list = value else: as_list = [to_decimal(d) for d in value[u"value"]] if not (isinstance(as_list, list) or isinstance(as_list, set)): raise OptionsExceptionFailedValidation("NumericNumberSieveValue must be a Decimal") self.as_list = as_list for v in self.as_list: if not isinstance(v, Decimal): raise OptionsExceptionFailedValidation("NumericSetSieveValue all values must be Decimals") if len(self.as_list) == 0: raise OptionsExceptionFailedValidation("NumericSetSieveValue: empty set") if len(self.as_list) == 1: raise OptionsExceptionFailedValidation("NumericSetSieveValue: set with one value should have been cast into NumericNumberSieveValue")