73e06612bf
This adds __hash__ to CsvFrac, and tweakes __eq__ to be more strict about equality. Previously CsvFrac only considered the relevant ratio for equality, making hashing difficult: - before: 1/2 == 2/4 => true - after: 1/2 == 2/4 => false But now that we have csv.py, with the explicit ratio function, it's probably a good idea to be strict by default. Note comparison is unchanged: - 1/2 < 2/4 => false - 1/2 > 2/3 => false --- This popped up during debugging, and would be useful to have around. Note CsvInt/CsvFloat already implicitly define __hash__ through namedtuple's implicit __eq__ and friends. But this is disabled in CsvFrac due to the explicit __eq__. Which is good because otherwise it would've been wrong with the ratio comparison!