Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r84691:9008c74dc4a6
Date: 2016-05-25 17:27 -0700
http://bitbucket.org/pypy/pypy/changeset/9008c74dc4a6/
Log: add 32bit only unsafe setters for test_decimal
diff --git a/lib_pypy/_decimal.py b/lib_pypy/_decimal.py
--- a/lib_pypy/_decimal.py
+++ b/lib_pypy/_decimal.py
@@ -161,6 +161,15 @@
_codecs.register_error('_decimal_encode', _handle_decimaldigits)
+def _unsafe_check(name, lo, hi, value):
+ if not -_sys.maxsize-1 <= value <= _sys.maxsize:
+ raise OverflowError(
+ "Python int too large to convert to C ssize_t")
+ if not lo <= value <= hi:
+ raise ValueError("valid range for unsafe %s is [%d, %d]" %
+ (name, lo, hi))
+
+
# Decimal class
_DEC_MINALLOC = 4
@@ -298,7 +307,8 @@
raise ValueError("exponent must be an integer")
if not -_sys.maxsize-1 <= exponent <= _sys.maxsize:
# Compatibility with CPython
- raise OverflowError()
+ raise OverflowError(
+ "Python int too large to convert to C ssize_t")
# coefficients
if not digits and not is_special:
@@ -1501,6 +1511,19 @@
_mpdec.mpd_free(output)
return result.decode()
+ if _sys.maxsize < 2**63-1:
+ def _unsafe_setprec(self, value):
+ _unsafe_check('prec', 1, 1070000000, value)
+ self.ctx.prec = value
+
+ def _unsafe_setemin(self, value):
+ _unsafe_check('emin', -1070000000, 0, value)
+ self.ctx.emin = value
+
+ def _unsafe_setemax(self, value):
+ _unsafe_check('emax', 0, 1070000000, value)
+ self.ctx.emax = value
+
class _SignalDict(_collections.abc.MutableMapping):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit