Author: Brian Kearns <[email protected]>
Branch:
Changeset: r68491:3a4a7e1a41a1
Date: 2013-12-19 16:28 -0500
http://bitbucket.org/pypy/pypy/changeset/3a4a7e1a41a1/
Log: fix confusion between numpy int types by making LongBox a real box
so we can differentiate it
diff --git a/pypy/module/micronumpy/interp_boxes.py
b/pypy/module/micronumpy/interp_boxes.py
--- a/pypy/module/micronumpy/interp_boxes.py
+++ b/pypy/module/micronumpy/interp_boxes.py
@@ -350,28 +350,22 @@
descr__new__, _get_dtype, descr_reduce = new_dtype_getter("uint16")
class W_Int32Box(W_SignedIntegerBox, PrimitiveBox):
- descr__new__, _get_dtype, descr_reduce = new_dtype_getter("int32")
+ descr__new__, _get_dtype, descr_reduce = new_dtype_getter("i")
class W_UInt32Box(W_UnsignedIntegerBox, PrimitiveBox):
- descr__new__, _get_dtype, descr_reduce = new_dtype_getter("uint32")
+ descr__new__, _get_dtype, descr_reduce = new_dtype_getter("I")
+
+class W_Int64Box(W_SignedIntegerBox, PrimitiveBox):
+ descr__new__, _get_dtype, descr_reduce = new_dtype_getter("q")
+
+class W_UInt64Box(W_UnsignedIntegerBox, PrimitiveBox):
+ descr__new__, _get_dtype, descr_reduce = new_dtype_getter("Q")
class W_LongBox(W_SignedIntegerBox, PrimitiveBox):
- descr__new__, _get_dtype, descr_reduce = new_dtype_getter("long")
+ descr__new__, _get_dtype, descr_reduce = new_dtype_getter("l")
class W_ULongBox(W_UnsignedIntegerBox, PrimitiveBox):
- descr__new__, _get_dtype, descr_reduce = new_dtype_getter("ulong")
-
-class W_Int64Box(W_SignedIntegerBox, PrimitiveBox):
- descr__new__, _get_dtype, descr_reduce = new_dtype_getter("int64")
-
-class W_LongLongBox(W_SignedIntegerBox, PrimitiveBox):
- descr__new__, _get_dtype, descr_reduce = new_dtype_getter('longlong')
-
-class W_UInt64Box(W_UnsignedIntegerBox, PrimitiveBox):
- descr__new__, _get_dtype, descr_reduce = new_dtype_getter("uint64")
-
-class W_ULongLongBox(W_SignedIntegerBox, PrimitiveBox):
- descr__new__, _get_dtype, descr_reduce = new_dtype_getter('ulonglong')
+ descr__new__, _get_dtype, descr_reduce = new_dtype_getter("L")
class W_InexactBox(W_NumberBox):
pass
@@ -663,13 +657,6 @@
__reduce__ = interp2app(W_Int64Box.descr_reduce),
)
-if LONG_BIT == 32:
- W_LongBox = W_Int32Box
- W_ULongBox = W_UInt32Box
-elif LONG_BIT == 64:
- W_LongBox = W_Int64Box
- W_ULongBox = W_UInt64Box
-
W_UInt64Box.typedef = TypeDef("uint64", W_UnsignedIntegerBox.typedef,
__module__ = "numpy",
__new__ = interp2app(W_UInt64Box.descr__new__.im_func),
@@ -677,6 +664,22 @@
__reduce__ = interp2app(W_UInt64Box.descr_reduce),
)
+W_LongBox.typedef = TypeDef("int%d" % LONG_BIT,
+ (W_SignedIntegerBox.typedef, int_typedef),
+ __module__ = "numpy",
+ __new__ = interp2app(W_LongBox.descr__new__.im_func),
+ __index__ = interp2app(W_LongBox.descr_index),
+ __reduce__ = interp2app(W_LongBox.descr_reduce),
+)
+
+W_ULongBox.typedef = TypeDef("uint%d" % LONG_BIT,
+ (W_UnsignedIntegerBox.typedef, int_typedef),
+ __module__ = "numpy",
+ __new__ = interp2app(W_ULongBox.descr__new__.im_func),
+ __index__ = interp2app(W_ULongBox.descr_index),
+ __reduce__ = interp2app(W_ULongBox.descr_reduce),
+)
+
W_InexactBox.typedef = TypeDef("inexact", W_NumberBox.typedef,
__module__ = "numpy",
)
diff --git a/pypy/module/micronumpy/test/test_scalar.py
b/pypy/module/micronumpy/test/test_scalar.py
--- a/pypy/module/micronumpy/test/test_scalar.py
+++ b/pypy/module/micronumpy/test/test_scalar.py
@@ -4,7 +4,7 @@
spaceconfig = dict(usemodules=["micronumpy", "binascii", "struct"])
def test_init(self):
- import numpypy as np
+ import numpy as np
import math
assert np.intp() == np.intp(0)
assert np.intp('123') == np.intp(123)
@@ -17,6 +17,8 @@
assert np.complex_() == np.complex_(0)
#raises(TypeError, np.complex_, '1+2j')
assert math.isnan(np.complex_(None))
+ for c in ['i', 'I', 'l', 'L', 'q', 'Q']:
+ assert np.dtype(c).type().dtype.char == c
def test_builtin(self):
import numpy as np
@@ -37,7 +39,7 @@
assert len(np.string_('123')) == 3
def test_pickle(self):
- from numpypy import dtype, zeros
+ from numpy import dtype, zeros
try:
from numpy.core.multiarray import scalar
except ImportError:
@@ -112,7 +114,7 @@
raises(TypeError, a.squeeze, 2)
def test_attributes(self):
- import numpypy as np
+ import numpy as np
value = np.dtype('int64').type(12345)
assert value.dtype == np.dtype('int64')
assert value.size == 1
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit