From 5c10062ce0ffb83010aba800f25f2df3f6540211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Barrois?= Date: Tue, 29 Oct 2013 01:07:43 +0100 Subject: Fix FuzzyDecimal on Python2.6. --- factory/compat.py | 10 ++++++++++ factory/fuzzy.py | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'factory') diff --git a/factory/compat.py b/factory/compat.py index f77458f..1e0b2d2 100644 --- a/factory/compat.py +++ b/factory/compat.py @@ -24,6 +24,7 @@ """Compatibility tools""" import datetime +import decimal import sys PY2 = (sys.version_info[0] == 2) @@ -40,6 +41,15 @@ else: # pragma: no cover from io import BytesIO + +if sys.version_info[:1] == (2, 6): # pragma: no cover + def float_to_decimal(fl): + return decimal.Decimal(str(fl)) +else: # pragma: no cover + def float_to_decimal(fl): + return decimal.Decimal(fl) + + try: # pragma: no cover # Python >= 3.2 UTC = datetime.timezone.utc diff --git a/factory/fuzzy.py b/factory/fuzzy.py index 6c7a866..34949c5 100644 --- a/factory/fuzzy.py +++ b/factory/fuzzy.py @@ -136,7 +136,7 @@ class FuzzyDecimal(BaseFuzzyAttribute): super(FuzzyDecimal, self).__init__(**kwargs) def fuzz(self): - base = decimal.Decimal(random.uniform(self.low, self.high)) + base = compat.float_to_decimal(random.uniform(self.low, self.high)) return base.quantize(decimal.Decimal(10) ** -self.precision) -- cgit v1.2.3