gh-96844: Improve error message of list.remove (gh-106455)

This commit is contained in:
Dong-hee Na 2023-07-06 07:19:49 +09:00 committed by GitHub
parent c16ea94abc
commit 217f47d6e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 5 deletions

View File

@ -409,10 +409,10 @@ Simple example::
>>> [1, 2, 3].remove(42) >>> [1, 2, 3].remove(42)
Traceback (most recent call last): Traceback (most recent call last):
File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list ValueError: 42 is not in list
That doctest succeeds if :exc:`ValueError` is raised, with the ``list.remove(x): That doctest succeeds if :exc:`ValueError` is raised, with the ``42 is not in list``
x not in list`` detail as shown. detail as shown.
The expected output for an exception must start with a traceback header, which The expected output for an exception must start with a traceback header, which
may be either of the following two lines, indented the same as the first line of may be either of the following two lines, indented the same as the first line of

View File

@ -328,7 +328,7 @@ class ElementTreeTest(unittest.TestCase):
self.serialize_check(element, '<tag key="value" />') # 5 self.serialize_check(element, '<tag key="value" />') # 5
with self.assertRaises(ValueError) as cm: with self.assertRaises(ValueError) as cm:
element.remove(subelement) element.remove(subelement)
self.assertEqual(str(cm.exception), 'list.remove(x): x not in list') self.assertIn('not in list', str(cm.exception))
self.serialize_check(element, '<tag key="value" />') # 6 self.serialize_check(element, '<tag key="value" />') # 6
element[0:0] = [subelement, subelement, subelement] element[0:0] = [subelement, subelement, subelement]
self.serialize_check(element[1], '<subtag />') self.serialize_check(element[1], '<subtag />')

View File

@ -0,0 +1 @@
Improve error message of :meth:`list.remove`. Patch by Dong-hee Na.

View File

@ -2694,7 +2694,7 @@ list_remove(PyListObject *self, PyObject *value)
else if (cmp < 0) else if (cmp < 0)
return NULL; return NULL;
} }
PyErr_SetString(PyExc_ValueError, "list.remove(x): x not in list"); PyErr_Format(PyExc_ValueError, "%R is not in list", value);
return NULL; return NULL;
} }