From: da-woods Date: Thu, 18 Jun 2026 12:53:09 +0000 (+0100) Subject: gh-141510 Document and test frozendict class matching behaviour (#150799) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fd53ae113911e5a7d83c04b08623df824f9d5d70;p=thirdparty%2FPython%2Fcpython.git gh-141510 Document and test frozendict class matching behaviour (#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. --- diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index 6710c0acf77e..b3168bb85b47 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -1172,6 +1172,7 @@ subject value: * :class:`bytes` * :class:`dict` * :class:`float` + * :class:`frozendict` * :class:`frozenset` * :class:`int` * :class:`list` diff --git a/Lib/test/test_patma.py b/Lib/test/test_patma.py index 29cce4ee6d27..e3aaea84ea7c 100644 --- a/Lib/test/test_patma.py +++ b/Lib/test/test_patma.py @@ -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