mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
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:
parent
0af17617c5
commit
11529195ca
3 changed files with 31 additions and 25 deletions
|
@ -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 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue