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>
error_msg = re.escape("unsupported format character 'z'")
with self.assertRaisesRegex(ValueError, error_msg):
"%z.1f" % 0 # not allowed in old style string interpolation
+ with self.assertRaisesRegex(ValueError, error_msg):
+ b"%z.1f" % 0
if __name__ == "__main__":
--- /dev/null
+Disallow the "z" format specifier in %-format of bytes objects.
case ' ': flags |= F_BLANK; continue;
case '#': flags |= F_ALT; continue;
case '0': flags |= F_ZERO; continue;
- case 'z': flags |= F_NO_NEG_0; continue;
}
break;
}