Author: Romain Guillebert <[email protected]>
Branch:
Changeset: r66317:a4a455634894
Date: 2013-08-26 15:00 +0100
http://bitbucket.org/pypy/pypy/changeset/a4a455634894/
Log: Fix ndarray(dtype=str).fill()
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
@@ -1922,6 +1922,12 @@
a = numpy.arange(10.).reshape((5, 2))[::2]
assert (loads(dumps(a)) == a).all()
+ def test_string_filling(self):
+ import numpypy as numpy
+ a = numpy.empty((10,10), dtype='c1')
+ a.fill(12)
+ assert (a == '1').all()
+
class AppTestMultiDim(BaseNumpyAppTest):
def test_init(self):
import numpypy
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
@@ -1764,12 +1764,16 @@
arr.storage[i] = arg[i]
return interp_boxes.W_StringBox(arr, 0, arr.dtype)
- @jit.unroll_safe
def store(self, arr, i, offset, box):
assert isinstance(box, interp_boxes.W_StringBox)
# XXX simplify to range(box.dtype.get_size()) ?
+ return self._store(arr.storage, i, offset, box)
+
+ @jit.unroll_safe
+ def _store(self, storage, i, offset, box):
+ assert isinstance(box, interp_boxes.W_StringBox)
for k in range(min(self.size, box.arr.size-offset)):
- arr.storage[k + i] = box.arr.storage[k + offset]
+ storage[k + i] = box.arr.storage[k + offset]
def read(self, arr, i, offset, dtype=None):
if dtype is None:
@@ -1859,6 +1863,11 @@
arr.storage[j] = '\x00'
return interp_boxes.W_StringBox(arr, 0, arr.dtype)
+ def fill(self, storage, width, box, start, stop, offset):
+ from pypy.module.micronumpy.arrayimpl.concrete import
ConcreteArrayNotOwning
+ for i in xrange(start, stop, width):
+ self._store(storage, i, offset, box)
+
NonNativeStringType = StringType
class UnicodeType(BaseType, BaseStringType):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit