diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2020-01-12 18:04:18 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-12 18:04:18 (GMT) |
commit | 3043ec7d6aed402218404c25179e734166c7fbe0 (patch) | |
tree | f396f7a4bc422974fb225b355178457c39b37a18 /Lib/test | |
parent | eb9ba2f66df2195a9c6295e73ab3d545a1445f05 (diff) | |
download | cpython-3043ec7d6aed402218404c25179e734166c7fbe0.zip cpython-3043ec7d6aed402218404c25179e734166c7fbe0.tar.gz cpython-3043ec7d6aed402218404c25179e734166c7fbe0.tar.bz2 |
bpo-38293: Allow shallow and deep copying of property objects (GH-16438)
Copying property objects results in a TypeError. Steps to reproduce:
```
>>> import copy
>>> obj = property()
>>> copy.copy(obj)
````
This affects both shallow and deep copying.
My idea for a fix is to add property objects to the list of "atomic" objects in the copy module.
These already include types like functions and type objects.
I also added property objects to the unit tests test_copy_atomic and test_deepcopy_atomic. This is my first PR, and it's highly likely I've made some mistake, so please be kind :)
https://bugs.python.org/issue38293
(cherry picked from commit 9f3fc6c5b4993f2b362263b494f84793a21aa073)
Co-authored-by: Guðni Natan Gunnarsson <1493259+GudniNatan@users.noreply.github.com>
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_copy.py | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Lib/test/test_copy.py b/Lib/test/test_copy.py index 45a6920..35f72fb 100644 --- a/Lib/test/test_copy.py +++ b/Lib/test/test_copy.py @@ -99,7 +99,7 @@ class TestCopy(unittest.TestCase): 42, 2**100, 3.14, True, False, 1j, "hello", "hello\u1234", f.__code__, b"world", bytes(range(256)), range(10), slice(1, 10, 2), - NewStyle, Classic, max, WithMetaclass] + NewStyle, Classic, max, WithMetaclass, property()] for x in tests: self.assertIs(copy.copy(x), x) @@ -357,7 +357,7 @@ class TestCopy(unittest.TestCase): pass tests = [None, 42, 2**100, 3.14, True, False, 1j, "hello", "hello\u1234", f.__code__, - NewStyle, Classic, max] + NewStyle, Classic, max, property()] for x in tests: self.assertIs(copy.deepcopy(x), x) |