summaryrefslogtreecommitdiffstats
path: root/Objects/stringlib
diff options
context:
space:
mode:
authorEric Smith <eric@trueblade.com>2010-11-04 17:06:58 (GMT)
committerEric Smith <eric@trueblade.com>2010-11-04 17:06:58 (GMT)
commit27bbca6f79690472c7beff8020ff331b14450b77 (patch)
tree3b6ea39069caf2f197656092c45e9cba0b384b85 /Objects/stringlib
parent2397dd58b70986db898f689fe7a1597cdd51f29f (diff)
downloadcpython-27bbca6f79690472c7beff8020ff331b14450b77.zip
cpython-27bbca6f79690472c7beff8020ff331b14450b77.tar.gz
cpython-27bbca6f79690472c7beff8020ff331b14450b77.tar.bz2
Issue #6081: Add str.format_map. str.format_map(mapping) is similar to str.format(**mapping), except mapping does not get converted to a dict.
Diffstat (limited to 'Objects/stringlib')
-rw-r--r--Objects/stringlib/string_format.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/Objects/stringlib/string_format.h b/Objects/stringlib/string_format.h
index 126c870..5205aa9 100644
--- a/Objects/stringlib/string_format.h
+++ b/Objects/stringlib/string_format.h
@@ -499,7 +499,11 @@ get_field_object(SubString *input, PyObject *args, PyObject *kwargs,
PyObject *key = SubString_new_object(&first);
if (key == NULL)
goto error;
- if ((kwargs == NULL) || (obj = PyDict_GetItem(kwargs, key)) == NULL) {
+
+ /* Use PyObject_GetItem instead of PyDict_GetItem because this
+ code is no longer just used with kwargs. It might be passed
+ a non-dict when called through format_map. */
+ if ((kwargs == NULL) || (obj = PyObject_GetItem(kwargs, key)) == NULL) {
PyErr_SetObject(PyExc_KeyError, key);
Py_DECREF(key);
goto error;
@@ -1039,6 +1043,11 @@ do_string_format(PyObject *self, PyObject *args, PyObject *kwargs)
return build_string(&input, args, kwargs, recursion_depth, &auto_number);
}
+static PyObject *
+do_string_format_map(PyObject *self, PyObject *obj)
+{
+ return do_string_format(self, NULL, obj);
+}
/************************************************************************/