bpo-39200: Correct the error message for min/max builtin function (GH-17814)

Correct the error message when calling the min() or max() with
no arguments.
This commit is contained in:
Dong-hee Na 2020-01-11 01:31:43 +09:00 committed by Victor Stinner
parent c39b52f152
commit abdc634f33
3 changed files with 21 additions and 4 deletions

View File

@ -949,7 +949,12 @@ class BuiltinTest(unittest.TestCase):
self.assertEqual(max(1, 2.0, 3), 3) self.assertEqual(max(1, 2.0, 3), 3)
self.assertEqual(max(1.0, 2, 3), 3) self.assertEqual(max(1.0, 2, 3), 3)
self.assertRaises(TypeError, max) with self.assertRaisesRegex(
TypeError,
'max expected at least 1 argument, got 0'
):
max()
self.assertRaises(TypeError, max, 42) self.assertRaises(TypeError, max, 42)
self.assertRaises(ValueError, max, ()) self.assertRaises(ValueError, max, ())
class BadSeq: class BadSeq:
@ -1003,7 +1008,12 @@ class BuiltinTest(unittest.TestCase):
self.assertEqual(min(1, 2.0, 3), 1) self.assertEqual(min(1, 2.0, 3), 1)
self.assertEqual(min(1.0, 2, 3), 1.0) self.assertEqual(min(1.0, 2, 3), 1.0)
self.assertRaises(TypeError, min) with self.assertRaisesRegex(
TypeError,
'min expected at least 1 argument, got 0'
):
min()
self.assertRaises(TypeError, min, 42) self.assertRaises(TypeError, min, 42)
self.assertRaises(ValueError, min, ()) self.assertRaises(ValueError, min, ())
class BadSeq: class BadSeq:

View File

@ -0,0 +1,2 @@
Correct the error message when calling the :func:`min` or :func:`max` with
no arguments. Patch by Dong-hee Na.

View File

@ -1589,10 +1589,15 @@ min_max(PyObject *args, PyObject *kwds, int op)
const int positional = PyTuple_Size(args) > 1; const int positional = PyTuple_Size(args) > 1;
int ret; int ret;
if (positional) if (positional) {
v = args; v = args;
else if (!PyArg_UnpackTuple(args, name, 1, 1, &v)) }
else if (!PyArg_UnpackTuple(args, name, 1, 1, &v)) {
if (PyExceptionClass_Check(PyExc_TypeError)) {
PyErr_Format(PyExc_TypeError, "%s expected at least 1 argument, got 0", name);
}
return NULL; return NULL;
}
emptytuple = PyTuple_New(0); emptytuple = PyTuple_New(0);
if (emptytuple == NULL) if (emptytuple == NULL)