Author: Ronan Lamy <[email protected]>
Branch: py3.5
Changeset: r88035:bbc8635cc762
Date: 2016-11-01 15:50 +0000
http://bitbucket.org/pypy/pypy/changeset/bbc8635cc762/
Log: Implement struct.iter_unpack() function
diff --git a/pypy/module/struct/__init__.py b/pypy/module/struct/__init__.py
--- a/pypy/module/struct/__init__.py
+++ b/pypy/module/struct/__init__.py
@@ -55,6 +55,7 @@
'pack_into': 'interp_struct.pack_into',
'unpack': 'interp_struct.unpack',
'unpack_from': 'interp_struct.unpack_from',
+ 'iter_unpack': 'interp_struct.iter_unpack',
'Struct': 'interp_struct.W_Struct',
'_clearcache': 'interp_struct.clearcache',
diff --git a/pypy/module/struct/interp_struct.py
b/pypy/module/struct/interp_struct.py
--- a/pypy/module/struct/interp_struct.py
+++ b/pypy/module/struct/interp_struct.py
@@ -186,5 +186,11 @@
#__length_hint__=
)
+@unwrap_spec(format=str)
+def iter_unpack(space, format, w_buffer):
+ w_struct = W_Struct(space, format)
+ buf = space.buffer_w(w_buffer, space.BUF_SIMPLE)
+ return W_UnpackIter(w_struct, buf)
+
def clearcache(space):
"""No-op on PyPy"""
diff --git a/pypy/module/struct/test/test_struct.py
b/pypy/module/struct/test/test_struct.py
--- a/pypy/module/struct/test/test_struct.py
+++ b/pypy/module/struct/test/test_struct.py
@@ -400,6 +400,8 @@
s = self.struct.Struct('ii')
it = s.iter_unpack(b)
assert list(it) == [(0, 0), (0, 0)]
+ it = self.struct.iter_unpack('ii', b)
+ assert list(it) == [(0, 0), (0, 0)]
def test___float__(self):
class MyFloat(object):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit