New submission from Jason R. Coombs: Beginning with Python 3.5, an lru_cache no longer survives a deepcopy.
``` $ cat >> cache_copy.py import copy from functools import lru_cache foo = lru_cache()(lambda: None) copy.deepcopy(foo) $ python3.5 cache_copy.py Traceback (most recent call last): File "cache_copy.py", line 4, in <module> copy.deepcopy(foo) File "/usr/lib/python3.5/copy.py", line 182, in deepcopy y = _reconstruct(x, rv, 1, memo) File "/usr/lib/python3.5/copy.py", line 293, in _reconstruct y = callable(*args) File "/usr/lib/python3.5/copyreg.py", line 88, in __newobj__ return cls.__new__(cls, *args) TypeError: Required argument 'user_function' (pos 1) not found ``` I suspect this is due to the C implementation per issue14373. I realize one's first reaction might be "why are you deep copying a function," so here's the [downstream bug](https://bitbucket.org/jaraco/jaraco.functools/issues/1/method_cache-causes-typeerror-when) and [offended code](https://bitbucket.org/jaraco/jaraco.functools/src/68d1fda21af7e7b4c36577f953f382270bdc1e05/jaraco/functools.py?at=default&fileviewer=file-view-default#functools.py-72:138). That decorator is designed to wrap a method and to store the cache on the instance object, an object which is liable to be deep copied. As a result, production code using this technique is failing on Python 3.5. Although it was apparently an artifact of previous implementations that the cache happened to be deep-copyable, I hope this expectation can be restored with minimal fuss. ---------- assignee: rhettinger components: Library (Lib) keywords: 3.5regression messages: 253233 nosy: jason.coombs, rhettinger priority: high severity: normal status: open title: TypeError invoking deepcopy on lru_cache type: behavior versions: Python 3.5, Python 3.6 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue25447> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com