Author: Justin Peel <[email protected]>
Branch: numpy-dtype
Changeset: r46235:b0f23dc4ccac
Date: 2011-08-03 01:32 -0600
http://bitbucket.org/pypy/pypy/changeset/b0f23dc4ccac/
Log: dtypes repr and str
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
@@ -67,13 +67,14 @@
# fields, names, f?, metadata. I'll just implement the base minimum for
# now. This will include type, kind, typeobj?, byteorder, type_num, elsize,
#
- def __init__(self, castfunc, unwrapfunc, num, kind):
+ def __init__(self, name, castfunc, unwrapfunc, num, kind):
# doesn't handle align and copy parameters yet
# only deals with simple strings e.g., 'uint32', and type objects
self.cast = castfunc
self.unwrap = unwrapfunc
self.num = num
self.kind = kind
+ self.name = name
def descr_num(self, space):
return space.wrap(self.num)
@@ -81,6 +82,14 @@
def descr_kind(self, space):
return space.wrap(self.kind)
+ def descr_name(self, space):
+ return space.wrap(self.name)
+
+ def descr_repr(self, space):
+ return space.wrap("dtype('%s')" % self.name)
+
+ descr_str = descr_name
+
def unwrap_float(space, val):
return space.float_w(space.float(val))
@@ -132,20 +141,22 @@
def cast_float96(val):
return rffi.cast(lltype.LongFloat, val)
-Bool_dtype = Dtype(cast_bool, unwrap_bool, Bool_num, BOOLLTR)
-Int8_dtype = Dtype(cast_int8, unwrap_int, Int8_num, SIGNEDLTR)
-UInt8_dtype = Dtype(cast_uint8, unwrap_int, UInt8_num, UNSIGNEDLTR)
-Int16_dtype = Dtype(cast_int16, unwrap_int, Int16_num, SIGNEDLTR)
-UInt16_dtype = Dtype(cast_uint16, unwrap_int, UInt16_num, UNSIGNEDLTR)
-Int32_dtype = Dtype(cast_int32, unwrap_int, Int32_num, SIGNEDLTR)
-UInt32_dtype = Dtype(cast_uint32, unwrap_int, UInt32_num, UNSIGNEDLTR)
-Long_dtype = Dtype(cast_long, unwrap_int, Long_num, SIGNEDLTR)
-ULong_dtype = Dtype(cast_ulong, unwrap_int, ULong_num, UNSIGNEDLTR)
-Int64_dtype = Dtype(cast_int64, unwrap_int, Int64_num, SIGNEDLTR)
-UInt64_dtype = Dtype(cast_uint64, unwrap_int, UInt64_num, UNSIGNEDLTR)
-Float32_dtype = Dtype(cast_float32, unwrap_float, Float32_num, FLOATINGLTR)
-Float64_dtype = Dtype(cast_float64, unwrap_float, Float64_num, FLOATINGLTR)
-Float96_dtype = Dtype(cast_float96, unwrap_float, Float96_num, FLOATINGLTR)
+Bool_dtype = Dtype('bool', cast_bool, unwrap_bool, Bool_num, BOOLLTR)
+Int8_dtype = Dtype('int8', cast_int8, unwrap_int, Int8_num, SIGNEDLTR)
+UInt8_dtype = Dtype('uint8', cast_uint8, unwrap_int, UInt8_num, UNSIGNEDLTR)
+Int16_dtype = Dtype('int16', cast_int16, unwrap_int, Int16_num, SIGNEDLTR)
+UInt16_dtype = Dtype('uint16', cast_uint16, unwrap_int, UInt16_num,
UNSIGNEDLTR)
+Int32_dtype = Dtype('int32', cast_int32, unwrap_int, Int32_num, SIGNEDLTR)
+UInt32_dtype = Dtype('uint32', cast_uint32, unwrap_int, UInt32_num,
UNSIGNEDLTR)
+Long_dtype = Dtype('int32' if LONG_BIT == 32 else 'int64',
+ cast_long, unwrap_int, Long_num, SIGNEDLTR)
+ULong_dtype = Dtype('uint32' if LONG_BIT == 32 else 'uint64',
+ cast_ulong, unwrap_int, ULong_num, UNSIGNEDLTR)
+Int64_dtype = Dtype('int64', cast_int64, unwrap_int, Int64_num, SIGNEDLTR)
+UInt64_dtype = Dtype('uint64', cast_uint64, unwrap_int, UInt64_num,
UNSIGNEDLTR)
+Float32_dtype = Dtype('float32', cast_float32, unwrap_float, Float32_num,
FLOATINGLTR)
+Float64_dtype = Dtype('float64', cast_float64, unwrap_float, Float64_num,
FLOATINGLTR)
+Float96_dtype = Dtype('float96', cast_float96, unwrap_float, Float96_num,
FLOATINGLTR)
_dtype_list = (Bool_dtype,
Int8_dtype,
@@ -241,4 +252,8 @@
num = GetSetProperty(Dtype.descr_num),
kind = GetSetProperty(Dtype.descr_kind),
+ name = GetSetProperty(Dtype.descr_name),
+
+ __repr__ = interp2app(Dtype.descr_repr),
+ __str__ = interp2app(Dtype.descr_str),
)
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
@@ -17,6 +17,12 @@
assert dtype(int).num == 7
assert dtype(long).num == 9
assert dtype(float).num == 12
+
+ def test_repr_str(self):
+ from numpy import dtype
+ d = dtype('?')
+ assert repr(d) == "dtype('bool')"
+ assert str(d) == "bool"
def test_bool_array(self):
from numpy import array
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit