New submission from Tom Hale <t...@hale.ee>:

This comes from a question I raised on StackOverflow:
https://stackoverflow.com/q/47218313/5353461

I've copied the text below

=====================================================================
=====================================================================


The [documentation for 
`lru_cache`](https://docs.python.org/3/library/functools.html#functools.lru_cache)
 gives the function definition:

>     @functools.lru_cache(maxsize=128, typed=False)

This says to me that `maxsize` is optional.

However, it doesn't like being called without an argument:

    Python 3.6.3 (default, Oct 24 2017, 14:48:20) 
    [GCC 7.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import functools
    >>> @functools.lru_cache
    ... def f(): ...
    ... 
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python3.6/functools.py", line 477, in lru_cache
        raise TypeError('Expected maxsize to be an integer or None')
    TypeError: Expected maxsize to be an integer or None
     >>> 

Calling with an argument is fine:

    >>> @functools.lru_cache(8)
    ... def f(): ...
    ... 
    >>> 

Am I misreading the documentation?

=====================================================================
=====================================================================

The answer presented this solution:

    if callable(maxsize):
        def decorating_function(user_function):
            wrapper = _lru_cache_wrapper(user_function, maxsize, typed, 
_CacheInfo)
            return update_wrapper(wrapper, user_function)
        return decorating_function(max_size) # yes, max_size is the function in 
this case O:)


=====================================================================
=====================================================================

Would you accept a PR based on this solution?

----------
messages: 306016
nosy: ataraxy
priority: normal
severity: normal
status: open
title: @lru_cache needs to be called with ()

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32001>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to