Message 407234 - Python tracker
While I'd prefer -1 overall, I would also prefer 3 over 2. If we were adding the feature from scratch, we wouldn't have decimal differ from int, float, and complex.
And I'm not in favor of an uppercase converter, no matter what we do here. The other converters work like:
f'{obj!s}' -> format(str(obj))
f'{obj!r}' -> format(repr(obj))
but the proposed !u would be
f'{obj!u}' -> format(obj).upper()
That is, it operates on the result of __format__, not its input.