Author: Brian Kearns <[email protected]>
Branch:
Changeset: r67999:63c04f0fba9f
Date: 2013-11-12 19:42 -0500
http://bitbucket.org/pypy/pypy/changeset/63c04f0fba9f/
Log: fix missing coerce in setitem_filter
diff --git a/pypy/module/micronumpy/interp_numarray.py
b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -125,7 +125,7 @@
"cannot assign %d input values to "
"the %d output values where the mask is true" %
(val.get_size(), size)))
- loop.setitem_filter(self, idx, val, size)
+ loop.setitem_filter(space, self, idx, val, size)
def _prepare_array_index(self, space, w_index):
if isinstance(w_index, W_NDimArray):
diff --git a/pypy/module/micronumpy/loop.py b/pypy/module/micronumpy/loop.py
--- a/pypy/module/micronumpy/loop.py
+++ b/pypy/module/micronumpy/loop.py
@@ -398,7 +398,7 @@
'index_dtype'],
reds = 'auto')
-def setitem_filter(arr, index, value, size):
+def setitem_filter(space, arr, index, value, size):
arr_iter = arr.create_iter()
shapelen = len(arr.get_shape())
if shapelen > 1 and len(index.get_shape()) < 2:
@@ -414,7 +414,7 @@
arr_dtype=arr_dtype,
)
if index_iter.getitem_bool():
- arr_iter.setitem(value_iter.getitem())
+ arr_iter.setitem(arr_dtype.coerce(space, value_iter.getitem()))
value_iter.next()
arr_iter.next()
index_iter.next()
diff --git a/pypy/module/micronumpy/test/test_numarray.py
b/pypy/module/micronumpy/test/test_numarray.py
--- a/pypy/module/micronumpy/test/test_numarray.py
+++ b/pypy/module/micronumpy/test/test_numarray.py
@@ -511,6 +511,13 @@
for i in xrange(5):
assert a[i] == i
+ def test_setitem_array(self):
+ import numpy as np
+ a = np.array((-1., 0, 1))/0.
+ b = np.array([False, False, True], dtype=bool)
+ a[b] = 100
+ assert a[2] == 100
+
def test_setitem_obj_index(self):
from numpypy import arange
a = arange(10)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit