예제 #1
0
    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)))
예제 #2
0
    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))
예제 #3
0
    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)))
예제 #4
0
    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")
예제 #5
0
    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")
예제 #6
0
    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))
예제 #7
0
    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"
            )
예제 #8
0
    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)
예제 #9
0
    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
예제 #10
0
    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
예제 #11
0
    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)
예제 #12
0
    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
예제 #13
0
    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
예제 #14
0
    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")