From 63c23621c5d23216643f2cae9002fcdcbb353d9f Mon Sep 17 00:00:00 2001 From: Botond Osvath Date: Wed, 13 Aug 2025 18:16:29 +0200 Subject: [PATCH 1/2] Improving the repr of dataclasses.Field and dataclasses._DataclassParams --- Lib/dataclasses.py | 40 +++++++++++++-------------- Lib/test/test_dataclasses/__init__.py | 24 ++++++++-------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py index d29f1615f276d2..fb92f20e01cc55 100644 --- a/Lib/dataclasses.py +++ b/Lib/dataclasses.py @@ -311,17 +311,17 @@ def __init__(self, default, default_factory, init, repr, hash, compare, @recursive_repr() def __repr__(self): return ('Field(' - f'name={self.name!r},' - f'type={self.type!r},' - f'default={self.default!r},' - f'default_factory={self.default_factory!r},' - f'init={self.init!r},' - f'repr={self.repr!r},' - f'hash={self.hash!r},' - f'compare={self.compare!r},' - f'metadata={self.metadata!r},' - f'kw_only={self.kw_only!r},' - f'doc={self.doc!r},' + f'name={self.name!r}, ' + f'type={self.type!r}, ' + f'default={self.default!r}, ' + f'default_factory={self.default_factory!r}, ' + f'init={self.init!r}, ' + f'repr={self.repr!r}, ' + f'hash={self.hash!r}, ' + f'compare={self.compare!r}, ' + f'metadata={self.metadata!r}, ' + f'kw_only={self.kw_only!r}, ' + f'doc={self.doc!r}, ' f'_field_type={self._field_type}' ')') @@ -372,15 +372,15 @@ def __init__(self, def __repr__(self): return ('_DataclassParams(' - f'init={self.init!r},' - f'repr={self.repr!r},' - f'eq={self.eq!r},' - f'order={self.order!r},' - f'unsafe_hash={self.unsafe_hash!r},' - f'frozen={self.frozen!r},' - f'match_args={self.match_args!r},' - f'kw_only={self.kw_only!r},' - f'slots={self.slots!r},' + f'init={self.init!r}, ' + f'repr={self.repr!r}, ' + f'eq={self.eq!r}, ' + f'order={self.order!r}, ' + f'unsafe_hash={self.unsafe_hash!r}, ' + f'frozen={self.frozen!r}, ' + f'match_args={self.match_args!r}, ' + f'kw_only={self.kw_only!r}, ' + f'slots={self.slots!r}, ' f'weakref_slot={self.weakref_slot!r}' ')') diff --git a/Lib/test/test_dataclasses/__init__.py b/Lib/test/test_dataclasses/__init__.py index 6bf5e5b3e5554b..7357f32a1fca7c 100644 --- a/Lib/test/test_dataclasses/__init__.py +++ b/Lib/test/test_dataclasses/__init__.py @@ -68,12 +68,12 @@ def test_field_repr(self): int_field = field(default=1, init=True, repr=False, doc='Docstring') int_field.name = "id" repr_output = repr(int_field) - expected_output = "Field(name='id',type=None," \ - f"default=1,default_factory={MISSING!r}," \ - "init=True,repr=False,hash=None," \ - "compare=True,metadata=mappingproxy({})," \ - f"kw_only={MISSING!r}," \ - "doc='Docstring'," \ + expected_output = "Field(name='id', type=None, " \ + f"default=1, default_factory={MISSING!r}, " \ + "init=True, repr=False, hash=None, " \ + "compare=True, metadata=mappingproxy({}), " \ + f"kw_only={MISSING!r}, " \ + "doc='Docstring', " \ "_field_type=None)" self.assertEqual(repr_output, expected_output) @@ -84,7 +84,7 @@ def test_field_recursive_repr(self): rec_field.name = "id" repr_output = repr(rec_field) - self.assertIn(",type=...,", repr_output) + self.assertIn(", type=..., ", repr_output) def test_recursive_annotation(self): class C: @@ -94,7 +94,7 @@ class C: class D: C: C = field() - self.assertIn(",type=...,", repr(D.__dataclass_fields__["C"])) + self.assertIn(", type=..., ", repr(D.__dataclass_fields__["C"])) def test_dataclass_params_repr(self): # Even though this is testing an internal implementation detail, @@ -104,10 +104,10 @@ def test_dataclass_params_repr(self): class Some: pass repr_output = repr(Some.__dataclass_params__) - expected_output = "_DataclassParams(init=True,repr=True," \ - "eq=True,order=False,unsafe_hash=False,frozen=True," \ - "match_args=True,kw_only=False," \ - "slots=True,weakref_slot=False)" + expected_output = "_DataclassParams(init=True, repr=True, " \ + "eq=True, order=False, unsafe_hash=False, frozen=True, " \ + "match_args=True, kw_only=False, " \ + "slots=True, weakref_slot=False)" self.assertEqual(repr_output, expected_output) def test_dataclass_params_signature(self): From f5f7493b6f99ca8408cf1b27c9f65c37248ccff5 Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:25:22 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2025-08-13-16-25-21.gh-issue-137714.pgwdGY.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-08-13-16-25-21.gh-issue-137714.pgwdGY.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-08-13-16-25-21.gh-issue-137714.pgwdGY.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-13-16-25-21.gh-issue-137714.pgwdGY.rst new file mode 100644 index 00000000000000..72bc6ac44b31a6 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-13-16-25-21.gh-issue-137714.pgwdGY.rst @@ -0,0 +1 @@ +Improving the repr of dataclasses.Field and dataclasses._DataclassParams by adding spaces between attributes.