Author: Manuel Jacob <m...@manueljacob.de> Branch: py3.5 Changeset: r90470:e761f5e9359b Date: 2017-03-02 11:38 +0100 http://bitbucket.org/pypy/pypy/changeset/e761f5e9359b/
Log: hg merge default diff --git a/pypy/interpreter/function.py b/pypy/interpreter/function.py --- a/pypy/interpreter/function.py +++ b/pypy/interpreter/function.py @@ -575,7 +575,7 @@ return space.w_NotImplemented if not space.eq_w(self.w_instance, w_other.w_instance): return space.w_False - return space.eq(self.w_function, w_other.w_function) + return space.newbool(space.eq_w(self.w_function, w_other.w_function)) def is_w(self, space, other): if not isinstance(other, Method): diff --git a/pypy/interpreter/test/test_function.py b/pypy/interpreter/test/test_function.py --- a/pypy/interpreter/test/test_function.py +++ b/pypy/interpreter/test/test_function.py @@ -574,6 +574,18 @@ assert A().m == X() assert X() == A().m + def test_method_equals_with_identity(self): + from types import MethodType + class CallableBadEq(object): + def __call__(self): + pass + def __eq__(self, other): + raise ZeroDivisionError + func = CallableBadEq() + meth = MethodType(func, object) + assert meth == meth + assert meth == MethodType(func, object) + @pytest.mark.skipif("config.option.runappdirect") def test_method_identity(self): class A(object): diff --git a/pypy/module/_io/interp_textio.py b/pypy/module/_io/interp_textio.py --- a/pypy/module/_io/interp_textio.py +++ b/pypy/module/_io/interp_textio.py @@ -881,7 +881,7 @@ if whence == 1: # seek relative to current position - if not space.is_true(space.eq(w_pos, space.newint(0))): + if not space.eq_w(w_pos, space.newint(0)): self._unsupportedoperation( space, "can't do nonzero cur-relative seeks") # Seeking to the current position should attempt to sync the @@ -890,7 +890,7 @@ elif whence == 2: # seek relative to end of file - if not space.is_true(space.eq(w_pos, space.newint(0))): + if not space.eq_w(w_pos, space.newint(0)): self._unsupportedoperation( space, "can't do nonzero end-relative seeks") space.call_method(self, "flush") diff --git a/pypy/module/array/interp_array.py b/pypy/module/array/interp_array.py --- a/pypy/module/array/interp_array.py +++ b/pypy/module/array/interp_array.py @@ -95,7 +95,7 @@ w_elem1 = arr1.w_getitem(space, i) w_elem2 = arr2.w_getitem(space, i) if comp_op == EQ: - res = space.is_true(space.eq(w_elem1, w_elem2)) + res = space.eq_w(w_elem1, w_elem2) if not res: return space.w_False elif comp_op == NE: @@ -109,7 +109,7 @@ res = space.is_true(space.gt(w_elem1, w_elem2)) if res: return space.w_True - elif not space.is_true(space.eq(w_elem1, w_elem2)): + elif not space.eq_w(w_elem1, w_elem2): return space.w_False else: if comp_op == LE: @@ -118,7 +118,7 @@ res = space.is_true(space.ge(w_elem1, w_elem2)) if not res: return space.w_False - elif not space.is_true(space.eq(w_elem1, w_elem2)): + elif not space.eq_w(w_elem1, w_elem2): return space.w_True # we have some leftovers if comp_op == EQ: @@ -282,7 +282,7 @@ for i in range(self.len): # XXX jitdriver w_item = self.w_getitem(space, i) - if space.is_true(space.eq(w_item, w_val)): + if space.eq_w(w_item, w_val): cnt += 1 return space.newint(cnt) @@ -293,7 +293,7 @@ """ for i in range(self.len): w_item = self.w_getitem(space, i) - if space.is_true(space.eq(w_item, w_x)): + if space.eq_w(w_item, w_x): return space.newint(i) raise oefmt(space.w_ValueError, "array.index(x): x not in list") diff --git a/pypy/module/cpyext/sequence.py b/pypy/module/cpyext/sequence.py --- a/pypy/module/cpyext/sequence.py +++ b/pypy/module/cpyext/sequence.py @@ -230,7 +230,7 @@ if e.match(space, space.w_StopIteration): break raise - if space.is_true(space.eq(w_next, w_obj)): + if space.eq_w(w_next, w_obj): return idx idx += 1 diff --git a/pypy/objspace/std/dictmultiobject.py b/pypy/objspace/std/dictmultiobject.py --- a/pypy/objspace/std/dictmultiobject.py +++ b/pypy/objspace/std/dictmultiobject.py @@ -1549,7 +1549,7 @@ w_found = self.w_dict.getitem(w_key) if w_found is None: return space.w_False - return space.eq(w_value, w_found) + return space.newbool(space.eq_w(w_value, w_found)) class W_DictViewKeysObject(W_DictViewObject, SetLikeDictView): def descr_iter(self, space): diff --git a/pypy/objspace/std/test/test_dictmultiobject.py b/pypy/objspace/std/test/test_dictmultiobject.py --- a/pypy/objspace/std/test/test_dictmultiobject.py +++ b/pypy/objspace/std/test/test_dictmultiobject.py @@ -813,6 +813,14 @@ e["a"] = "def" assert d.items() != e.items() + def test_dict_items_contains_with_identity(self): + class BadEq(object): + def __eq__(self, other): + raise ZeroDivisionError + k = BadEq() + v = BadEq() + assert (k, v) in {k: v}.viewitems() + def test_dict_mixed_keys_items(self): d = {(1, 1): 11, (2, 2): 22} e = {1: 1, 2: 2} _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit