Author: Brian Kearns <[email protected]>
Branch:
Changeset: r61011:4846addd215e
Date: 2013-02-09 16:46 -0500
http://bitbucket.org/pypy/pypy/changeset/4846addd215e/
Log: fix numpy.dtype(intp/uintp).num on 64bit
diff --git a/pypy/module/micronumpy/interp_dtype.py
b/pypy/module/micronumpy/interp_dtype.py
--- a/pypy/module/micronumpy/interp_dtype.py
+++ b/pypy/module/micronumpy/interp_dtype.py
@@ -567,18 +567,22 @@
if ptr_size == 4:
intp_box = interp_boxes.W_Int32Box
intp_type = types.Int32()
+ intp_num = 5
uintp_box = interp_boxes.W_UInt32Box
uintp_type = types.UInt32()
+ uintp_num = 6
elif ptr_size == 8:
intp_box = interp_boxes.W_Int64Box
intp_type = types.Int64()
+ intp_num = 7
uintp_box = interp_boxes.W_UInt64Box
uintp_type = types.UInt64()
+ uintp_num = 8
else:
raise ValueError('unknown point size %d' % ptr_size)
self.w_intpdtype = W_Dtype(
intp_type,
- num=5,
+ num=intp_num,
kind=INTPLTR,
name='intp',
char=INTPLTR,
@@ -586,7 +590,7 @@
)
self.w_uintpdtype = W_Dtype(
uintp_type,
- num=6,
+ num=uintp_num,
kind=UINTPLTR,
name='uintp',
char=UINTPLTR,
diff --git a/pypy/module/micronumpy/test/test_dtypes.py
b/pypy/module/micronumpy/test/test_dtypes.py
--- a/pypy/module/micronumpy/test/test_dtypes.py
+++ b/pypy/module/micronumpy/test/test_dtypes.py
@@ -4,6 +4,17 @@
from pypy.interpreter.gateway import interp2app
class AppTestDtypes(BaseNumpyAppTest):
+ def setup_class(cls):
+ BaseNumpyAppTest.setup_class.im_func(cls)
+ if option.runappdirect:
+ import platform
+ bits, linkage = platform.architecture()
+ ptr_size = int(bits[:-3]) // 8
+ else:
+ from rpython.rtyper.lltypesystem import rffi
+ ptr_size = rffi.sizeof(rffi.CCHARP)
+ cls.w_ptr_size = cls.space.wrap(ptr_size)
+
def test_dtype(self):
from _numpypy import dtype
@@ -31,8 +42,12 @@
from _numpypy import dtype
assert dtype(bool).num == 0
- assert dtype('intp').num == 5
- assert dtype('uintp').num == 6
+ if self.ptr_size == 4:
+ assert dtype('intp').num == 5
+ assert dtype('uintp').num == 6
+ else:
+ assert dtype('intp').num == 7
+ assert dtype('uintp').num == 8
assert dtype(int).num == 7
assert dtype(long).num == 9
assert dtype(float).num == 12
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit