mirror of https://github.com/python/cpython
gh-104018: disallow "z" format specifier in %-format of byte strings (GH-104033)
PEP-0682 specified that %-formatting would not support the "z" specifier, but it was unintentionally allowed for bytes. This PR makes use of the "z" flag an error for %-formatting in a bytestring. Issue: #104018 --------- Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
This commit is contained in:
parent
5078eedc5b
commit
3ed8c88290
|
@ -619,6 +619,8 @@ class FormatTest(unittest.TestCase):
|
||||||
error_msg = re.escape("unsupported format character 'z'")
|
error_msg = re.escape("unsupported format character 'z'")
|
||||||
with self.assertRaisesRegex(ValueError, error_msg):
|
with self.assertRaisesRegex(ValueError, error_msg):
|
||||||
"%z.1f" % 0 # not allowed in old style string interpolation
|
"%z.1f" % 0 # not allowed in old style string interpolation
|
||||||
|
with self.assertRaisesRegex(ValueError, error_msg):
|
||||||
|
b"%z.1f" % 0
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Disallow the "z" format specifier in %-format of bytes objects.
|
|
@ -705,7 +705,6 @@ _PyBytes_FormatEx(const char *format, Py_ssize_t format_len,
|
||||||
case ' ': flags |= F_BLANK; continue;
|
case ' ': flags |= F_BLANK; continue;
|
||||||
case '#': flags |= F_ALT; continue;
|
case '#': flags |= F_ALT; continue;
|
||||||
case '0': flags |= F_ZERO; continue;
|
case '0': flags |= F_ZERO; continue;
|
||||||
case 'z': flags |= F_NO_NEG_0; continue;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue