summaryrefslogtreecommitdiff
path: root/Python/ceval.c
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2015-04-15 17:08:45 -0400
committerR David Murray <rdmurray@bitdance.com>2015-04-15 17:08:45 -0400
commit9d6c9533eba49f69a10f9fba83b98bb46d07f2d3 (patch)
tree5eefb75dde841010d2ef8417438e3990aedce152 /Python/ceval.c
parentbfcb96b7b6cf53687d5489567c41041199bf166d (diff)
downloadcpython-9d6c9533eba49f69a10f9fba83b98bb46d07f2d3.tar.gz
#23949: Improve tuple unpacking error messages.
Patch by Arnon Yaari.
Diffstat (limited to 'Python/ceval.c')
-rw-r--r--Python/ceval.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index d68cdc6292..2f3d3ad8b8 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3825,9 +3825,17 @@ unpack_iterable(PyObject *v, int argcnt, int argcntafter, PyObject **sp)
if (w == NULL) {
/* Iterator done, via error or exhaustion. */
if (!PyErr_Occurred()) {
- PyErr_Format(PyExc_ValueError,
- "need more than %d value%s to unpack",
- i, i == 1 ? "" : "s");
+ if (argcntafter == -1) {
+ PyErr_Format(PyExc_ValueError,
+ "not enough values to unpack (expected %d, got %d)",
+ argcnt, i);
+ }
+ else {
+ PyErr_Format(PyExc_ValueError,
+ "not enough values to unpack "
+ "(expected at least %d, got %d)",
+ argcnt + argcntafter, i);
+ }
}
goto Error;
}
@@ -3844,8 +3852,9 @@ unpack_iterable(PyObject *v, int argcnt, int argcntafter, PyObject **sp)
return 1;
}
Py_DECREF(w);
- PyErr_Format(PyExc_ValueError, "too many values to unpack "
- "(expected %d)", argcnt);
+ PyErr_Format(PyExc_ValueError,
+ "too many values to unpack (expected %d)",
+ argcnt);
goto Error;
}
@@ -3857,8 +3866,9 @@ unpack_iterable(PyObject *v, int argcnt, int argcntafter, PyObject **sp)
ll = PyList_GET_SIZE(l);
if (ll < argcntafter) {
- PyErr_Format(PyExc_ValueError, "need more than %zd values to unpack",
- argcnt + ll);
+ PyErr_Format(PyExc_ValueError,
+ "not enough values to unpack (expected at least %d, got %zd)",
+ argcnt + argcntafter, argcnt + ll);
goto Error;
}