Author: Brian Kearns <[email protected]>
Branch: 
Changeset: r69343:8c8fad86e3ec
Date: 2014-02-23 21:44 -0500
http://bitbucket.org/pypy/pypy/changeset/8c8fad86e3ec/

Log:    keep dtype name attribute constant

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
@@ -37,7 +37,7 @@
 
 
 class W_Dtype(W_Root):
-    _immutable_fields_ = ["itemtype?", "num", "kind", "name?", "char",
+    _immutable_fields_ = ["itemtype?", "num", "kind", "name", "char",
                           "w_box_type", "byteorder", "size?", "float_type",
                           "fields?", "fieldnames?", "shape", "subdtype", 
"base"]
 
@@ -127,10 +127,9 @@
     def descr_str(self, space):
         if not self.num == NPY.VOID:
             if self.char == 'S':
-                s = '|S' + str(self.get_size())
+                return space.wrap('|S' + str(self.get_size()))
             else:
-                s = self.name
-            return space.wrap(s)
+                return self.descr_get_name(space)
         elif self.subdtype is not None:
             return space.str(space.newtuple([
                 self.subdtype.descr_get_str(space),
@@ -140,10 +139,9 @@
     def descr_repr(self, space):
         if not self.num == NPY.VOID:
             if self.char == 'S':
-                s = 'S' + str(self.get_size())
+                r = space.wrap('S' + str(self.get_size()))
             else:
-                s = self.name
-            r = space.wrap(s)
+                r = self.descr_get_name(space)
         elif self.subdtype is not None:
             r = space.newtuple([self.subdtype.descr_get_str(space),
                                 self.descr_get_shape(space)])
@@ -162,6 +160,11 @@
             return space.w_None
         return space.newtuple([space.wrap(self.subdtype), 
self.descr_get_shape(space)])
 
+    def descr_get_name(self, space):
+        if self.is_flexible_type():
+            return space.wrap(self.name + str(self.get_size() * 8))
+        return space.wrap(self.name)
+
     def descr_get_str(self, space):
         size = self.get_size()
         basic = self.kind
@@ -225,8 +228,8 @@
             return space.w_None
         w_d = space.newdict()
         for name, (offset, subdtype) in self.fields.iteritems():
-            space.setitem(w_d, space.wrap(name), space.newtuple([subdtype,
-                                                                 
space.wrap(offset)]))
+            space.setitem(w_d, space.wrap(name),
+                          space.newtuple([subdtype, space.wrap(offset)]))
         return w_d
 
     def descr_set_fields(self, space, w_fields):
@@ -245,10 +248,8 @@
                 self.fields[space.str_w(key)] = offset, dtype
 
                 size += dtype.get_size()
-
             self.itemtype = types.RecordType()
             self.size = size
-            self.name = "void" + str(8 * self.get_size())
 
     def descr_get_names(self, space):
         if len(self.fieldnames) == 0:
@@ -401,9 +402,7 @@
         fields[fldname] = (offset, subdtype)
         offset += subdtype.get_size()
         fieldnames.append(fldname)
-    itemtype = types.RecordType()
-    return W_Dtype(itemtype, NPY.VOID, NPY.VOIDLTR,
-                   "void" + str(8 * offset * itemtype.get_element_size()),
+    return W_Dtype(types.RecordType(), NPY.VOID, NPY.VOIDLTR, "void",
                    NPY.VOIDLTR, space.gettypefor(interp_boxes.W_VoidBox),
                    fields=fields, fieldnames=fieldnames, size=offset)
 
@@ -513,7 +512,7 @@
 
     subdtype = GetSetProperty(W_Dtype.descr_get_subdtype),
     str = GetSetProperty(W_Dtype.descr_get_str),
-    name = interp_attrproperty("name", cls=W_Dtype),
+    name = GetSetProperty(W_Dtype.descr_get_name),
     base = GetSetProperty(W_Dtype.descr_get_base),
     shape = GetSetProperty(W_Dtype.descr_get_shape),
     isnative = GetSetProperty(W_Dtype.descr_get_isnative),
@@ -544,25 +543,22 @@
 
     if char == NPY.STRINGLTR:
         itemtype = types.StringType()
-        basename = 'string'
+        name = 'string'
         num = NPY.STRING
         w_box_type = space.gettypefor(interp_boxes.W_StringBox)
     elif char == NPY.VOIDLTR:
         itemtype = types.VoidType()
-        basename = 'void'
+        name = 'void'
         num = NPY.VOID
         w_box_type = space.gettypefor(interp_boxes.W_VoidBox)
     elif char == NPY.UNICODELTR:
         itemtype = types.UnicodeType()
-        basename = 'unicode'
+        name = 'unicode'
         num = NPY.UNICODE
         w_box_type = space.gettypefor(interp_boxes.W_UnicodeBox)
     else:
         assert False
-
-    return W_Dtype(itemtype, num, char,
-                   basename + str(8 * size * itemtype.get_element_size()),
-                   char, w_box_type, size=size)
+    return W_Dtype(itemtype, num, char, name, char, w_box_type, size=size)
 
 
 def new_string_dtype(space, size):
@@ -572,7 +568,7 @@
         size=size,
         num=NPY.STRING,
         kind=NPY.STRINGLTR,
-        name='string' + str(8 * size * itemtype.get_element_size()),
+        name='string',
         char=NPY.STRINGLTR,
         w_box_type = space.gettypefor(interp_boxes.W_StringBox),
     )
@@ -585,7 +581,7 @@
         size=size,
         num=NPY.UNICODE,
         kind=NPY.UNICODELTR,
-        name='unicode' + str(8 * size * itemtype.get_element_size()),
+        name='unicode',
         char=NPY.UNICODELTR,
         w_box_type = space.gettypefor(interp_boxes.W_UnicodeBox),
     )
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to