]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.15] gh-141510 Document and test frozendict class matching behaviour (GH-150799...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 19 Jun 2026 08:45:02 +0000 (10:45 +0200)
committerGitHub <noreply@github.com>
Fri, 19 Jun 2026 08:45:02 +0000 (08:45 +0000)
gh-141510 Document and test frozendict class matching behaviour (GH-150799)

Frozendict has `_Py_TPFLAGS_MATCH_SELF` set so works correctly
with the single-arg class matching. However it isn't documented
in the list of classes this works with and it isn't tested.

The test is some way below the other similar tests but anything
else would need a large renumbering.
(cherry picked from commit fd53ae113911e5a7d83c04b08623df824f9d5d70)

Co-authored-by: da-woods <dw-git@d-woods.co.uk>
Doc/reference/compound_stmts.rst
Lib/test/test_patma.py

index 63baefd33e88c507b55f2cc121a44691f90727e4..71bfb608dda7283e3f8e180ddb1c4500e14c4b55 100644 (file)
@@ -1172,6 +1172,7 @@ subject value:
    * :class:`bytes`
    * :class:`dict`
    * :class:`float`
+   * :class:`frozendict`
    * :class:`frozenset`
    * :class:`int`
    * :class:`list`
index 29cce4ee6d271ff5711a288537d23c4e26821516..e3aaea84ea7ce84d7e8482317c2f8a7e1f9d3a72 100644 (file)
@@ -2852,6 +2852,15 @@ class TestPatma(unittest.TestCase):
         self.assertEqual(x, 0)
         self.assertEqual(y, 1)
 
+    def test_patma_frozendict_class_self(self):
+        x = frozendict()
+        match x:
+            case frozendict(z):
+                y = 0
+        self.assertEqual(x, frozendict())
+        self.assertEqual(y, 0)
+        self.assertIs(z, x)
+
     def test_patma_runtime_checkable_protocol(self):
         # Runtime-checkable protocol
         from typing import Protocol, runtime_checkable