I have following code: ```python #! /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.
Activity
JelleZijlstra commentedon Oct 29, 2018
I doubt this can be fixed in typeshed ("Decorated property not supported" is a mypy limitation). You'll have to go to mypy.