Red Hat Bugzilla – Bug 1223037
Python raises exception on deepcopy of instance methods
Last modified: 2015-07-22 02:40:23 EDT
Description of problem: Python 2.6 raises an exception on deepcopy of instance methods. Version-Release number of selected component (if applicable): 2.6.6 How reproducible: Always, if non-builtin instance method is explicitly deep copied. Steps to Reproduce: 1. start python 2. type following at python prompt >>> import uuid >>> an_id = uuid.uuid1() >>> import copy >>> copy.deepcopy(an_id.get_bytes) 3. See TypeError: instancemethod expected... Actual results: TypeError raised Expected results: Deepcopy made. Additional info: The patch is located here: https://hg.python.org/cpython/rev/83c702c17e02/. It landed in Python 2.7 and has remained stable since.
Reproduced on python-2.6.6-52.el6: :: [ BEGIN ] :: Run reproducer :: actually running 'python test.py' Traceback (most recent call last): File "test.py", line 5, in <module> copy.deepcopy(an_id.get_bytes) File "/usr/lib64/python2.6/copy.py", line 189, in deepcopy y = _reconstruct(x, rv, 1, memo) File "/usr/lib64/python2.6/copy.py", line 323, in _reconstruct y = callable(*args) File "/usr/lib64/python2.6/copy_reg.py", line 93, in __newobj__ return cls.__new__(cls, *args) TypeError: instancemethod expected at least 2 arguments, got 0 :: [ FAIL ] :: Run reproducer (Expected 0, got 1) Verified on python-2.6.6-64.el6: :: [ BEGIN ] :: Run reproducer :: actually running 'python test.py' :: [ PASS ] :: Run reproducer (Expected 0, got 0)
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2015-1330.html