New submission from Федор Лянгузов:
Greetings,
I've encountered strange behavior when using functools.lru_cache as a function
(not as a decorator): it is at least miscounting misses, but probably not work
at all, when the result of functools.lru_cache()(func) is saved in variable
other than 'func'. Consider this snippet:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
f = functools.lru_cache()(factorial)
f(20)
print(f.cache_info())
Output should be: CacheInfo(hits=0, misses=21, maxsize=128, currsize=21)
Instead it is: CacheInfo(hits=0, misses=1, maxsize=128, currsize=1)
I'm using Python 3.5.2 64bit on Windows 7 Professional 64bit.
I've written 3 unittests (using built-in module), which are attached as a file.
I don't know how to comment them (conceptually, not syntactically), sorry.
Fedor
----------
components: Library (Lib)
files: lru_cache_test.py
messages: 274149
nosy: Федор Лянгузов
priority: normal
severity: normal
status: open
title: functools.lru_cache seems to not work when renaming decorated functions
type: behavior
versions: Python 3.5
Added file: http://bugs.python.org/file44325/lru_cache_test.py
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue27933>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com