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): 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.