bpo-33176: Add a toreadonly() method to memoryviews. (GH-6466) · python/cpython@480ab05

@@ -924,23 +924,30 @@ def verify(self, result, obj=-1,

924924

except BufferError: # re-exporter does not provide full information

925925

return

926926

ex = result.obj if isinstance(result, memoryview) else result

927-

self.assertIs(m.obj, ex)

928-

self.assertEqual(m.nbytes, expected_len)

929-

self.assertEqual(m.itemsize, itemsize)

930-

self.assertEqual(m.format, fmt)

931-

self.assertEqual(m.readonly, readonly)

932-

self.assertEqual(m.ndim, ndim)

933-

self.assertEqual(m.shape, tuple(shape))

934-

if not (sliced and suboffsets):

935-

self.assertEqual(m.strides, tuple(strides))

936-

self.assertEqual(m.suboffsets, tuple(suboffsets))

937-938-

n = 1 if ndim == 0 else len(lst)

939-

self.assertEqual(len(m), n)

940927941-

rep = result.tolist() if fmt else result.tobytes()

942-

self.assertEqual(rep, lst)

943-

self.assertEqual(m, result)

928+

def check_memoryview(m, expected_readonly=readonly):

929+

self.assertIs(m.obj, ex)

930+

self.assertEqual(m.nbytes, expected_len)

931+

self.assertEqual(m.itemsize, itemsize)

932+

self.assertEqual(m.format, fmt)

933+

self.assertEqual(m.readonly, expected_readonly)

934+

self.assertEqual(m.ndim, ndim)

935+

self.assertEqual(m.shape, tuple(shape))

936+

if not (sliced and suboffsets):

937+

self.assertEqual(m.strides, tuple(strides))

938+

self.assertEqual(m.suboffsets, tuple(suboffsets))

939+940+

n = 1 if ndim == 0 else len(lst)

941+

self.assertEqual(len(m), n)

942+943+

rep = result.tolist() if fmt else result.tobytes()

944+

self.assertEqual(rep, lst)

945+

self.assertEqual(m, result)

946+947+

check_memoryview(m)

948+

with m.toreadonly() as mm:

949+

check_memoryview(mm, expected_readonly=True)

950+

m.tobytes() # Releasing mm didn't release m

944951945952

def verify_getbuf(self, orig_ex, ex, req, sliced=False):

946953

def simple_fmt(ex):