[issue38293] Deepcopying property objects results in unexpected TypeError
New submission from Guðni Nathan : Currently, attempting to deepcopy a property object will result in an unexpected TypeError: >>> import copy >>> obj = property() >>> new_obj = copy.deepcopy(obj) Traceback (most recent call last): File "", line 1, in File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1264.0_x64__qbz5n2kfra8p0\lib\copy.py", line 169, in deepcopy rv = reductor(4) TypeError: can't pickle property objects What I believe is happening here is that since property objects are not treated by the copy module as atomic, they are passed off to be pickled and so our error is raised. This can be fixed in a similar manner to how it works for type objects, function objects and more. Adding a single line of code to Lib/copy.py after line 208: d[property] = _deepcopy_atomic Means that property objects will be treated as atomic, and therefore returned as-is. -- components: Library (Lib) messages: 353375 nosy: Guðni Nathan priority: normal severity: normal status: open title: Deepcopying property objects results in unexpected TypeError type: behavior versions: Python 3.7 ___ Python tracker <https://bugs.python.org/issue38293> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue38293] Deepcopying property objects results in unexpected TypeError
Guðni Nathan added the comment: A small change: The fix should go to Lib/copy.py:198, not line 208. -- ___ Python tracker <https://bugs.python.org/issue38293> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue38293] Deepcopying property objects results in unexpected TypeError
Guðni Nathan added the comment: Function objects are considered "atomic" here and I believe you can also write to their __doc__ (among other attributes). -- ___ Python tracker <https://bugs.python.org/issue38293> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue38293] Deepcopying property objects results in unexpected TypeError
Guðni Nathan added the comment: This bug appears to also affect shallow copies and can be reproduced with the following code: >>> import copy >>> obj = property() >>> copy.copy(obj) Traceback (most recent call last): File "", line 1, in File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1264.0_x64__qbz5n2kfra8p0\lib\copy.py", line 96, in copy rv = reductor(4) TypeError: can't pickle property objects -- ___ Python tracker <https://bugs.python.org/issue38293> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue38293] Deepcopying property objects results in unexpected TypeError
Change by Guðni Nathan : -- keywords: +patch pull_requests: +16016 stage: -> patch review pull_request: https://github.com/python/cpython/pull/16438 ___ Python tracker <https://bugs.python.org/issue38293> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com