Author: Maciej Fijalkowski <[email protected]>
Branch:
Changeset: r51737:24f7e3520fb4
Date: 2012-01-24 20:41 +0200
http://bitbucket.org/pypy/pypy/changeset/24f7e3520fb4/
Log: a dumb implementation of isna
diff --git a/pypy/module/micronumpy/__init__.py
b/pypy/module/micronumpy/__init__.py
--- a/pypy/module/micronumpy/__init__.py
+++ b/pypy/module/micronumpy/__init__.py
@@ -27,6 +27,7 @@
'dot': 'interp_numarray.dot',
'fromstring': 'interp_support.fromstring',
'flatiter': 'interp_numarray.W_FlatIterator',
+ 'isna': 'interp_numarray.isna',
'True_': 'types.Bool.True',
'False_': 'types.Bool.False',
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
@@ -436,6 +436,13 @@
def copy(self, space):
return self.get_concrete().copy(space)
+ def empty_copy(self, space, dtype):
+ shape = self.shape
+ size = 1
+ for elem in shape:
+ size *= elem
+ return W_NDimArray(size, shape[:], dtype, 'C')
+
def flatten(self, space):
return self.get_concrete().flatten(space)
@@ -1439,3 +1446,11 @@
__iter__ = interp2app(W_FlatIterator.descr_iter),
)
W_FlatIterator.acceptable_as_base_class = False
+
+def isna(space, w_obj):
+ if isinstance(w_obj, BaseArray):
+ arr = w_obj.empty_copy(space,
+ interp_dtype.get_dtype_cache(space).w_booldtype)
+ arr.fill(space, space.wrap(False))
+ return arr
+ return space.wrap(False)
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
@@ -1381,6 +1381,11 @@
a[a & 1 == 1] = array([8, 9, 10])
assert (a == [[0, 8], [2, 9], [4, 10]]).all()
+ def test_isna(self):
+ from _numpypy import isna, array
+ # XXX for now
+ assert not isna(3)
+ assert (isna(array([1, 2, 3, 4])) == [False, False, False,
False]).all()
class AppTestSupport(BaseNumpyAppTest):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit