[pypy-commit] pypy default: implement __iter__for scalars (yuyichao)
mattip
noreply at buildbot.pypy.org
Mon Jul 14 06:18:13 CEST 2014
Author: mattip <matti.picus at gmail.com>
Branch:
Changeset: r72432:46446b3987d3
Date: 2014-07-14 07:10 +0300
http://bitbucket.org/pypy/pypy/changeset/46446b3987d3/
Log: implement __iter__for scalars (yuyichao)
diff --git a/pypy/module/micronumpy/boxes.py b/pypy/module/micronumpy/boxes.py
--- a/pypy/module/micronumpy/boxes.py
+++ b/pypy/module/micronumpy/boxes.py
@@ -153,12 +153,10 @@
raise OperationError(space.w_IndexError, space.wrap(
"invalid index to scalar variable"))
- '''
def descr_iter(self, space):
# Making numpy scalar non-iterable with a valid __getitem__ method
raise oefmt(space.w_TypeError,
"'%T' object is not iterable", self)
- '''
def descr_str(self, space):
return space.wrap(self.get_dtype(space).itemtype.str_format(self))
@@ -513,6 +511,9 @@
return space.wrap(dtype.itemtype.to_str(read_val))
return read_val
+ def descr_iter(self, space):
+ return space.newseqiter(self)
+
def descr_setitem(self, space, w_item, w_value):
if space.isinstance_w(w_item, space.w_basestring):
item = space.str_w(w_item)
@@ -562,7 +563,7 @@
__new__ = interp2app(W_GenericBox.descr__new__.im_func),
__getitem__ = interp2app(W_GenericBox.descr_getitem),
- #__iter__ = interp2app(W_GenericBox.descr_iter),
+ __iter__ = interp2app(W_GenericBox.descr_iter),
__str__ = interp2app(W_GenericBox.descr_str),
__repr__ = interp2app(W_GenericBox.descr_str),
__format__ = interp2app(W_GenericBox.descr_format),
@@ -784,6 +785,7 @@
__new__ = interp2app(W_VoidBox.descr__new__.im_func),
__getitem__ = interp2app(W_VoidBox.descr_getitem),
__setitem__ = interp2app(W_VoidBox.descr_setitem),
+ __iter__ = interp2app(W_VoidBox.descr_iter),
)
W_CharacterBox.typedef = TypeDef("numpy.character", W_FlexibleBox.typedef,
diff --git a/pypy/module/micronumpy/test/test_scalar.py b/pypy/module/micronumpy/test/test_scalar.py
--- a/pypy/module/micronumpy/test/test_scalar.py
+++ b/pypy/module/micronumpy/test/test_scalar.py
@@ -292,7 +292,6 @@
assert np.isnan(b/a)
def test_scalar_iter(self):
- skip('not implemented yet')
from numpypy import int8, int16, int32, int64, float32, float64
for t in int8, int16, int32, int64, float32, float64:
try:
More information about the pypy-commit
mailing list