From 0c346d827d38917c4ab4b7679e223f163aec4724 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Fri, 11 Apr 2014 14:34:40 -0400 Subject: Issue #21193: Make (e.g.,) pow(2, -3, 5) raise ValueError rather than TypeError. Patch by Josh Rosenberg. --- Lib/test/test_builtin.py | 2 +- Misc/ACKS | 1 + Misc/NEWS | 3 +++ Objects/longobject.c | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index b561a6f..9d2725e 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -1085,7 +1085,7 @@ class BuiltinTest(unittest.TestCase): if isinstance(x, float) or \ isinstance(y, float) or \ isinstance(z, float): - self.assertRaises(TypeError, pow, x, y, z) + self.assertRaises(ValueError, pow, x, y, z) else: self.assertAlmostEqual(pow(x, y, z), 24.0) diff --git a/Misc/ACKS b/Misc/ACKS index f1ed07c..437aa46 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1111,6 +1111,7 @@ Armin Ronacher Case Roole Timothy Roscoe Erik Rose +Josh Rosenberg Jim Roskind Brian Rosner Guido van Rossum diff --git a/Misc/NEWS b/Misc/NEWS index dc61927..0b55872 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ Release date: TBA Core and Builtins ----------------- +- Issue #21193: pow(a, b, c) now raises ValueError rather than TypeError when b + is negative. Patch by Josh Rosenberg. + - PEP 465 and Issue #21176: Add the '@' operator for matrix multiplication. - Issue #21134: Fix segfault when str is called on an uninitialized diff --git a/Objects/longobject.c b/Objects/longobject.c index 7036c0e..b749fd3 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -3841,7 +3841,7 @@ long_pow(PyObject *v, PyObject *w, PyObject *x) if (Py_SIZE(b) < 0) { /* if exponent is negative */ if (c) { - PyErr_SetString(PyExc_TypeError, "pow() 2nd argument " + PyErr_SetString(PyExc_ValueError, "pow() 2nd argument " "cannot be negative when 3rd argument specified"); goto Error; } -- cgit v0.12