diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2007-08-14 21:57:32 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2007-08-14 21:57:32 (GMT) |
commit | ff398c6f957fcd0e55aa57c0eaa5c1d24c5bc2f1 (patch) | |
tree | 1fb5dc2dfb074e6b0d10c167b3ab5deeab2ef4f3 | |
parent | 3eed76522389d55248a71aa8c83203aa3ae0873b (diff) | |
download | cpython-ff398c6f957fcd0e55aa57c0eaa5c1d24c5bc2f1.zip cpython-ff398c6f957fcd0e55aa57c0eaa5c1d24c5bc2f1.tar.gz cpython-ff398c6f957fcd0e55aa57c0eaa5c1d24c5bc2f1.tar.bz2 |
Format bools properly in %d.
-rw-r--r-- | Lib/test/test_bool.py | 6 | ||||
-rw-r--r-- | Objects/stringobject.c | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py index 7a9022e..bbaea85 100644 --- a/Lib/test/test_bool.py +++ b/Lib/test/test_bool.py @@ -163,6 +163,12 @@ class BoolTest(unittest.TestCase): self.assertIs(bool(""), False) self.assertIs(bool(), False) + def test_format(self): + self.assertEqual("%d" % False, "0") + self.assertEqual("%d" % True, "1") + self.assertEqual("%x" % False, "0") + self.assertEqual("%x" % True, "1") + def test_hasattr(self): self.assertIs(hasattr([], "append"), True) self.assertIs(hasattr([], "wobble"), False) diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 7a35974..b1d711d 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -4144,11 +4144,14 @@ _PyString_FormatLong(PyObject *val, int flags, int prec, int type, return NULL; } - switch (type) { case 'd': case 'u': - result = Py_Type(val)->tp_str(val); + /* Special-case boolean: we want 0/1 */ + if (PyBool_Check(val)) + result = PyNumber_ToBase(val, 10); + else + result = Py_Type(val)->tp_str(val); break; case 'o': numnondigits = 2; |