Author: Raffael Tfirst <raffael.tfi...@gmail.com> Branch: py3.5 Changeset: r86443:0a1d00e6444f Date: 2016-08-23 13:36 +0200 http://bitbucket.org/pypy/pypy/changeset/0a1d00e6444f/
Log: Change error message on unpack and extended unpack if there are more values expected than available diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py --- a/pypy/interpreter/baseobjspace.py +++ b/pypy/interpreter/baseobjspace.py @@ -942,8 +942,8 @@ idx += 1 if idx < expected_length: raise oefmt(self.w_ValueError, - "need more than %d value%s to unpack", - idx, "" if idx == 1 else "s") + "not enough values to unpack (expected %d, got %d)", + expected_length, idx) return items def unpackiterable_unroll(self, w_iterable, expected_length): diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py --- a/pypy/interpreter/pyopcode.py +++ b/pypy/interpreter/pyopcode.py @@ -820,13 +820,9 @@ itemcount = len(items) count = left + right if count > itemcount: - if count == 1: - plural = '' - else: - plural = 's' raise oefmt(self.space.w_ValueError, - "need more than %d value%s to unpack", - itemcount, plural) + "not enough values to unpack (expected at least %d, got %d)", + count, itemcount) right = itemcount - right assert right >= 0 # push values in reverse order diff --git a/pypy/interpreter/test/test_interpreter.py b/pypy/interpreter/test/test_interpreter.py --- a/pypy/interpreter/test/test_interpreter.py +++ b/pypy/interpreter/test/test_interpreter.py @@ -458,7 +458,7 @@ try: a, *b, c, d, e = Seq() except ValueError as e: - assert str(e) == "need more than 3 values to unpack" + assert str(e) == "not enough values to unpack (expected at least 4, got 3)" else: assert False, "Expected ValueError" """ diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py --- a/pypy/objspace/std/objspace.py +++ b/pypy/objspace/std/objspace.py @@ -401,8 +401,8 @@ "too many values to unpack (expected %d)", expected) else: raise oefmt(self.w_ValueError, - "need more than %d value%s to unpack", - got, "" if got == 1 else "s") + "not enough values to unpack (expected %d, got %d)", + expected, got) def unpackiterable(self, w_obj, expected_length=-1): if isinstance(w_obj, W_AbstractTupleObject) and self._uses_tuple_iter(w_obj): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit