[pypy-commit] pypy object-dtype2: fix translation (for real)
rlamy
noreply at buildbot.pypy.org
Fri Apr 17 01:57:24 CEST 2015
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: object-dtype2
Changeset: r76807:711516940e44
Date: 2015-04-17 00:57 +0100
http://bitbucket.org/pypy/pypy/changeset/711516940e44/
Log: fix translation (for real)
diff --git a/pypy/module/micronumpy/ndarray.py b/pypy/module/micronumpy/ndarray.py
--- a/pypy/module/micronumpy/ndarray.py
+++ b/pypy/module/micronumpy/ndarray.py
@@ -890,10 +890,7 @@
"The truth value of an array with more than one element "
"is ambiguous. Use a.any() or a.all()"))
iter, state = self.create_iter()
- w_val = iter.getitem(state)
- if self.get_dtype().is_object():
- w_val = self.get_dtype().itemtype.unbox(w_val)
- return space.wrap(space.is_true(w_val))
+ return space.wrap(space.is_true(iter.getitem(state)))
def _binop_impl(ufunc_name):
def impl(self, space, w_other, w_out=None):
diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py
--- a/pypy/module/micronumpy/types.py
+++ b/pypy/module/micronumpy/types.py
@@ -1718,6 +1718,10 @@
def str_format(self, box):
return self.space.str_w(self.space.repr(self.unbox(box)))
+ def runpack_str(self, space, s):
+ raise oefmt(space.w_NotImplementedError,
+ "fromstring not implemented for object type")
+
def to_builtin_type(self, space, box):
assert isinstance(box, self.BoxType)
return box.w_obj
@@ -1753,14 +1757,14 @@
@raw_binary_op
def logical_and(self, v1, v2):
if self._obool(v1):
- return v2
- return v1
+ return self.space.bool_w(v2)
+ return self.space.bool_w(v1)
@raw_binary_op
def logical_or(self, v1, v2):
if self._obool(v1):
- return v1
- return v2
+ return self.space.bool_w(v1)
+ return self.space.bool_w(v2)
@raw_unary_op
def logical_not(self, v):
@@ -1818,23 +1822,23 @@
@raw_binary_op
def le(self, v1, v2):
- return self.space.le(v1, v2)
+ return self.space.bool_w(self.space.le(v1, v2))
@raw_binary_op
def ge(self, v1, v2):
- return self.space.ge(v1, v2)
+ return self.space.bool_w(self.space.ge(v1, v2))
@raw_binary_op
def lt(self, v1, v2):
- return self.space.lt(v1, v2)
+ return self.space.bool_w(self.space.lt(v1, v2))
@raw_binary_op
def gt(self, v1, v2):
- return self.space.gt(v1, v2)
+ return self.space.bool_w(self.space.gt(v1, v2))
@raw_binary_op
def ne(self, v1, v2):
- return self.space.ne(v1, v2)
+ return self.space.bool_w(self.space.ne(v1, v2))
def add_attributeerr_op(cls, op):
def func(self, *args):
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufuncs.py
--- a/pypy/module/micronumpy/ufuncs.py
+++ b/pypy/module/micronumpy/ufuncs.py
@@ -1128,17 +1128,12 @@
def impl(res_dtype, value):
res = get_op(res_dtype)(value)
if bool_result:
- if res_dtype.is_object() and isinstance(res, W_Root):
- space = res_dtype.itemtype.space
- res = space.bool_w(res)
return dtype_cache.w_booldtype.box(res)
return res
elif nin == 2:
def impl(res_dtype, lvalue, rvalue):
res = get_op(res_dtype)(lvalue, rvalue)
if comparison_func:
- if res_dtype.is_object():
- return res
return dtype_cache.w_booldtype.box(res)
return res
return func_with_new_name(impl, ufunc_name)
More information about the pypy-commit
mailing list