There appears to be a critical omission from the current dataclass implementation: it does not make hash=True fields immutable. Per Python spec: "the implementation of hashable collections requires that a key’s hash value is immutable (if the object’s hash value changes, it will be in the wrong hash bucket)" Yet: import dataclasses @dataclasses.dataclass(hash=True) class A: foo: int = dataclasses.field(hash=True, compare=True) a = A(foo=1) s = set() s.add(a) # s == {a} a.foo = 2 print(a in s) print({a} == s} print(s == s) # prints False False True This looks to me like a clearly wrong behavior. Elvis
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4