Author: Brian Kearns <[email protected]>
Branch:
Changeset: r68000:d50d27c01818
Date: 2013-11-12 20:20 -0500
http://bitbucket.org/pypy/pypy/changeset/d50d27c01818/
Log: raise coerce conversion errors at app-level
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
@@ -198,8 +198,7 @@
prefix)
def descr_getitem(self, space, w_idx):
- if (isinstance(w_idx, W_NDimArray) and
- w_idx.get_dtype().is_bool_type()):
+ if isinstance(w_idx, W_NDimArray) and w_idx.get_dtype().is_bool_type():
return self.getitem_filter(space, w_idx)
try:
return self.implementation.descr_getitem(space, self, w_idx)
@@ -213,9 +212,11 @@
self.implementation.setitem_index(space, index_list, w_value)
def descr_setitem(self, space, w_idx, w_value):
- if (isinstance(w_idx, W_NDimArray) and
- w_idx.get_dtype().is_bool_type()):
- self.setitem_filter(space, w_idx, convert_to_array(space, w_value))
+ if isinstance(w_idx, W_NDimArray) and w_idx.get_dtype().is_bool_type():
+ try:
+ self.setitem_filter(space, w_idx, convert_to_array(space,
w_value))
+ except ValueError, e:
+ raise OperationError(space.w_ValueError, space.wrap(str(e)))
return
try:
self.implementation.descr_setitem(space, self, w_idx, w_value)
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
@@ -2454,6 +2454,23 @@
assert exc.value[0].find('cannot assign') >= 0
assert (a == [[0, 1], [2, 3], [4, 5]]).all()
+ def test_nonarray_assignment(self):
+ import numpypy as np
+ a = np.arange(10)
+ b = np.ones(10, dtype=bool)
+ r = np.arange(10)
+ def assign(a, b, c):
+ a[b] = c
+ raises(ValueError, assign, a, b, np.nan)
+ #raises(ValueError, assign, a, r, np.nan) # XXX
+ import sys
+ if '__pypy__' not in sys.builtin_module_names:
+ a[b] = np.array(np.nan)
+ #a[r] = np.array(np.nan)
+ else:
+ raises(ValueError, assign, a, b, np.array(np.nan))
+ #raises(ValueError, assign, a, r, np.array(np.nan))
+
def test_copy_kwarg(self):
from numpypy import array
x = array([1, 2, 3])
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit