MCPcopy Index your code
hub / github.com/python/cpython / test_memoryview_release

Method test_memoryview_release

Lib/test/test_buffer.py:4198–4324  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

4196 self.assertRaises(ValueError, m.__hash__)
4197
4198 def test_memoryview_release(self):
4199
4200 # Create re-exporter from getbuffer(memoryview), then release the view.
4201 a = bytearray([1,2,3])
4202 m = memoryview(a)
4203 nd = ndarray(m) # re-exporter
4204 self.assertRaises(BufferError, m.release)
4205 del nd
4206 m.release()
4207
4208 a = bytearray([1,2,3])
4209 m = memoryview(a)
4210 nd1 = ndarray(m, getbuf=PyBUF_FULL_RO, flags=ND_REDIRECT)
4211 nd2 = ndarray(nd1, getbuf=PyBUF_FULL_RO, flags=ND_REDIRECT)
4212 self.assertIs(nd2.obj, m)
4213 self.assertRaises(BufferError, m.release)
4214 del nd1, nd2
4215 m.release()
4216
4217 # chained views
4218 a = bytearray([1,2,3])
4219 m1 = memoryview(a)
4220 m2 = memoryview(m1)
4221 nd = ndarray(m2) # re-exporter
4222 m1.release()
4223 self.assertRaises(BufferError, m2.release)
4224 del nd
4225 m2.release()
4226
4227 a = bytearray([1,2,3])
4228 m1 = memoryview(a)
4229 m2 = memoryview(m1)
4230 nd1 = ndarray(m2, getbuf=PyBUF_FULL_RO, flags=ND_REDIRECT)
4231 nd2 = ndarray(nd1, getbuf=PyBUF_FULL_RO, flags=ND_REDIRECT)
4232 self.assertIs(nd2.obj, m2)
4233 m1.release()
4234 self.assertRaises(BufferError, m2.release)
4235 del nd1, nd2
4236 m2.release()
4237
4238 # Allow changing layout while buffers are exported.
4239 nd = ndarray([1,2,3], shape=[3], flags=ND_VAREXPORT)
4240 m1 = memoryview(nd)
4241
4242 nd.push([4,5,6,7,8], shape=[5]) # mutate nd
4243 m2 = memoryview(nd)
4244
4245 x = memoryview(m1)
4246 self.assertEqual(x.tolist(), m1.tolist())
4247
4248 y = memoryview(m2)
4249 self.assertEqual(y.tolist(), m2.tolist())
4250 self.assertEqual(y.tolist(), nd.tolist())
4251 m2.release()
4252 y.release()
4253
4254 nd.pop() # pop the current view
4255 self.assertEqual(x.tolist(), nd.tolist())

Callers

nothing calls this directly

Calls 7

listClass · 0.85
assertRaisesMethod · 0.45
releaseMethod · 0.45
assertIsMethod · 0.45
pushMethod · 0.45
assertEqualMethod · 0.45
popMethod · 0.45

Tested by

no test coverage detected