Author: Brian Kearns <[email protected]>
Branch:
Changeset: r67941:8e73b35beb24
Date: 2013-11-10 21:42 -0500
http://bitbucket.org/pypy/pypy/changeset/8e73b35beb24/
Log: provide len for numpy dtypes
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
@@ -254,6 +254,11 @@
raise OperationError(space.w_KeyError, space.wrap(
"Field named '%s' not found." % item))
+ def descr_len(self, space):
+ if self.fields is None:
+ return space.wrap(0)
+ return space.wrap(len(self.fields))
+
def descr_reduce(self, space):
w_class = space.type(self)
@@ -397,6 +402,7 @@
__eq__ = interp2app(W_Dtype.descr_eq),
__ne__ = interp2app(W_Dtype.descr_ne),
__getitem__ = interp2app(W_Dtype.descr_getitem),
+ __len__ = interp2app(W_Dtype.descr_len),
__reduce__ = interp2app(W_Dtype.descr_reduce),
__setstate__ = interp2app(W_Dtype.descr_setstate),
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
@@ -221,6 +221,13 @@
for i in range(5):
assert b[i] == i * 2
+ def test_len(self):
+ import numpy as np
+ d = np.dtype('int32')
+ assert len(d) == 0
+ d = np.dtype([('x', 'i4'), ('y', 'i4')])
+ assert len(d) == 2
+
def test_shape(self):
from numpypy import dtype
assert dtype(long).shape == ()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit