Issue 28189: dictitems_contains swallows compare errors (original) (raw)
Now, when compare errors raised during in
, dict.keys(), dict.values() and set all propagate the errors. But dict.items() will swallow the errors(only key compare):
class BadEq: ... def hash(self): ... return 7 ... def eq(self, other): ... raise RuntimeError ... k1, k2, v1, v2 = BadEq(), BadEq(), BadEq(), BadEq() d = {k1: v1} k2 in d.keys() Traceback (most recent call last): File "", line 1, in File "", line 5, in eq RuntimeError v2 in d.values() Traceback (most recent call last): File "", line 1, in File "", line 5, in eq RuntimeError k2 in {k1} Traceback (most recent call last): File "", line 1, in File "", line 5, in eq RuntimeError (k2, v2) in d.items() False (k2, v1) in d.items() False
dictitems_contains.patch tries to fix this.