New submission from Xiang Zhang: 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 "<stdin>", line 1, in <module> File "<stdin>", line 5, in __eq__ RuntimeError >>> v2 in d.values() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 5, in __eq__ RuntimeError >>> k2 in {k1} Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 5, in __eq__ RuntimeError >>> (k2, v2) in d.items() False >>> (k2, v1) in d.items() False dictitems_contains.patch tries to fix this. ---------- components: Interpreter Core files: dictitems_contains.patch keywords: patch messages: 276801 nosy: haypo, serhiy.storchaka, xiang.zhang priority: normal severity: normal stage: patch review status: open title: dictitems_contains swallows compare errors type: behavior versions: Python 3.5, Python 3.6, Python 3.7 Added file: http://bugs.python.org/file44717/dictitems_contains.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue28189> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com