Message 285283 - Python tracker
Right, the lack of transitivity comes from the fact that:
>>> u"3" == str(3)
True
Is really shorthand for:
>>> u"3" == str(3).decode("ascii")
True
However, the implicit decoding only triggers for *exactly* bytes instances, so in the bytearray case it needs to be explicit:
>>> u"3" == bytearray(b"3").decode("ascii")
True