Perhaps this is more approprate for python-list but I looks like a bug to me. Example code:
class A: def __str__(self): return u'\u1234'
'%s' % u'\u1234' # this works '%s' % A() # this doesn't work
It will work if 'A' subclasses from 'unicode' but should not be necessary, IMHO. Any reason why this shouldn't be fixed?