diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-11-23 17:19:43 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-11-23 17:19:43 -0500 |
| commit | 4acfce6c4c1da91901921ddfae7a682771817945 (patch) | |
| tree | e690ac0c728b15d79709a13c5601d4ed9dd0466f /lib/sqlalchemy/sql | |
| parent | 50634fcb2d29d3af17cb5b6cb0d12fdf8edaa98e (diff) | |
| download | sqlalchemy-4acfce6c4c1da91901921ddfae7a682771817945.tar.gz | |
- evaulate decimal_return_scale statelessly. Don't re-assign to self.decimal_return_scale
so that __repr__() is maintained (for alembic tests)
Diffstat (limited to 'lib/sqlalchemy/sql')
| -rw-r--r-- | lib/sqlalchemy/sql/sqltypes.py | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/sqlalchemy/sql/sqltypes.py b/lib/sqlalchemy/sql/sqltypes.py index 7cf5a6dca..7c9a65166 100644 --- a/lib/sqlalchemy/sql/sqltypes.py +++ b/lib/sqlalchemy/sql/sqltypes.py @@ -503,12 +503,18 @@ class Numeric(_DateAffinity, TypeEngine): """ self.precision = precision self.scale = scale - self.decimal_return_scale = decimal_return_scale \ - if decimal_return_scale is not None \ - else self.scale if self.scale is not None \ - else self._default_decimal_return_scale + self.decimal_return_scale = decimal_return_scale self.asdecimal = asdecimal + @property + def _effective_decimal_return_scale(self): + if self.decimal_return_scale is not None: + return self.decimal_return_scale + elif getattr(self, "scale", None) is not None: + return self.scale + else: + return self._default_decimal_return_scale + def get_dbapi_type(self, dbapi): return dbapi.NUMBER @@ -626,9 +632,7 @@ class Float(Numeric): """ self.precision = precision self.asdecimal = asdecimal - self.decimal_return_scale = decimal_return_scale \ - if decimal_return_scale is not None \ - else self._default_decimal_return_scale + self.decimal_return_scale = decimal_return_scale if kwargs: util.warn_deprecated("Additional keyword arguments " "passed to Float ignored.") @@ -636,7 +640,8 @@ class Float(Numeric): def result_processor(self, dialect, coltype): if self.asdecimal: return processors.to_decimal_processor_factory( - decimal.Decimal, self.decimal_return_scale) + decimal.Decimal, + self._effective_decimal_return_scale) else: return None |
