Close #19078: memoryview now supports reversed
Patch by Claudiu Popa
diff --git a/Lib/test/test_memoryview.py b/Lib/test/test_memoryview.py
index ee6b15a..ffd4f58 100644
--- a/Lib/test/test_memoryview.py
+++ b/Lib/test/test_memoryview.py
@@ -352,6 +352,15 @@
self.assertIs(wr(), None)
self.assertIs(L[0], b)
+ def test_reversed(self):
+ for tp in self._types:
+ b = tp(self._source)
+ m = self._view(b)
+ aslist = list(reversed(m.tolist()))
+ self.assertEqual(list(reversed(m)), aslist)
+ self.assertEqual(list(reversed(m)), list(m[::-1]))
+
+
# Variations on source objects for the buffer: bytes-like objects, then arrays
# with itemsize > 1.
# NOTE: support for multi-dimensional objects is unimplemented.
diff --git a/Misc/NEWS b/Misc/NEWS
index 9cf8ada..71de0bb 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,10 @@
Core and Builtins
-----------------
+- Issue #19078: memoryview now correctly supports the reversed builtin
+ (Patch by Claudiu Popa)
+
+
Library
-------
diff --git a/Objects/memoryobject.c b/Objects/memoryobject.c
index abd069b..e57af18 100644
--- a/Objects/memoryobject.c
+++ b/Objects/memoryobject.c
@@ -2402,7 +2402,7 @@
/* As sequence */
static PySequenceMethods memory_as_sequence = {
- 0, /* sq_length */
+ (lenfunc)memory_length, /* sq_length */
0, /* sq_concat */
0, /* sq_repeat */
(ssizeargfunc)memory_item, /* sq_item */