very strange behaviour:

assertEqual is failing, but when I actually do ca == cb I get True

also, the Cast.__eq__ method is never being called

adding ca != cb to compare
also print cast types, for completeness