コード例 #1
0
ファイル: dataframe.py プロジェクト: musaqib/cloudkitty
from cloudkitty import validation_utils as vutils

# NOTE(peschk_l): qty and price are converted to strings to avoid
# floating-point conversion issues:
# Decimal(0.121) == Decimal('0.12099999999999999644728632119')
# Decimal(str(0.121)) == Decimal('0.121')
DATAPOINT_SCHEMA = voluptuous.Schema({
    voluptuous.Required('vol'): {
        voluptuous.Required('unit'): vutils.get_string_type(),
        voluptuous.Required('qty'): voluptuous.Coerce(str),
    },
    voluptuous.Required('rating', default={}): {
        voluptuous.Required('price', default=0):
        voluptuous.Coerce(str),
    },
    voluptuous.Required('groupby'): vutils.DictTypeValidator(str, str),
    voluptuous.Required('metadata'): vutils.DictTypeValidator(str, str),
})


_DataPointBase = collections.namedtuple(
    "DataPoint",
    field_names=("unit", "qty", "price", "groupby", "metadata"))


class DataPoint(_DataPointBase):

    def __new__(cls, unit, qty, price, groupby, metadata):
        return _DataPointBase.__new__(
            cls,
            unit or "undefined",
コード例 #2
0
 def test_dictvalidator_invalid_type_str(self):
     validator = validation_utils.DictTypeValidator(str, int)
     self.assertRaises(voluptuous.error.Invalid, validator, 'aaaa')
コード例 #3
0
 def test_dictvalidator_invalid_dict_without_cast(self):
     validator = validation_utils.DictTypeValidator(str, str, cast=False)
     self.assertRaises(voluptuous.error.Invalid, validator, {
         'a': '1',
         'b': 2
     })
コード例 #4
0
 def test_dictvalidator_invalid_dict_with_cast(self):
     validator = validation_utils.DictTypeValidator(str, int)
     self.assertRaises(voluptuous.error.Invalid, validator, {
         'a': '1',
         'b': 'aa'
     })
コード例 #5
0
 def test_dictvalidator_valid_dict_without_cast(self):
     validator = validation_utils.DictTypeValidator(str, str, cast=False)
     self.assertEqual(validator({'a': '1', 'b': '2'}), {'a': '1', 'b': '2'})