Python TypeError: string de formato não vazio passada para o objeto .__ format__

Eu bati nesta exceção TypeError recentemente, que achei muito difícil de depurar. Acabei por reduzi-lo a este pequeno caso de teste:

>>> "{:20}".format(b"hi")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: non-empty format string passed to object.__format__

Isso é muito óbvio, para mim de qualquer maneira. A solução alternativa para o meu código foi decodificar a cadeia de bytes em unicode:

 >>> "{:20}".format(b"hi".decode("ascii"))
 'hi                  '

Qual é o significado dessa exceção? Existe uma maneira de tornar isso mais claro?

questionAnswers(2)

yourAnswerToTheQuestion