From 0c1563856189c4578d9ac3524d01ce12c5fdabfe Mon Sep 17 00:00:00 2001 From: sobolevn Date: Tue, 7 Jul 2026 19:09:02 +0300 Subject: [PATCH 1/2] [3.13] gh-153210: Restore accidental `array.ArrayType` removal (GH-153261) (cherry picked from commit ac2e14b4e29b2d11a14d289969cfffc298ea75d9) Co-authored-by: sobolevn --- Lib/test/test_array.py | 5 +++++ Modules/arraymodule.c | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index 322b77463962a34..331ee27179b826c 100755 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -35,6 +35,11 @@ def __init__(self, typecode, newarg=None): class MiscTest(unittest.TestCase): + def test_array_type_importable(self): + from array import ArrayType + + self.assertIs(array.array, ArrayType) + def test_array_is_sequence(self): self.assertIsInstance(array.array("B"), collections.abc.MutableSequence) self.assertIsInstance(array.array("B"), collections.abc.Reversible) diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 8833ea2c0bf0f29..78250bd8de84886 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -3262,7 +3262,13 @@ array_modexec(PyObject *m) CREATE_TYPE(m, state->ArrayIterType, &arrayiter_spec); Py_SET_TYPE(state->ArrayIterType, &PyType_Type); - PyObject *mutablesequence = _PyImport_GetModuleAttrString( + // Older undocumented alias: + if (PyModule_AddObjectRef(m, "ArrayType", + (PyObject *)state->ArrayType) < 0) { + return -1; + } + + PyObject *mutablesequence = _PyImport_ImportModuleAttrString( "collections.abc", "MutableSequence"); if (!mutablesequence) { return -1; From a5cee9d09d454a53276bf734731e77cca6eaae8b Mon Sep 17 00:00:00 2001 From: sobolevn Date: Wed, 8 Jul 2026 18:33:29 +0300 Subject: [PATCH 2/2] Typo --- Modules/arraymodule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 78250bd8de84886..2f578725808742c 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -3268,7 +3268,7 @@ array_modexec(PyObject *m) return -1; } - PyObject *mutablesequence = _PyImport_ImportModuleAttrString( + PyObject *mutablesequence = _PyImport_GetModuleAttrString( "collections.abc", "MutableSequence"); if (!mutablesequence) { return -1;