New submission from Gregory P. Smith <g...@krypto.org>:
When the C implementation of functools.lru_cache was added in bpo/issue14373, it appears to have omitted setting `.__defaults__` on its wrapped function. ``` Python 3.10.0a7+ (heads/master-dirty:823fbf4e0e, May 1 2021, 11:10:30) [Clang 12.0.0 (clang-1200.0.32.29)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import functools >>> def func(b=5): pass ... >>> @functools.lru_cache ... def cached_func(b=5): pass ... >>> func.__defaults__ (5,) >>> cached_func.__defaults__ Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'functools._lru_cache_wrapper' object has no attribute '__defaults__' ``` functools.update_wrapper() does set __defaults__ so this appears to just be an oversight in Modules/_functoolsmodule.c. ---------- components: Library (Lib) keywords: 3.5regression messages: 392623 nosy: gregory.p.smith, serhiy.storchaka priority: normal severity: normal stage: needs patch status: open title: functools.lru_cache omits __defaults__ attribute from wrapped function type: behavior versions: Python 3.10, Python 3.9 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue44003> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com