Speed up the generated __eq__
methods significantly by generating a chain of attribute comparisons instead of constructing and comparing tuples.
This change arguably makes the behavior more correct,
but changes it if an attribute compares equal by identity but not value, like float('nan')
.