From 11529195cae2438a3ac003babcb1b11af67c4037 Mon Sep 17 00:00:00 2001 From: Eric Smith Date: Tue, 4 Sep 2007 23:04:22 +0000 Subject: Changed some ValueError's to KeyError and IndexError. Corrected code for invalid conversion specifier. Added tests to verify. Modified string.Formatter to correctly expand format_spec's, and added a limit to recursion depth. Added _vformat() method to support both of these. --- Objects/stringlib/string_format.h | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'Objects/stringlib/string_format.h') diff --git a/Objects/stringlib/string_format.h b/Objects/stringlib/string_format.h index de700f618b..ea8b0e72f6 100644 --- a/Objects/stringlib/string_format.h +++ b/Objects/stringlib/string_format.h @@ -414,8 +414,7 @@ get_field_object(SubString *input, PyObject *args, PyObject *kwargs) if (key == NULL) goto error; if ((kwargs == NULL) || (obj = PyDict_GetItem(kwargs, key)) == NULL) { - PyErr_SetString(PyExc_ValueError, "Keyword argument not found " - "in format string"); + PyErr_SetObject(PyExc_KeyError, key); Py_DECREF(key); goto error; } @@ -425,12 +424,8 @@ get_field_object(SubString *input, PyObject *args, PyObject *kwargs) else { /* look up in args */ obj = PySequence_GetItem(args, index); - if (obj == NULL) { - /* translate IndexError to a ValueError */ - PyErr_SetString(PyExc_ValueError, "Not enough positional arguments " - "in format string"); + if (obj == NULL) goto error; - } } /* iterate over the rest of the field_name */ -- cgit v1.2.1