diff options
author | Erlend Egeberg Aasland <erlend.aasland@innova.no> | 2021-04-29 08:47:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-29 08:47:48 +0200 |
commit | c6ad03fddf4b04c60dca4327140e59fb2dcca8e5 (patch) | |
tree | e09e51c5cc1d030a83f4b528395875d0ad3631d3 | |
parent | 5daf70b22e72ea1a88c05975f69120b8c4e4927f (diff) | |
download | cpython-git-c6ad03fddf4b04c60dca4327140e59fb2dcca8e5.tar.gz |
bpo-43908: Make array.array type immutable (GH-25696)
Co-authored-by: Victor Stinner <vstinner@python.org>
-rw-r--r-- | Lib/test/test_array.py | 6 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2021-04-26-20-59-17.bpo-43908.-COW4-.rst | 2 | ||||
-rw-r--r-- | Modules/arraymodule.c | 3 |
3 files changed, 10 insertions, 1 deletions
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index bdcd1254b3..11184add6d 100644 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -40,6 +40,12 @@ class MiscTest(unittest.TestCase): self.assertRaises(TypeError, array.array, 'xx') self.assertRaises(ValueError, array.array, 'x') + @support.cpython_only + def test_immutable(self): + # bpo-43908: check that array.array is immutable + with self.assertRaises(TypeError): + array.array.foo = 1 + def test_empty(self): # Exercise code for handling zero-length arrays a = array.array('B') diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-26-20-59-17.bpo-43908.-COW4-.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-26-20-59-17.bpo-43908.-COW4-.rst new file mode 100644 index 0000000000..07303b99d1 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-04-26-20-59-17.bpo-43908.-COW4-.rst @@ -0,0 +1,2 @@ +Make the :class:`array.array` type immutable. Patch by +Erlend E. Aasland. diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index f532678952..367621fd03 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -2847,7 +2847,8 @@ static PyType_Slot array_slots[] = { static PyType_Spec array_spec = { .name = "array.array", .basicsize = sizeof(arrayobject), - .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_IMMUTABLETYPE), .slots = array_slots, }; |