Eric Smith wrote:
The bad error message is a result of __format__ passing on unicode to strftime.
There are, of course, various ugly ways to work around this involving nested format calls.
I don't know if this fits your definition of "ugly workaround", but what if datetime.__format__ did something like:
def __format__(self, spec): encoding = None if isinstance(spec, unicode): encoding = 'utf-8' spec = spec.encode(encoding) result = strftime(spec, self) if encoding is not None: result = result.decode(encoding) return result