Author: Matti Picus <[email protected]>
Branch: numpypy-array_prepare_-array_wrap
Changeset: r67044:47a1da6a0385
Date: 2013-09-21 23:51 +0300
http://bitbucket.org/pypy/pypy/changeset/47a1da6a0385/
Log: implement for W_Ufunc1
diff --git a/pypy/module/micronumpy/interp_ufuncs.py
b/pypy/module/micronumpy/interp_ufuncs.py
--- a/pypy/module/micronumpy/interp_ufuncs.py
+++ b/pypy/module/micronumpy/interp_ufuncs.py
@@ -325,15 +325,17 @@
w_obj.get_scalar_value().convert_to(calc_dtype))
if out is None:
return w_val
- if out.is_scalar():
- out.set_scalar_value(w_val)
- else:
- out.fill(res_dtype.coerce(space, w_val))
- return out
+ if isinstance(out, W_NDimArray):
+ if out.is_scalar():
+ out.set_scalar_value(w_val)
+ else:
+ out.fill(res_dtype.coerce(space, w_val))
+ return self.call_prepare(space, out, w_obj, w_val)
shape = shape_agreement(space, w_obj.get_shape(), out,
broadcast_down=False)
- return loop.call1(space, shape, self.func, calc_dtype, res_dtype,
+ w_result = loop.call1(space, shape, self.func, calc_dtype, res_dtype,
w_obj, out)
+ return self.call_prepare(space, out, w_obj, w_result)
class W_Ufunc2(W_Ufunc):
@@ -408,6 +410,7 @@
else:
out.fill(arr)
arr = out
+ # XXX handle array_priority
return self.call_prepare(space, out, w_lhs, arr)
new_shape = shape_agreement(space, w_lhs.get_shape(), w_rhs)
new_shape = shape_agreement(space, new_shape, out,
broadcast_down=False)
diff --git a/pypy/module/micronumpy/test/test_subtype.py
b/pypy/module/micronumpy/test/test_subtype.py
--- a/pypy/module/micronumpy/test/test_subtype.py
+++ b/pypy/module/micronumpy/test/test_subtype.py
@@ -299,8 +299,11 @@
return array(arr[0]).view(type=with_prepare)
a = array(1)
b = array(1).view(type=with_prepare)
+ print 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
x = log(a, out=b)
+ print 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
assert x == 0
+ print 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
assert type(x) == with_prepare
assert x.called_prepare
x.called_prepare = False
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit