Core and Builtins
-----------------
+ - Issue #29000: Fixed bytes formatting of octals with zero padding in alternate
+ form.
+
+- Issue #26919: On Android, operating system data is now always encoded/decoded
+ to/from UTF-8, instead of the locale encoding to avoid inconsistencies with
+ os.fsencode() and os.fsdecode() which are already using UTF-8.
+
+- Issue #28991: functools.lru_cache() was susceptible to an obscure $
+ bug triggerable by a monkey-patched len() function.
+
+- Issue #28739: f-string expressions no longer accepted as docstrings and
+ by ast.literal_eval() even if they do not include expressions.
+
- Issue #28512: Fixed setting the offset attribute of SyntaxError by
PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
if (width > len)
width--;
}
- if ((flags & F_ALT) && (c == 'x' || c == 'X')) {
+
+ /* Write the numeric prefix for "x", "X" and "o" formats
+ if the alternate form is used.
+ For example, write "0x" for the "%#x" format. */
+ if ((flags & F_ALT) && (c == 'o' || c == 'x' || c == 'X')) {
assert(pbuf[0] == '0');
assert(pbuf[1] == c);
if (fill != ' ') {