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.
This commit is contained in:
Eric Smith 2007-09-04 23:04:22 +00:00
parent 0af17617c5
commit 11529195ca
3 changed files with 31 additions and 25 deletions

View file

@ -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 */