From: Victor Stinner Date: Tue, 17 Feb 2026 18:04:17 +0000 (+0100) Subject: gh-141510: Change repr(frozendict) for empty dict (#144921) X-Git-Tag: v3.15.0a7~256 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1505b543a26d3288725ca83e4a70dfa378eb866;p=thirdparty%2FPython%2Fcpython.git gh-141510: Change repr(frozendict) for empty dict (#144921) repr(frozendict()) returns "frozendict()" instead of "frozendict({})". --- diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py index 2a106a8a4e87..21f8bb11071c 100644 --- a/Lib/test/test_dict.py +++ b/Lib/test/test_dict.py @@ -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})") diff --git a/Objects/dictobject.c b/Objects/dictobject.c index f7a359e4a1a4..7db2e547b54d 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -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;