[Python-checkins] bpo-34201: Make ndarray.readonly a bool and use stricter tests in test_buffer. (GH-8414)
Serhiy Storchaka
webhook-mailer at python.org
Thu Jul 26 06:23:06 EDT 2018
https://github.com/python/cpython/commit/e0d67f17ccb4645ff88c9a018679b8a5b4fe0a7e
commit: e0d67f17ccb4645ff88c9a018679b8a5b4fe0a7e
branch: master
author: Serhiy Storchaka <storchaka at gmail.com>
committer: GitHub <noreply at github.com>
date: 2018-07-26T13:23:03+03:00
summary:
bpo-34201: Make ndarray.readonly a bool and use stricter tests in test_buffer. (GH-8414)
files:
M Lib/test/test_buffer.py
M Modules/_testbuffer.c
diff --git a/Lib/test/test_buffer.py b/Lib/test/test_buffer.py
index a3f3ef098a61..549daa53018b 100644
--- a/Lib/test/test_buffer.py
+++ b/Lib/test/test_buffer.py
@@ -761,10 +761,10 @@ def setUp(self):
# The suboffsets tests need sizeof(void *).
self.sizeof_void_p = get_sizeof_void_p()
- def verify(self, result, obj=-1,
- itemsize={1}, fmt=-1, readonly={1},
- ndim={1}, shape=-1, strides=-1,
- lst=-1, sliced=False, cast=False):
+ def verify(self, result, *, obj,
+ itemsize, fmt, readonly,
+ ndim, shape, strides,
+ lst, sliced=False, cast=False):
# Verify buffer contents against expected values. Default values
# are deliberately initialized to invalid types.
if shape:
@@ -800,7 +800,7 @@ def verify(self, result, obj=-1,
self.assertEqual(result.nbytes, expected_len)
self.assertEqual(result.itemsize, itemsize)
self.assertEqual(result.format, fmt)
- self.assertEqual(result.readonly, readonly)
+ self.assertIs(result.readonly, readonly)
self.assertEqual(result.ndim, ndim)
self.assertEqual(result.shape, tuple(shape))
if not (sliced and suboffsets):
@@ -978,7 +978,7 @@ def match(req, flag):
lst = nd.tolist()
# The consumer may have requested default values or a NULL format.
- ro = 0 if match(req, PyBUF_WRITABLE) else ex.readonly
+ ro = not match(req, PyBUF_WRITABLE) and ex.readonly
fmt = ex.format
itemsize = ex.itemsize
ndim = ex.ndim
@@ -1284,7 +1284,7 @@ def test_ndarray_format_scalar(self):
itemsize = struct.calcsize(fmt)
nd = ndarray(scalar, shape=(), format=fmt)
self.verify(nd, obj=None,
- itemsize=itemsize, fmt=fmt, readonly=1,
+ itemsize=itemsize, fmt=fmt, readonly=True,
ndim=0, shape=(), strides=(),
lst=scalar)
@@ -1296,7 +1296,7 @@ def test_ndarray_format_shape(self):
for flags in (0, ND_PIL):
nd = ndarray(items, shape=[nitems], format=fmt, flags=flags)
self.verify(nd, obj=None,
- itemsize=itemsize, fmt=fmt, readonly=1,
+ itemsize=itemsize, fmt=fmt, readonly=True,
ndim=1, shape=(nitems,), strides=(itemsize,),
lst=items)
@@ -1317,7 +1317,7 @@ def test_ndarray_format_strides(self):
nd = ndarray(items, shape=shape, strides=strides,
format=fmt, offset=offset, flags=flags)
self.verify(nd, obj=None,
- itemsize=itemsize, fmt=fmt, readonly=1,
+ itemsize=itemsize, fmt=fmt, readonly=True,
ndim=1, shape=shape, strides=strides,
lst=items[::step])
@@ -1346,7 +1346,7 @@ def test_ndarray_multidim(self):
strides = strides_from_shape(ndim, shape, itemsize, 'C')
lst = carray(items, shape)
self.verify(nd, obj=None,
- itemsize=itemsize, fmt=fmt, readonly=1,
+ itemsize=itemsize, fmt=fmt, readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst)
@@ -1357,7 +1357,7 @@ def test_ndarray_multidim(self):
self.assertTrue(nd.strides == ())
mv = nd.memoryview_from_buffer()
self.verify(mv, obj=None,
- itemsize=itemsize, fmt=fmt, readonly=1,
+ itemsize=itemsize, fmt=fmt, readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst)
@@ -1368,7 +1368,7 @@ def test_ndarray_multidim(self):
strides = strides_from_shape(ndim, shape, itemsize, 'F')
lst = farray(items, shape)
self.verify(nd, obj=None,
- itemsize=itemsize, fmt=fmt, readonly=1,
+ itemsize=itemsize, fmt=fmt, readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst)
@@ -1816,7 +1816,7 @@ def test_ndarray_slice_assign_single(self):
self.assertEqual(mv, nd)
self.assertIs(mverr, lsterr)
self.verify(mv, obj=ex,
- itemsize=nd.itemsize, fmt=fmt, readonly=0,
+ itemsize=nd.itemsize, fmt=fmt, readonly=False,
ndim=nd.ndim, shape=nd.shape, strides=nd.strides,
lst=nd.tolist())
@@ -1890,7 +1890,7 @@ def test_ndarray_random(self):
continue # http://projects.scipy.org/numpy/ticket/1910
z = numpy_array_from_structure(items, fmt, t)
self.verify(x, obj=None,
- itemsize=z.itemsize, fmt=fmt, readonly=0,
+ itemsize=z.itemsize, fmt=fmt, readonly=False,
ndim=z.ndim, shape=z.shape, strides=z.strides,
lst=z.tolist())
@@ -1975,12 +1975,12 @@ def test_ndarray_random_slice_assign(self):
# Slice assignment of overlapping structures
# is undefined in NumPy.
self.verify(xl, obj=None,
- itemsize=zl.itemsize, fmt=fmt, readonly=0,
+ itemsize=zl.itemsize, fmt=fmt, readonly=False,
ndim=zl.ndim, shape=zl.shape,
strides=zl.strides, lst=zl.tolist())
self.verify(xr, obj=None,
- itemsize=zr.itemsize, fmt=fmt, readonly=0,
+ itemsize=zr.itemsize, fmt=fmt, readonly=False,
ndim=zr.ndim, shape=zr.shape,
strides=zr.strides, lst=zr.tolist())
@@ -2358,14 +2358,14 @@ def test_memoryview_construction(self):
lst = carray(items, shape)
self.verify(m, obj=ex,
- itemsize=1, fmt='B', readonly=1,
+ itemsize=1, fmt='B', readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst)
# From memoryview:
m2 = memoryview(m)
self.verify(m2, obj=ex,
- itemsize=1, fmt='B', readonly=1,
+ itemsize=1, fmt='B', readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst)
@@ -2374,7 +2374,7 @@ def test_memoryview_construction(self):
self.assertEqual(nd.strides, ())
m = nd.memoryview_from_buffer()
self.verify(m, obj=None,
- itemsize=1, fmt='B', readonly=1,
+ itemsize=1, fmt='B', readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst)
@@ -2387,7 +2387,7 @@ def test_memoryview_construction(self):
lst = [items] if ndim == 0 else items
self.verify(m, obj=None,
- itemsize=1, fmt='B', readonly=1,
+ itemsize=1, fmt='B', readonly=True,
ndim=1, shape=[ex.nbytes], strides=(1,),
lst=lst)
@@ -2405,14 +2405,14 @@ def test_memoryview_construction(self):
lst = farray(items, shape)
self.verify(m, obj=ex,
- itemsize=1, fmt='B', readonly=1,
+ itemsize=1, fmt='B', readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst)
# From memoryview:
m2 = memoryview(m)
self.verify(m2, obj=ex,
- itemsize=1, fmt='B', readonly=1,
+ itemsize=1, fmt='B', readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst)
@@ -2427,14 +2427,14 @@ def test_memoryview_construction(self):
lst = carray(items, shape)
self.verify(m, obj=ex,
- itemsize=1, fmt='B', readonly=1,
+ itemsize=1, fmt='B', readonly=True,
ndim=ndim, shape=shape, strides=ex.strides,
lst=lst)
# From memoryview:
m2 = memoryview(m)
self.verify(m2, obj=ex,
- itemsize=1, fmt='B', readonly=1,
+ itemsize=1, fmt='B', readonly=True,
ndim=ndim, shape=shape, strides=ex.strides,
lst=lst)
@@ -2684,7 +2684,7 @@ def iter_roundtrip(ex, m, items, fmt):
m2 = m.cast(bytefmt)
lst = to_bytelist(ex)
self.verify(m2, obj=ex,
- itemsize=1, fmt=bytefmt, readonly=0,
+ itemsize=1, fmt=bytefmt, readonly=False,
ndim=1, shape=[31*srcsize], strides=(1,),
lst=lst, cast=True)
@@ -2692,7 +2692,7 @@ def iter_roundtrip(ex, m, items, fmt):
self.assertEqual(m3, ex)
lst = ex.tolist()
self.verify(m3, obj=ex,
- itemsize=srcsize, fmt=fmt, readonly=0,
+ itemsize=srcsize, fmt=fmt, readonly=False,
ndim=1, shape=[31], strides=(srcsize,),
lst=lst, cast=True)
@@ -2703,7 +2703,7 @@ def iter_roundtrip(ex, m, items, fmt):
m = memoryview(ex)
m2 = m.cast('B')
self.verify(m2, obj=ex,
- itemsize=1, fmt='B', readonly=1,
+ itemsize=1, fmt='B', readonly=True,
ndim=1, shape=destshape, strides=(1,),
lst=destitems, cast=True)
@@ -2714,7 +2714,7 @@ def iter_roundtrip(ex, m, items, fmt):
m = memoryview(ex)
m2 = m.cast('I', shape=[])
self.verify(m2, obj=ex,
- itemsize=destsize, fmt='I', readonly=1,
+ itemsize=destsize, fmt='I', readonly=True,
ndim=0, shape=(), strides=(),
lst=destitems, cast=True)
@@ -2763,7 +2763,7 @@ def test_memoryview_cast_1D_ND(self):
strides = nd.strides
lst = nd.tolist()
self.verify(m2, obj=ex,
- itemsize=tsize, fmt=tfmt, readonly=1,
+ itemsize=tsize, fmt=tfmt, readonly=True,
ndim=ndim, shape=tshape, strides=strides,
lst=lst, cast=True)
@@ -2775,12 +2775,12 @@ def test_memoryview_cast_1D_ND(self):
lst = ex.tolist()
self.verify(m3, obj=ex,
- itemsize=size, fmt=fmt, readonly=1,
+ itemsize=size, fmt=fmt, readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst, cast=True)
self.verify(m4, obj=ex,
- itemsize=size, fmt=fmt, readonly=1,
+ itemsize=size, fmt=fmt, readonly=True,
ndim=ndim, shape=shape, strides=strides,
lst=lst, cast=True)
@@ -2793,7 +2793,7 @@ class BEPoint(ctypes.BigEndianStructure):
m2 = m1.cast('B')
self.assertEqual(m2.obj, point)
self.assertEqual(m2.itemsize, 1)
- self.assertEqual(m2.readonly, 0)
+ self.assertIs(m2.readonly, False)
self.assertEqual(m2.ndim, 1)
self.assertEqual(m2.shape, (m2.nbytes,))
self.assertEqual(m2.strides, (1,))
@@ -2804,7 +2804,7 @@ class BEPoint(ctypes.BigEndianStructure):
m2 = m1.cast('c')
self.assertEqual(m2.obj, x)
self.assertEqual(m2.itemsize, 1)
- self.assertEqual(m2.readonly, 0)
+ self.assertIs(m2.readonly, False)
self.assertEqual(m2.ndim, 1)
self.assertEqual(m2.shape, (m2.nbytes,))
self.assertEqual(m2.strides, (1,))
@@ -2972,7 +2972,7 @@ def test_memoryview_assign(self):
flags=ND_WRITABLE)
m = memoryview(ex)
m[1] = True
- self.assertEqual(m[1], True)
+ self.assertIs(m[1], True)
# pack_single() exceptions:
nd = ndarray([b'x'], shape=[1], format='c', flags=ND_WRITABLE)
@@ -4306,7 +4306,7 @@ def test_memoryview_from_static_exporter(self):
x = staticarray()
y = memoryview(x)
self.verify(y, obj=x,
- itemsize=1, fmt=fmt, readonly=1,
+ itemsize=1, fmt=fmt, readonly=True,
ndim=1, shape=[12], strides=[1],
lst=lst)
for i in range(12):
@@ -4326,7 +4326,7 @@ def test_memoryview_from_static_exporter(self):
self.assertIs(y.obj, x)
self.assertIs(m.obj, z)
self.verify(m, obj=z,
- itemsize=1, fmt=fmt, readonly=1,
+ itemsize=1, fmt=fmt, readonly=True,
ndim=1, shape=[12], strides=[1],
lst=lst)
del x, y, z, m
@@ -4339,7 +4339,7 @@ def test_memoryview_from_static_exporter(self):
self.assertIs(z.obj, x)
self.assertIs(m.obj, x)
self.verify(m, obj=x,
- itemsize=1, fmt=fmt, readonly=1,
+ itemsize=1, fmt=fmt, readonly=True,
ndim=1, shape=[12], strides=[1],
lst=lst)
del x, y, z, m
@@ -4348,7 +4348,7 @@ def test_memoryview_from_static_exporter(self):
x = staticarray(legacy_mode=True)
y = memoryview(x)
self.verify(y, obj=None,
- itemsize=1, fmt=fmt, readonly=1,
+ itemsize=1, fmt=fmt, readonly=True,
ndim=1, shape=[12], strides=[1],
lst=lst)
for i in range(12):
@@ -4368,7 +4368,7 @@ def test_memoryview_from_static_exporter(self):
self.assertIs(y.obj, None)
self.assertIs(m.obj, z)
self.verify(m, obj=z,
- itemsize=1, fmt=fmt, readonly=1,
+ itemsize=1, fmt=fmt, readonly=True,
ndim=1, shape=[12], strides=[1],
lst=lst)
del x, y, z, m
@@ -4383,7 +4383,7 @@ def test_memoryview_from_static_exporter(self):
self.assertIs(z.obj, y)
self.assertIs(m.obj, y)
self.verify(m, obj=y,
- itemsize=1, fmt=fmt, readonly=1,
+ itemsize=1, fmt=fmt, readonly=True,
ndim=1, shape=[12], strides=[1],
lst=lst)
del x, y, z, m
diff --git a/Modules/_testbuffer.c b/Modules/_testbuffer.c
index 344d06d0525d..b1b8ff370151 100644
--- a/Modules/_testbuffer.c
+++ b/Modules/_testbuffer.c
@@ -2038,7 +2038,7 @@ static PyObject *
ndarray_get_readonly(NDArrayObject *self, void *closure)
{
Py_buffer *base = &self->head->base;
- return PyLong_FromLong(base->readonly);
+ return PyBool_FromLong(base->readonly);
}
static PyObject *
More information about the Python-checkins
mailing list