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.