https://github.com/python/cpython/commit/ab01d184746b3ea383f69317c16fc726d885c968
commit: ab01d184746b3ea383f69317c16fc726d885c968
branch: main
author: Dmitry Voropaev <[email protected]>
committer: vstinner <[email protected]>
date: 2026-10-01T18:36:43Z
summary:
gh-142083: Document the 'w' type code in the array.array docstring (#158040)
Add a test asserting that the table lists exactly the supported type
codes and that the minimum size it gives for each of them is one the
implementation really meets.
files:
A Misc/NEWS.d/next/Documentation/2026-09-24-01-20-36.gh-issue-142083.WOlkvr.rst
M Lib/test/test_array.py
M Modules/arraymodule.c
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py
index ba9c25c835bc39d..580966589fdd6b3 100755
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -12,6 +12,7 @@
import weakref
import pickle
import operator
+import re
import struct
import sys
@@ -110,6 +111,25 @@ def test_typecodes(self):
self.assertIsInstance(typecode, str)
self.assertGreaterEqual(len(typecode), 1)
+ @support.cpython_only
+ @support.requires_docstrings
+ def test_typecodes_documented(self):
+ # The type code table in the array.array docstring must list every
+ # supported type code, and nothing else, and the minimum size it
+ # gives for each of them must be one the implementation meets.
+ row = re.compile(r"^ {4}'(\w+)' +\S.*? +(\d+)(?: \(see note\))?$")
+ documented = {}
+ for line in array.array.__doc__.splitlines():
+ match = row.match(line)
+ if match is not None:
+ documented[match.group(1)] = int(match.group(2))
+
+ self.assertEqual(sorted(documented), sorted(array.typecodes))
+ for typecode, minimum_size in documented.items():
+ with self.subTest(typecode=typecode):
+ self.assertGreaterEqual(array.array(typecode).itemsize,
+ minimum_size)
+
# Machine format codes.
#
diff --git
a/Misc/NEWS.d/next/Documentation/2026-09-24-01-20-36.gh-issue-142083.WOlkvr.rst
b/Misc/NEWS.d/next/Documentation/2026-09-24-01-20-36.gh-issue-142083.WOlkvr.rst
new file mode 100644
index 000000000000000..d8f20396b4556ae
--- /dev/null
+++
b/Misc/NEWS.d/next/Documentation/2026-09-24-01-20-36.gh-issue-142083.WOlkvr.rst
@@ -0,0 +1,3 @@
+Document the ``'w'`` type code in the :class:`array.array` docstring, so
+that it lists the same type codes as :data:`array.typecodes` and the
+:mod:`array` module documentation.
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index ef492d143d56445..64dacd1b8f1f616 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -3109,6 +3109,7 @@ The following type codes are defined:\n\
Type code C Type Minimum size in bytes\n\
'b' signed integer 1\n\
'B' unsigned integer 1\n\
+ 'w' Py_UCS4 4\n\
'h' signed integer 2\n\
'H' unsigned integer 2\n\
'i' signed integer 2\n\
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]