Deprecate cqlengine.Float(double_precision=True)
Overload deprecated in favor of distinct Float, Double types PYTHON-246
This commit is contained in:
@@ -591,18 +591,9 @@ class Boolean(Column):
|
|||||||
return self.validate(value)
|
return self.validate(value)
|
||||||
|
|
||||||
|
|
||||||
class Float(Column):
|
class BaseFloat(Column):
|
||||||
"""
|
|
||||||
Stores a floating point value
|
|
||||||
"""
|
|
||||||
db_type = 'double'
|
|
||||||
|
|
||||||
def __init__(self, double_precision=True, **kwargs):
|
|
||||||
self.db_type = 'double' if double_precision else 'float'
|
|
||||||
super(Float, self).__init__(**kwargs)
|
|
||||||
|
|
||||||
def validate(self, value):
|
def validate(self, value):
|
||||||
value = super(Float, self).validate(value)
|
value = super(BaseFloat, self).validate(value)
|
||||||
if value is None:
|
if value is None:
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
@@ -617,6 +608,31 @@ class Float(Column):
|
|||||||
return self.validate(value)
|
return self.validate(value)
|
||||||
|
|
||||||
|
|
||||||
|
class Float(BaseFloat):
|
||||||
|
"""
|
||||||
|
Stores a single-precision floating-point value
|
||||||
|
"""
|
||||||
|
db_type = 'float'
|
||||||
|
|
||||||
|
def __init__(self, double_precision=None, **kwargs):
|
||||||
|
if double_precision is None or bool(double_precision):
|
||||||
|
msg = "Float(double_precision=True) is deprecated. Use Double() type instead."
|
||||||
|
double_precision = True
|
||||||
|
warnings.warn(msg, DeprecationWarning)
|
||||||
|
log.warning(msg)
|
||||||
|
|
||||||
|
self.db_type = 'double' if double_precision else 'float'
|
||||||
|
|
||||||
|
super(Float, self).__init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class Double(BaseFloat):
|
||||||
|
"""
|
||||||
|
Stores a double-precision floating-point value
|
||||||
|
"""
|
||||||
|
db_type = 'double'
|
||||||
|
|
||||||
|
|
||||||
class Decimal(Column):
|
class Decimal(Column):
|
||||||
"""
|
"""
|
||||||
Stores a variable precision decimal value
|
Stores a variable precision decimal value
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ Columns of all types are initialized by passing :class:`.Column` attributes to t
|
|||||||
|
|
||||||
.. autoclass:: Decimal(**kwargs)
|
.. autoclass:: Decimal(**kwargs)
|
||||||
|
|
||||||
|
.. autoclass:: Double
|
||||||
|
|
||||||
.. autoclass:: Float
|
.. autoclass:: Float
|
||||||
|
|
||||||
.. autoclass:: Integer(**kwargs)
|
.. autoclass:: Integer(**kwargs)
|
||||||
|
|||||||
@@ -50,8 +50,9 @@ class BaseColumnIOTest(BaseCassEngTestCase):
|
|||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
super(BaseColumnIOTest, cls).setUpClass()
|
super(BaseColumnIOTest, cls).setUpClass()
|
||||||
|
|
||||||
#if the test column hasn't been defined, bail out
|
# if the test column hasn't been defined, bail out
|
||||||
if not cls.column: return
|
if not cls.column:
|
||||||
|
return
|
||||||
|
|
||||||
# create a table with the given column
|
# create a table with the given column
|
||||||
class IOTestModel(Model):
|
class IOTestModel(Model):
|
||||||
@@ -62,7 +63,7 @@ class BaseColumnIOTest(BaseCassEngTestCase):
|
|||||||
cls._generated_model = IOTestModel
|
cls._generated_model = IOTestModel
|
||||||
sync_table(cls._generated_model)
|
sync_table(cls._generated_model)
|
||||||
|
|
||||||
#tupleify the tested values
|
# tupleify the tested values
|
||||||
if not isinstance(cls.pkey_val, tuple):
|
if not isinstance(cls.pkey_val, tuple):
|
||||||
cls.pkey_val = cls.pkey_val,
|
cls.pkey_val = cls.pkey_val,
|
||||||
if not isinstance(cls.data_val, tuple):
|
if not isinstance(cls.data_val, tuple):
|
||||||
@@ -71,7 +72,8 @@ class BaseColumnIOTest(BaseCassEngTestCase):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def tearDownClass(cls):
|
def tearDownClass(cls):
|
||||||
super(BaseColumnIOTest, cls).tearDownClass()
|
super(BaseColumnIOTest, cls).tearDownClass()
|
||||||
if not cls.column: return
|
if not cls.column:
|
||||||
|
return
|
||||||
drop_table(cls._generated_model)
|
drop_table(cls._generated_model)
|
||||||
|
|
||||||
def comparator_converter(self, val):
|
def comparator_converter(self, val):
|
||||||
@@ -80,31 +82,35 @@ class BaseColumnIOTest(BaseCassEngTestCase):
|
|||||||
|
|
||||||
def test_column_io(self):
|
def test_column_io(self):
|
||||||
""" Tests the given models class creates and retrieves values as expected """
|
""" Tests the given models class creates and retrieves values as expected """
|
||||||
if not self.column: return
|
if not self.column:
|
||||||
|
return
|
||||||
for pkey, data in zip(self.pkey_val, self.data_val):
|
for pkey, data in zip(self.pkey_val, self.data_val):
|
||||||
#create
|
# create
|
||||||
m1 = self._generated_model.create(pkey=pkey, data=data)
|
m1 = self._generated_model.create(pkey=pkey, data=data)
|
||||||
|
|
||||||
#get
|
# get
|
||||||
m2 = self._generated_model.get(pkey=pkey)
|
m2 = self._generated_model.get(pkey=pkey)
|
||||||
assert m1.pkey == m2.pkey == self.comparator_converter(pkey), self.column
|
assert m1.pkey == m2.pkey == self.comparator_converter(pkey), self.column
|
||||||
assert m1.data == m2.data == self.comparator_converter(data), self.column
|
assert m1.data == m2.data == self.comparator_converter(data), self.column
|
||||||
|
|
||||||
#delete
|
# delete
|
||||||
self._generated_model.filter(pkey=pkey).delete()
|
self._generated_model.filter(pkey=pkey).delete()
|
||||||
|
|
||||||
|
|
||||||
class TestBlobIO(BaseColumnIOTest):
|
class TestBlobIO(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.Blob
|
column = columns.Blob
|
||||||
pkey_val = six.b('blake'), uuid4().bytes
|
pkey_val = six.b('blake'), uuid4().bytes
|
||||||
data_val = six.b('eggleston'), uuid4().bytes
|
data_val = six.b('eggleston'), uuid4().bytes
|
||||||
|
|
||||||
|
|
||||||
class TestBlobIO2(BaseColumnIOTest):
|
class TestBlobIO2(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.Blob
|
column = columns.Blob
|
||||||
pkey_val = bytearray(six.b('blake')), uuid4().bytes
|
pkey_val = bytearray(six.b('blake')), uuid4().bytes
|
||||||
data_val = bytearray(six.b('eggleston')), uuid4().bytes
|
data_val = bytearray(six.b('eggleston')), uuid4().bytes
|
||||||
|
|
||||||
|
|
||||||
class TestTextIO(BaseColumnIOTest):
|
class TestTextIO(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.Text
|
column = columns.Text
|
||||||
@@ -118,18 +124,21 @@ class TestNonBinaryTextIO(BaseColumnIOTest):
|
|||||||
pkey_val = 'bacon'
|
pkey_val = 'bacon'
|
||||||
data_val = '0xmonkey'
|
data_val = '0xmonkey'
|
||||||
|
|
||||||
|
|
||||||
class TestInteger(BaseColumnIOTest):
|
class TestInteger(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.Integer
|
column = columns.Integer
|
||||||
pkey_val = 5
|
pkey_val = 5
|
||||||
data_val = 6
|
data_val = 6
|
||||||
|
|
||||||
|
|
||||||
class TestBigInt(BaseColumnIOTest):
|
class TestBigInt(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.BigInt
|
column = columns.BigInt
|
||||||
pkey_val = 6
|
pkey_val = 6
|
||||||
data_val = pow(2, 63) - 1
|
data_val = pow(2, 63) - 1
|
||||||
|
|
||||||
|
|
||||||
class TestDateTime(BaseColumnIOTest):
|
class TestDateTime(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.DateTime
|
column = columns.DateTime
|
||||||
@@ -138,6 +147,7 @@ class TestDateTime(BaseColumnIOTest):
|
|||||||
pkey_val = now
|
pkey_val = now
|
||||||
data_val = now + timedelta(days=1)
|
data_val = now + timedelta(days=1)
|
||||||
|
|
||||||
|
|
||||||
class TestDate(BaseColumnIOTest):
|
class TestDate(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.Date
|
column = columns.Date
|
||||||
@@ -146,6 +156,7 @@ class TestDate(BaseColumnIOTest):
|
|||||||
pkey_val = now
|
pkey_val = now
|
||||||
data_val = now + timedelta(days=1)
|
data_val = now + timedelta(days=1)
|
||||||
|
|
||||||
|
|
||||||
class TestUUID(BaseColumnIOTest):
|
class TestUUID(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.UUID
|
column = columns.UUID
|
||||||
@@ -156,6 +167,7 @@ class TestUUID(BaseColumnIOTest):
|
|||||||
def comparator_converter(self, val):
|
def comparator_converter(self, val):
|
||||||
return val if isinstance(val, UUID) else UUID(val)
|
return val if isinstance(val, UUID) else UUID(val)
|
||||||
|
|
||||||
|
|
||||||
class TestTimeUUID(BaseColumnIOTest):
|
class TestTimeUUID(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.TimeUUID
|
column = columns.TimeUUID
|
||||||
@@ -166,13 +178,29 @@ class TestTimeUUID(BaseColumnIOTest):
|
|||||||
def comparator_converter(self, val):
|
def comparator_converter(self, val):
|
||||||
return val if isinstance(val, UUID) else UUID(val)
|
return val if isinstance(val, UUID) else UUID(val)
|
||||||
|
|
||||||
|
|
||||||
|
# until Floats are implicitly single:
|
||||||
|
class FloatSingle(columns.Float):
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super(FloatSingle, self).__init__(double_precision=False, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class TestFloatIO(BaseColumnIOTest):
|
class TestFloatIO(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.Float
|
column = FloatSingle
|
||||||
|
|
||||||
|
pkey_val = 4.75
|
||||||
|
data_val = -1.5
|
||||||
|
|
||||||
|
|
||||||
|
class TestDoubleIO(BaseColumnIOTest):
|
||||||
|
|
||||||
|
column = columns.Double
|
||||||
|
|
||||||
pkey_val = 3.14
|
pkey_val = 3.14
|
||||||
data_val = -1982.11
|
data_val = -1982.11
|
||||||
|
|
||||||
|
|
||||||
class TestDecimalIO(BaseColumnIOTest):
|
class TestDecimalIO(BaseColumnIOTest):
|
||||||
|
|
||||||
column = columns.Decimal
|
column = columns.Decimal
|
||||||
@@ -183,6 +211,7 @@ class TestDecimalIO(BaseColumnIOTest):
|
|||||||
def comparator_converter(self, val):
|
def comparator_converter(self, val):
|
||||||
return Decimal(val)
|
return Decimal(val)
|
||||||
|
|
||||||
|
|
||||||
class TestQuoter(unittest.TestCase):
|
class TestQuoter(unittest.TestCase):
|
||||||
|
|
||||||
def test_equals(self):
|
def test_equals(self):
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ class UserDefinedTypeTests(BaseCassEngTestCase):
|
|||||||
e = columns.Date()
|
e = columns.Date()
|
||||||
f = columns.DateTime()
|
f = columns.DateTime()
|
||||||
g = columns.Decimal()
|
g = columns.Decimal()
|
||||||
h = columns.Float()
|
h = columns.Float(double_precision=False)
|
||||||
i = columns.Inet()
|
i = columns.Inet()
|
||||||
j = columns.Integer()
|
j = columns.Integer()
|
||||||
k = columns.Text()
|
k = columns.Text()
|
||||||
@@ -227,7 +227,7 @@ class UserDefinedTypeTests(BaseCassEngTestCase):
|
|||||||
e = columns.Date()
|
e = columns.Date()
|
||||||
f = columns.DateTime()
|
f = columns.DateTime()
|
||||||
g = columns.Decimal()
|
g = columns.Decimal()
|
||||||
h = columns.Float(double_precision=True)
|
h = columns.Double()
|
||||||
i = columns.Inet()
|
i = columns.Inet()
|
||||||
j = columns.Integer()
|
j = columns.Integer()
|
||||||
k = columns.Text()
|
k = columns.Text()
|
||||||
|
|||||||
Reference in New Issue
Block a user