[pypy-commit] pypy newmemoryview-app-level: cleanup, add test

mattip pypy.commits at gmail.com
Mon Feb 25 02:25:23 EST 2019


Author: Matti Picus <matti.picus at gmail.com>
Branch: newmemoryview-app-level
Changeset: r96156:96f4200d74ac
Date: 2019-02-24 22:41 +0200
http://bitbucket.org/pypy/pypy/changeset/96f4200d74ac/

Log:	cleanup, add test

diff --git a/extra_tests/ctypes_tests/test_structures.py b/extra_tests/ctypes_tests/test_structures.py
--- a/extra_tests/ctypes_tests/test_structures.py
+++ b/extra_tests/ctypes_tests/test_structures.py
@@ -190,3 +190,20 @@
     assert sizeof(s) == 3 * sizeof(c_int)
     assert s.a == 4     # 256 + 4
     assert s.b == -123
+
+def test_memoryview():
+    class S(Structure):
+        _fields_ = [('a', c_int16),
+                    ('b', c_int16),
+                   ]
+
+    S3 = S * 3
+    c_array = (2 * S3)(
+        S3(S(a=0, b=1), S(a=2, b=3), S(a=4,  b=5)),
+        S3(S(a=6, b=7), S(a=8, b=9), S(a=10, b=11)),
+        )
+
+    mv = memoryview(c_array)
+    assert mv.format == 'T{<h:a:<h:b:}'
+    assert mv.shape == (2, 3)
+    assert mv.itemsize == 4
diff --git a/pypy/module/__pypy__/newmemoryview.py b/pypy/module/__pypy__/newmemoryview.py
--- a/pypy/module/__pypy__/newmemoryview.py
+++ b/pypy/module/__pypy__/newmemoryview.py
@@ -6,33 +6,6 @@
 from pypy.interpreter.gateway import unwrap_spec
 from pypy.objspace.std.memoryobject import BufferViewND
 
-pep3118_size_map = {
-    # from struct documentation https://docs.python.org/3/library/struct.html
-    'x': 1, #padding
-    '?': 1,
-    'c': 1,
-    'b': 1,
-    'B': 1,
-    'h': 2,
-    'H': 2,
-    'i': 4,
-    'I': 4,
-    'l': 4,
-    'L': 4,
-    'q': 8,
-    'Q': 8,
-    'e': 2,
-    'f': 4,
-    'd': 8,
-    # pep 3118 extensions
-    # https://www.python.org/dev/peps/pep-3118/#additions-to-the-struct-string-syntax
-    'g': 16, # long double - is this platform dependent?
-    'Zf': 8,
-    'Zd':16,
-    'Zg':32,
-    # Unhandled: 's', 'w' (UCS-4), 'c' (usc-1), 'u' (usc-2), 'O' (PyObject*),
-}
-
 @unwrap_spec(itemsize=int, format='text')
 def newmemoryview(space, w_obj, itemsize, format, w_shape=None, w_strides=None):
     '''


More information about the pypy-commit mailing list