]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-141510: Change repr(frozendict) for empty dict (#144921)
authorVictor Stinner <vstinner@python.org>
Tue, 17 Feb 2026 18:04:17 +0000 (19:04 +0100)
committerGitHub <noreply@github.com>
Tue, 17 Feb 2026 18:04:17 +0000 (18:04 +0000)
repr(frozendict()) returns "frozendict()" instead of
"frozendict({})".

Lib/test/test_dict.py
Objects/dictobject.c

index 2a106a8a4e873952375fb9853b99ae76f67899e9..21f8bb11071c90cb3f10d8536b346e9e7b5f7f11 100644 (file)
@@ -1767,6 +1767,9 @@ class FrozenDictTests(unittest.TestCase):
         self.assertEqual(copy, frozendict({'x': 1}))
 
     def test_repr(self):
+        d = frozendict()
+        self.assertEqual(repr(d), "frozendict()")
+
         d = frozendict(x=1, y=2)
         self.assertEqual(repr(d), "frozendict({'x': 1, 'y': 2})")
 
index f7a359e4a1a40d157e59dcd383aa587082248b3a..7db2e547b54dba20779bd3ece0ae66358f3c6faf 100644 (file)
@@ -7868,6 +7868,11 @@ static PyMethodDef frozendict_methods[] = {
 static PyObject *
 frozendict_repr(PyObject *self)
 {
+    PyDictObject *mp = _PyAnyDict_CAST(self);
+    if (mp->ma_used == 0) {
+        return PyUnicode_FromFormat("%s()", Py_TYPE(self)->tp_name);
+    }
+
     PyObject *repr = anydict_repr_impl(self);
     if (repr == NULL) {
         return NULL;