From fc6e8fe5edbeb502d6eb699c7c7aa3f00396667f Mon Sep 17 00:00:00 2001 From: Eric Smith Date: Fri, 11 Jan 2008 00:17:22 +0000 Subject: [PATCH] Simplifed argument parsing in object.__format__, added test case. --- Lib/test/test_builtin.py | 4 ++++ Objects/typeobject.c | 6 +----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index be6f391ba8f..c5bb54a52e9 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -558,6 +558,10 @@ def empty_format_spec(value): # TypeError because self.__format__ returns the wrong type self.assertRaises(TypeError, format, B(), "") + # TypeError because format_spec is not unicode + self.assertRaises(TypeError, format, object(), 4) + self.assertRaises(TypeError, format, object(), object()) + # make sure we can take a subclass of str as a format spec self.assertEqual(format(0, C('10')), ' 0') diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 2a0dd2458aa..682c029126a 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2950,12 +2950,8 @@ object_format(PyObject *self, PyObject *args) PyObject *result = NULL; PyObject *format_meth = NULL; - if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) + if (!PyArg_ParseTuple(args, "U:__format__", &format_spec)) return NULL; - if (!PyUnicode_Check(format_spec)) { - PyErr_SetString(PyExc_TypeError, "Unicode object required"); - return NULL; - } self_as_str = PyObject_Str(self); if (self_as_str != NULL) {