]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Stopgap for post- #646 and r3030, wedge in 0.3 Decimals-are-floats behavior for vanil...
authorJason Kirtland <jek@discorporate.us>
Wed, 1 Aug 2007 20:07:07 +0000 (20:07 +0000)
committerJason Kirtland <jek@discorporate.us>
Wed, 1 Aug 2007 20:07:07 +0000 (20:07 +0000)
lib/sqlalchemy/databases/mysql.py
lib/sqlalchemy/databases/postgres.py
lib/sqlalchemy/types.py
lib/sqlalchemy/util.py

index 331b672bdf5bdf2a15b9c69833b5137cdcaef34d..81a17cbe7c54f4071b8381e6f48482866fc775bc 100644 (file)
@@ -6,7 +6,6 @@
 
 import re, datetime, inspect, warnings, weakref, operator
 from array import array as _array
-from decimal import Decimal
 
 from sqlalchemy import sql, schema, ansisql
 from sqlalchemy.engine import default
@@ -166,7 +165,7 @@ class MSNumeric(sqltypes.Numeric, _NumericType):
         return value
 
     def convert_result_value(self, value, dialect):
-        if not self.asdecimal and isinstance(value, Decimal):
+        if not self.asdecimal and isinstance(value, util.decimal_type):
             return float(value)
         else:
             return value
index a40ed9bdf42ac58438242a1c61d871e52c5dcb50..b9b2f15aac0eb50b7cde5065d47b4f18b927bf63 100644 (file)
@@ -6,10 +6,9 @@
 
 import re, random, warnings, operator
 
-from sqlalchemy import sql, schema, ansisql, exceptions
+from sqlalchemy import sql, schema, ansisql, exceptions, util
 from sqlalchemy.engine import base, default
 import sqlalchemy.types as sqltypes
-from decimal import Decimal
 
 try:
     import mx.DateTime.DateTime as mxDateTime
@@ -32,7 +31,7 @@ class PGNumeric(sqltypes.Numeric):
         return value
 
     def convert_result_value(self, value, dialect):
-        if not self.asdecimal and isinstance(value, Decimal):
+        if not self.asdecimal and isinstance(value, util.decimal_type):
             return float(value)
         else:
             return value
index ec1459852093aa2743bb6bcfc08c95f29a5a1264..56bd5a777e71ea68f6d713e82ec182aca14c961b 100644 (file)
@@ -13,13 +13,13 @@ __all__ = [ 'TypeEngine', 'TypeDecorator', 'NullTypeEngine',
 
 import inspect
 import datetime as dt
-from decimal import Decimal
 try:
     import cPickle as pickle
 except:
     import pickle
 
 from sqlalchemy import exceptions
+from sqlalchemy.util import Decimal
 
 class AbstractType(object):
     def __init__(self, *args, **kwargs):
index 6cb65e3953c64e6afcb1b5f5642fd0a9e0ae302b..7391d86fd6808ff20bcbc75558d026be12f8982c 100644 (file)
@@ -32,6 +32,22 @@ except:
             i -= 1
         raise StopIteration()
 
+try:
+    # Try the standard decimal for > 2.3 or the compatibility module
+    # for 2.3, if installed.
+    from decimal import Decimal
+    decimal_type = Decimal
+except ImportError:
+    def Decimal(arg):
+        if Decimal.warn:
+            warnings.warn(RuntimeWarning(
+                "True Decimal types not available on this Python, "
+                "falling back to floats."))
+            Decimal.warn = False
+        return float(arg)
+    Decimal.warn = True
+    decimal_type = float
+
 if sys.version_info >= (2, 5):
     class PopulateDict(dict):
         """a dict which populates missing values via a creation function.