[pypy-commit] pypy default: test/fix conversion of str arrays
bdkearns
noreply at buildbot.pypy.org
Wed Dec 18 01:42:59 CET 2013
Author: Brian Kearns <bdkearns at gmail.com>
Branch:
Changeset: r68452:ccbbf6d54188
Date: 2013-12-17 19:36 -0500
http://bitbucket.org/pypy/pypy/changeset/ccbbf6d54188/
Log: test/fix conversion of str arrays
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
@@ -988,28 +988,43 @@
shape = self.get_shape()
if len(shape) == 0:
assert isinstance(self.implementation, scalar.Scalar)
- return space.int(space.wrap(self.implementation.get_scalar_value()))
- if shape == [1]:
- return space.int(self.descr_getitem(space, space.wrap(0)))
- raise OperationError(space.w_TypeError, space.wrap("only length-1 arrays can be converted to Python scalars"))
+ value = space.wrap(self.implementation.get_scalar_value())
+ elif shape == [1]:
+ value = self.descr_getitem(space, space.wrap(0))
+ else:
+ raise OperationError(space.w_TypeError, space.wrap("only length-1 arrays can be converted to Python scalars"))
+ if self.get_dtype().is_str_or_unicode():
+ raise OperationError(space.w_TypeError, space.wrap(
+ "don't know how to convert scalar number to int"))
+ return space.int(value)
def descr_long(self, space):
shape = self.get_shape()
if len(shape) == 0:
assert isinstance(self.implementation, scalar.Scalar)
- return space.long(space.wrap(self.implementation.get_scalar_value()))
- if shape == [1]:
- return space.int(self.descr_getitem(space, space.wrap(0)))
- raise OperationError(space.w_TypeError, space.wrap("only length-1 arrays can be converted to Python scalars"))
+ value = space.wrap(self.implementation.get_scalar_value())
+ elif shape == [1]:
+ value = self.descr_getitem(space, space.wrap(0))
+ else:
+ raise OperationError(space.w_TypeError, space.wrap("only length-1 arrays can be converted to Python scalars"))
+ if self.get_dtype().is_str_or_unicode():
+ raise OperationError(space.w_TypeError, space.wrap(
+ "don't know how to convert scalar number to long"))
+ return space.long(value)
def descr_float(self, space):
shape = self.get_shape()
if len(shape) == 0:
assert isinstance(self.implementation, scalar.Scalar)
- return space.float(space.wrap(self.implementation.get_scalar_value()))
- if shape == [1]:
- return space.float(self.descr_getitem(space, space.wrap(0)))
- raise OperationError(space.w_TypeError, space.wrap("only length-1 arrays can be converted to Python scalars"))
+ value = space.wrap(self.implementation.get_scalar_value())
+ elif shape == [1]:
+ value = self.descr_getitem(space, space.wrap(0))
+ else:
+ raise OperationError(space.w_TypeError, space.wrap("only length-1 arrays can be converted to Python scalars"))
+ if self.get_dtype().is_str_or_unicode():
+ raise OperationError(space.w_TypeError, space.wrap(
+ "don't know how to convert scalar number to float"))
+ return space.float(value)
def descr_reduce(self, space):
from rpython.rlib.rstring import StringBuilder
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
@@ -2083,6 +2083,11 @@
assert int(array([1])) == 1
assert raises(TypeError, "int(array([1, 2]))")
assert int(array([1.5])) == 1
+ for op in ["int", "float", "long"]:
+ for a in [array('123'), array(['123'])]:
+ exc = raises(TypeError, "%s(a)" % op)
+ assert exc.value.message == "don't know how to convert " \
+ "scalar number to %s" % op
def test__reduce__(self):
from numpypy import array, dtype
More information about the pypy-commit
mailing list