changeset: 90222:dc6c2ab7fec2 user: Mark Dickinson date: Fri Apr 11 14:34:40 2014 -0400 files: Lib/test/test_builtin.py Misc/ACKS Misc/NEWS Objects/longobject.c description: Issue #21193: Make (e.g.,) pow(2, -3, 5) raise ValueError rather than TypeError. Patch by Josh Rosenberg. diff -r a3f8afbd3973 -r dc6c2ab7fec2 Lib/test/test_builtin.py --- a/Lib/test/test_builtin.py Fri Apr 11 14:11:34 2014 -0400 +++ b/Lib/test/test_builtin.py Fri Apr 11 14:34:40 2014 -0400 @@ -1085,7 +1085,7 @@ 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 -r a3f8afbd3973 -r dc6c2ab7fec2 Misc/ACKS --- a/Misc/ACKS Fri Apr 11 14:11:34 2014 -0400 +++ b/Misc/ACKS Fri Apr 11 14:34:40 2014 -0400 @@ -1111,6 +1111,7 @@ Case Roole Timothy Roscoe Erik Rose +Josh Rosenberg Jim Roskind Brian Rosner Guido van Rossum diff -r a3f8afbd3973 -r dc6c2ab7fec2 Misc/NEWS --- a/Misc/NEWS Fri Apr 11 14:11:34 2014 -0400 +++ b/Misc/NEWS Fri Apr 11 14:34:40 2014 -0400 @@ -10,6 +10,9 @@ 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 -r a3f8afbd3973 -r dc6c2ab7fec2 Objects/longobject.c --- a/Objects/longobject.c Fri Apr 11 14:11:34 2014 -0400 +++ b/Objects/longobject.c Fri Apr 11 14:34:40 2014 -0400 @@ -3841,7 +3841,7 @@ 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; }