[pypy-commit] pypy fix-tpname: merge default
bdkearns
noreply at buildbot.pypy.org
Fri May 2 08:03:06 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch: fix-tpname
Changeset: r71184:637d5d79bc5f
Date: 2014-05-02 01:03 -0400
http://bitbucket.org/pypy/pypy/changeset/637d5d79bc5f/
Log: merge default
diff --git a/pypy/module/micronumpy/__init__.py b/pypy/module/micronumpy/__init__.py
--- a/pypy/module/micronumpy/__init__.py
+++ b/pypy/module/micronumpy/__init__.py
@@ -23,7 +23,7 @@
'set_string_function': 'appbridge.set_string_function',
'typeinfo': 'descriptor.get_dtype_cache(space).w_typeinfo',
- 'nditer': 'nditer.nditer',
+ 'nditer': 'nditer.W_NDIter',
}
for c in ['MAXDIMS', 'CLIP', 'WRAP', 'RAISE']:
interpleveldefs[c] = 'space.wrap(constants.%s)' % c
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
@@ -131,12 +131,13 @@
return dtype
def get_name(self):
- return self.w_box_type.name
+ name = self.w_box_type.name
+ if name.endswith('_'):
+ name = name[:-1]
+ return name
def descr_get_name(self, space):
name = self.get_name()
- if name[-1] == '_':
- name = name[:-1]
if self.is_flexible() and self.elsize != 0:
return space.wrap(name + str(self.elsize * 8))
return space.wrap(name)
@@ -819,7 +820,7 @@
w_box_type=space.gettypefor(boxes.W_ULongBox),
)
aliases = {
- NPY.BOOL: ['bool', 'bool8'],
+ NPY.BOOL: ['bool_', 'bool8'],
NPY.BYTE: ['byte'],
NPY.UBYTE: ['ubyte'],
NPY.SHORT: ['short'],
@@ -834,8 +835,8 @@
NPY.CFLOAT: ['csingle'],
NPY.CDOUBLE: ['complex', 'cfloat', 'cdouble'],
NPY.CLONGDOUBLE: ['clongdouble', 'clongfloat'],
- NPY.STRING: ['string', 'str'],
- NPY.UNICODE: ['unicode'],
+ NPY.STRING: ['string_', 'str'],
+ NPY.UNICODE: ['unicode_'],
}
self.alternate_constructors = {
NPY.BOOL: [space.w_bool],
diff --git a/pypy/module/micronumpy/nditer.py b/pypy/module/micronumpy/nditer.py
--- a/pypy/module/micronumpy/nditer.py
+++ b/pypy/module/micronumpy/nditer.py
@@ -492,13 +492,15 @@
w_op_dtypes=WrappedDefault(None), order=str,
w_casting=WrappedDefault(None), w_op_axes=WrappedDefault(None),
w_itershape=WrappedDefault(None), w_buffersize=WrappedDefault(None))
-def nditer(space, w_seq, w_flags, w_op_flags, w_op_dtypes, w_casting, w_op_axes,
- w_itershape, w_buffersize, order='K'):
+def descr__new__(space, w_subtype, w_seq, w_flags, w_op_flags, w_op_dtypes,
+ w_casting, w_op_axes, w_itershape, w_buffersize, order='K'):
return W_NDIter(space, w_seq, w_flags, w_op_flags, w_op_dtypes, w_casting, w_op_axes,
w_itershape, w_buffersize, order)
-W_NDIter.typedef = TypeDef(
- 'nditer',
+W_NDIter.typedef = TypeDef('nditer',
+ __module__ = 'numpy',
+ __new__ = interp2app(descr__new__),
+
__iter__ = interp2app(W_NDIter.descr_iter),
__getitem__ = interp2app(W_NDIter.descr_getitem),
__setitem__ = interp2app(W_NDIter.descr_setitem),
@@ -530,3 +532,4 @@
shape = GetSetProperty(W_NDIter.descr_get_shape),
value = GetSetProperty(W_NDIter.descr_get_value),
)
+W_NDIter.typedef.acceptable_as_base_class = False
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
@@ -47,6 +47,7 @@
assert d.kind == 'b'
assert dtype(d) is d
assert dtype('bool') is d
+ assert dtype('bool_') is d
assert dtype('|b1') is d
b = '>' if sys.byteorder == 'little' else '<'
assert dtype(b + 'i4') is not dtype(b + 'i4')
@@ -63,10 +64,12 @@
assert dtype(int).names is None
assert dtype(int).hasobject is False
assert dtype(int).subdtype is None
+ assert dtype(str) is dtype('string') is dtype('string_')
+ assert dtype(unicode) is dtype('unicode') is dtype('unicode_')
assert dtype(None) is dtype(float)
- for d in [dtype('<c8'), dtype('>i4')]:
+ for d in [dtype('<c8'), dtype('>i4'), dtype('bool')]:
for key in ["d[2]", "d['z']", "d[None]"]:
exc = raises(KeyError, key)
assert exc.value[0] == "There are no fields in dtype %s." % str(d)
diff --git a/pypy/module/micronumpy/test/test_nditer.py b/pypy/module/micronumpy/test/test_nditer.py
--- a/pypy/module/micronumpy/test/test_nditer.py
+++ b/pypy/module/micronumpy/test/test_nditer.py
@@ -3,6 +3,19 @@
class AppTestNDIter(BaseNumpyAppTest):
+ def test_type(self):
+ import numpy as np
+ assert type(np.nditer) is type
+ assert np.nditer.__name__ == 'nditer'
+ assert np.nditer.__module__ == 'numpy'
+ try:
+ class Sub(np.nditer):
+ pass
+ except TypeError as e:
+ assert "not an acceptable base" in str(e)
+ else:
+ assert False
+
def test_basic(self):
from numpy import arange, nditer, ndarray
a = arange(6).reshape(2,3)
More information about the pypy-commit
mailing list