[pypy-commit] pypy dtypes-compatability: fix failing tests, even more logic for creating repr(dtype)
mattip
noreply at buildbot.pypy.org
Fri Jul 17 06:46:47 CEST 2015
Author: mattip <matti.picus at gmail.com>
Branch: dtypes-compatability
Changeset: r78568:1b6a885833e3
Date: 2015-07-17 01:46 +0300
http://bitbucket.org/pypy/pypy/changeset/1b6a885833e3/
Log: fix failing tests, even more logic for creating repr(dtype)
diff --git a/pypy/module/micronumpy/descriptor.py b/pypy/module/micronumpy/descriptor.py
--- a/pypy/module/micronumpy/descriptor.py
+++ b/pypy/module/micronumpy/descriptor.py
@@ -224,7 +224,7 @@
if not self.is_record():
return space.newlist([space.newtuple([space.wrap(""),
self.descr_get_str(space, simple=simple)])])
- elif (self.alignment > 1 and style != 'descr') or force_dict:
+ elif (self.alignment > 1 and not style.startswith('descr')) or force_dict:
# we need to force a sorting order for the keys,
# so return a string instead of a dict. Also, numpy formats
# the lists without spaces between elements, so we cannot simply
@@ -241,9 +241,13 @@
offset, subdtype = self.fields[name]
if subdtype.is_record():
substr = [space.str_w(space.str(subdtype.descr_get_descr(
- space, style='substr'))), ","]
+ space, style='descr_subdtype'))), ","]
elif subdtype.subdtype is not None:
- substr = ["'", subdtype.subdtype.get_str(ignore=''), "',"]
+ substr = ["(", space.str_w(space.str(
+ subdtype.subdtype.descr_get_descr(space, style='descr_subdtype'))),
+ ', ',
+ space.str_w(space.repr(space.newtuple([space.wrap(s) for s in subdtype.shape]))),
+ "),"]
else:
substr = ["'", subdtype.get_str(ignore=''), "',"]
formats += substr
@@ -272,7 +276,7 @@
offsets[-1] = offsets[-1][:-1] + ']'
names[-1] = names[-1][:-1] + ']'
titles[-1] = titles[-1][:-1] + ']'
- if self.alignment < 2:
+ if self.alignment < 2 or style.endswith('subdtype'):
suffix = "}"
elif style == 'str':
suffix = ", 'aligned':True}"
@@ -292,9 +296,9 @@
for name, title in self.names:
offset, subdtype = self.fields[name]
show_offsets = False
- if total != offset:
+ if total != offset and len(subdtype.shape) < 1:
# whoops, need to use other format
- return self.descr_get_descr(space, style=style, force_dict=True)
+ return self.descr_get_descr(space, style=style + '_subdtype', force_dict=True)
total += subdtype.elsize
ignore = '|'
if title:
@@ -311,7 +315,7 @@
if subdtype.shape != []:
subdescr.append(subdtype.descr_get_shape(space))
descr.append(space.newtuple(subdescr[:]))
- if self.alignment >= 0:
+ if self.alignment >= 0 and not style.endswith('subdtype'):
return space.wrap(space.str_w(space.repr(space.newlist(descr))) + ', align=True')
return space.newlist(descr)
@@ -711,8 +715,6 @@
assert isinstance(subdtype, W_Dtype)
if alignment >= 0:
maxalign = max(subdtype.alignment, maxalign)
- if not subdtype.is_record():
- maxalign = max(subdtype.elsize, maxalign)
delta = subdtype.alignment
# Set offset to the next power-of-two above delta
delta = (delta + maxalign -1) & (-maxalign)
@@ -937,6 +939,9 @@
shape_w = space.fixedview(w_shape)
if len(shape_w) < 1:
return None
+ elif len(shape_w) == 1 and space.isinstance_w(shape_w[0], space.w_tuple):
+ # (base_dtype, new_dtype) dtype spectification
+ return None
shape = []
for w_dim in shape_w:
try:
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
@@ -1417,7 +1417,7 @@
('bottom', [('bleft', ('>f4', (8, 64)), (1,)),
('bright', '>f4', (8, 36))])],
align=True)
- assert_equal(str(dt),
+ assert str(dt) == (
"{'names':['top','bottom'], "
"'formats':[([('tiles', ('>f4', (64, 64)), (1,)), "
"('rtile', '>f4', (64, 36))], (3,)),"
More information about the pypy-commit
mailing list