From: Phillip Schanely Date: Thu, 18 Jan 2024 16:01:17 +0000 (-0500) Subject: gh-114198: Rename dataclass __replace__ argument to 'self' (gh-114251) X-Git-Tag: v3.13.0a4~425 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=339fc3c22446a148d27d9ec061594ac8d0abd33d;p=thirdparty%2FPython%2Fcpython.git gh-114198: Rename dataclass __replace__ argument to 'self' (gh-114251) This change renames the dataclass __replace__ method's first argument name from 'obj' to 'self'. --- diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py index 2fba32b5ffbc..d0827e96097c 100644 --- a/Lib/dataclasses.py +++ b/Lib/dataclasses.py @@ -1558,14 +1558,14 @@ def replace(obj, /, **changes): return _replace(obj, **changes) -def _replace(obj, /, **changes): +def _replace(self, /, **changes): # We're going to mutate 'changes', but that's okay because it's a - # new dict, even if called with 'replace(obj, **my_changes)'. + # new dict, even if called with 'replace(self, **my_changes)'. # It's an error to have init=False fields in 'changes'. - # If a field is not in 'changes', read its value from the provided obj. + # If a field is not in 'changes', read its value from the provided 'self'. - for f in getattr(obj, _FIELDS).values(): + for f in getattr(self, _FIELDS).values(): # Only consider normal fields or InitVars. if f._field_type is _FIELD_CLASSVAR: continue @@ -1582,11 +1582,11 @@ def _replace(obj, /, **changes): if f._field_type is _FIELD_INITVAR and f.default is MISSING: raise TypeError(f"InitVar {f.name!r} " f'must be specified with replace()') - changes[f.name] = getattr(obj, f.name) + changes[f.name] = getattr(self, f.name) # Create the new object, which calls __init__() and # __post_init__() (if defined), using all of the init fields we've # added and/or left in 'changes'. If there are values supplied in # changes that aren't fields, this will correctly raise a # TypeError. - return obj.__class__(**changes) + return self.__class__(**changes) diff --git a/Misc/NEWS.d/next/Library/2024-01-18-10-07-52.gh-issue-114198.lK4Iif.rst b/Misc/NEWS.d/next/Library/2024-01-18-10-07-52.gh-issue-114198.lK4Iif.rst new file mode 100644 index 000000000000..fa047e288f80 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-01-18-10-07-52.gh-issue-114198.lK4Iif.rst @@ -0,0 +1,2 @@ +The signature for the ``__replace__`` method on :mod:`dataclasses` now has +the first argument named ``self``, rather than ``obj``.