]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-121300: Add `replace` to `copy.__all__` (#121302)
authorMax Muoto <maxmuoto@gmail.com>
Wed, 3 Jul 2024 15:03:56 +0000 (10:03 -0500)
committerGitHub <noreply@github.com>
Wed, 3 Jul 2024 15:03:56 +0000 (20:33 +0530)
Lib/copy.py
Lib/test/test_copy.py

index 7a1907d75494d715c76460401079517e704bfaa0..a79976d3a658f05efad54f1d3570113739063fc6 100644 (file)
@@ -4,8 +4,9 @@ Interface summary:
 
         import copy
 
-        x = copy.copy(y)        # make a shallow copy of y
-        x = copy.deepcopy(y)    # make a deep copy of y
+        x = copy.copy(y)                # make a shallow copy of y
+        x = copy.deepcopy(y)            # make a deep copy of y
+        x = copy.replace(y, a=1, b=2)   # new object with fields replaced, as defined by `__replace__`
 
 For module specific errors, copy.Error is raised.
 
@@ -56,7 +57,7 @@ class Error(Exception):
     pass
 error = Error   # backward compatibility
 
-__all__ = ["Error", "copy", "deepcopy"]
+__all__ = ["Error", "copy", "deepcopy", "replace"]
 
 def copy(x):
     """Shallow copy operation on arbitrary Python objects.
index 89102373759ca0ed97831d7e74bcc09c984a9747..3dec64cc9a24141d606fe9a0c0e1b9b7f63ed807 100644 (file)
@@ -972,6 +972,10 @@ class TestReplace(unittest.TestCase):
             copy.replace(c, x=1, error=2)
 
 
+class MiscTestCase(unittest.TestCase):
+    def test__all__(self):
+        support.check__all__(self, copy, not_exported={"dispatch_table", "error"})
+
 def global_foo(x, y): return x+y