diff options
author | Guido van Rossum <guido@python.org> | 2003-02-06 21:25:12 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2003-02-06 21:25:12 (GMT) |
commit | 85233bf74679a5dae4365507526789883a3c1158 (patch) | |
tree | bf180d690fe03682e3c09b1132d4a3dca54ce874 | |
parent | 694d9b354195ac3bf361b33601ed77e5b02e4fa7 (diff) | |
download | cpython-85233bf74679a5dae4365507526789883a3c1158.zip cpython-85233bf74679a5dae4365507526789883a3c1158.tar.gz cpython-85233bf74679a5dae4365507526789883a3c1158.tar.bz2 |
Fix a bug in the way __getnewargs__ was handled.
-rw-r--r-- | Lib/copy.py | 2 | ||||
-rw-r--r-- | Lib/test/test_copy.py | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/Lib/copy.py b/Lib/copy.py index 9f8386e..739cf2d 100644 --- a/Lib/copy.py +++ b/Lib/copy.py @@ -128,7 +128,7 @@ def _better_reduce(obj): listitems = iter(obj) elif isinstance(obj, dict): dictitems = obj.iteritems() - return __newobj__, (cls, args), state, listitems, dictitems + return __newobj__, (cls,) + args, state, listitems, dictitems _copy_dispatch = d = {} diff --git a/Lib/test/test_copy.py b/Lib/test/test_copy.py index 846e675..c97d54d 100644 --- a/Lib/test/test_copy.py +++ b/Lib/test/test_copy.py @@ -454,6 +454,24 @@ class TestCopy(unittest.TestCase): self.assert_(x[0] is not y[0]) self.assert_(x.foo is not y.foo) + def test_copy_tuple_subclass(self): + class C(tuple): + pass + x = C([1, 2, 3]) + self.assertEqual(tuple(x), (1, 2, 3)) + y = copy.copy(x) + self.assertEqual(tuple(y), (1, 2, 3)) + + def test_deepcopy_tuple_subclass(self): + class C(tuple): + pass + x = C([[1, 2], 3]) + self.assertEqual(tuple(x), ([1, 2], 3)) + y = copy.deepcopy(x) + self.assertEqual(tuple(y), ([1, 2], 3)) + self.assert_(x is not y) + self.assert_(x[0] is not y[0]) + def test_main(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(TestCopy)) |