"""
import array
+import operator
import os
import re
import sys
check(b'%i%b %*.*b', (10, b'3', 5, 3, b'abc',), b'103 abc')
check(b'%c', b'a', b'a')
+ self.assertRaisesRegex(TypeError, '%i format: a real number is required, not complex', operator.mod, '%i', 2j)
+ self.assertRaisesRegex(TypeError, '%d format: a real number is required, not complex', operator.mod, '%d', 2j)
+
def test_imod(self):
b = self.type2test(b'hello, %b!')
orig = b
"%x format: an integer is required, not str")
test_exc_common('%x', 3.14, TypeError,
"%x format: an integer is required, not float")
+ test_exc_common('%i', '1', TypeError,
+ "%i format: a real number is required, not str")
+ test_exc_common('%i', b'1', TypeError,
+ "%i format: a real number is required, not bytes")
def test_str_format(self):
testformat("%r", "\u0378", "'\\u0378'") # non printable
--- /dev/null
+Fix error message when formatting bytes using the ``'i'`` flag.\r
+Patch by Maxim Ageev.
formatlong(PyObject *v, int flags, int prec, int type)
{
PyObject *result, *iobj;
- if (type == 'i')
- type = 'd';
if (PyLong_Check(v))
return _PyUnicode_FormatLong(v, flags & F_ALT, prec, type);
if (PyNumber_Check(v)) {