From b41bf7323dadc517d1b3f4dfa86fd248a26ef568 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Tue, 25 Oct 2022 07:03:17 -0700 Subject: [PATCH] gh-98658: Add __class_getitem__ to array.array --- Doc/whatsnew/3.12.rst | 7 ++++++- Lib/test/test_genericalias.py | 4 +++- .../Library/2022-10-25-07-00-31.gh-issue-98658.nGABW9.rst | 2 ++ Modules/arraymodule.c | 1 + 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2022-10-25-07-00-31.gh-issue-98658.nGABW9.rst diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst index 8f8a994615103d..7bf68d66982365 100644 --- a/Doc/whatsnew/3.12.rst +++ b/Doc/whatsnew/3.12.rst @@ -109,6 +109,12 @@ New Modules Improved Modules ================ +array +----- + +* The :class:`array.array` class now supports subscripting, making it a + :term:`generic type`. (Contributed by Jelle Zijlstra in :gh:`98658`.) + asyncio ------- @@ -132,7 +138,6 @@ asyncio and will be removed in Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.) - pathlib ------- diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index 1afb7ea4f85d0e..40e242c3020ebd 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -2,6 +2,7 @@ import unittest import pickle +from array import array import copy from collections import ( defaultdict, deque, OrderedDict, Counter, UserDict, UserList @@ -124,7 +125,8 @@ class BaseTest(unittest.TestCase): ShareableList, Future, _WorkItem, Morsel, - DictReader, DictWriter] + DictReader, DictWriter, + array] if ctypes is not None: generic_types.extend((ctypes.Array, ctypes.LibraryLoader)) if ValueProxy is not None: diff --git a/Misc/NEWS.d/next/Library/2022-10-25-07-00-31.gh-issue-98658.nGABW9.rst b/Misc/NEWS.d/next/Library/2022-10-25-07-00-31.gh-issue-98658.nGABW9.rst new file mode 100644 index 00000000000000..8909d494166268 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-10-25-07-00-31.gh-issue-98658.nGABW9.rst @@ -0,0 +1,2 @@ +The :class:`array.array` class now supports subscripting, making it a +:term:`generic type`. diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 924fbf29bfb889..d60cf26788f5a6 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -2303,6 +2303,7 @@ static PyMethodDef array_methods[] = { ARRAY_ARRAY_TOBYTES_METHODDEF ARRAY_ARRAY_TOUNICODE_METHODDEF ARRAY_ARRAY___SIZEOF___METHODDEF + {"__class_getitem__", Py_GenericAlias, METH_O|METH_CLASS, PyDoc_STR("See PEP 585")}, {NULL, NULL} /* sentinel */ };