Closed
Description
So I originally reported it in typeshed/#2659 but was told this can't be fixed there and it is mypy limitation so repporting it here.
I have following code:
#! /usr/bin/env python
import time
from functools import lru_cache
class MyClass:
@property
@lru_cache(1)
def expensive_operation(self) -> int:
time.sleep(2)
return 42
def another_operation(self) -> int:
return self.expensive_operation + 1
if __name__ == '__main__':
o = MyClass()
print(o.expensive_operation)
print(o.expensive_operation)
print(o.another_operation())
It works as expected:
$ ./test.py
42
42
43
Yet, mypy is showing errors:
$ mypy test.py
test.py:7: error: Decorated property not supported
test.py:14: error: Unsupported operand types for + ("_lru_cache_wrapper[int]" and "int")
The lru_cache
works just fine when decorated as property, and the returned type should be int
and not _lru_cache_wrapper[int]
.
This is on python 3.7.0 and mypy 0.641.