Issue #12079: Decimal(0).fma(Decimal('inf'), 'not a number') should give a TypeError, not a Decimal.InvalidOperation
This commit is contained in:
parent
203bdb3028
commit
b455e58b95
|
@ -1871,6 +1871,7 @@ class Decimal(object):
|
|||
"""
|
||||
|
||||
other = _convert_other(other, raiseit=True)
|
||||
third = _convert_other(third, raiseit=True)
|
||||
|
||||
# compute product; raise InvalidOperation if either operand is
|
||||
# a signaling NaN or if the product is zero times infinity.
|
||||
|
@ -1900,7 +1901,6 @@ class Decimal(object):
|
|||
str(int(self._int) * int(other._int)),
|
||||
self._exp + other._exp)
|
||||
|
||||
third = _convert_other(third, raiseit=True)
|
||||
return product.__add__(third, context)
|
||||
|
||||
def _power_modulo(self, other, modulo, context=None):
|
||||
|
|
|
@ -1970,6 +1970,17 @@ class ContextAPItests(unittest.TestCase):
|
|||
self.assertRaises(TypeError, c.fma, 2, '3', 4)
|
||||
self.assertRaises(TypeError, c.fma, 2, 3, '4')
|
||||
|
||||
# Issue 12079 for Context.fma ...
|
||||
self.assertRaises(TypeError, c.fma,
|
||||
Decimal('Infinity'), Decimal(0), "not a decimal")
|
||||
self.assertRaises(TypeError, c.fma,
|
||||
Decimal(1), Decimal('snan'), 1.222)
|
||||
# ... and for Decimal.fma.
|
||||
self.assertRaises(TypeError, Decimal('Infinity').fma,
|
||||
Decimal(0), "not a decimal")
|
||||
self.assertRaises(TypeError, Decimal(1).fma,
|
||||
Decimal('snan'), 1.222)
|
||||
|
||||
def test_is_finite(self):
|
||||
c = Context()
|
||||
d = c.is_finite(Decimal(10))
|
||||
|
|
|
@ -153,6 +153,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #12079: Decimal('Infinity').fma(Decimal('0'), (3.91224318126786e+19+0j))
|
||||
now raises TypeError (reflecting the invalid type of the 3rd argument) rather
|
||||
than Decimal.InvalidOperation.
|
||||
|
||||
- Issue #12124: zipimport doesn't keep a reference to zlib.decompress() anymore
|
||||
to be able to unload the module.
|
||||
|
||||
|
|
Loading…
Reference in New Issue