You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
functools.lru_cache wrapped function with TypeVar has wrong return type. #6987
I think there is a problem when using functools.lru_cache (and functools.cache). When the decorated function uses a TypeVar for typing arguments and return type, the wrapped function returend by functools.lru_cache has wrong (or unresolved) types.
This is not the case when replacing the TypeVar with an explicit type. See the mwe below. Thx.
importfunctoolsfromtypingimportTypeVar_T=TypeVar("_T")
defmy_func(elem: _T) ->list[_T]:
return [elem]
my_func_cached=functools.lru_cache(my_func)
a=my_func("a")
reveal_type(a) # Revealed type is "builtins.list[builtins.str*]"a_c=my_func_cached("a")
# ERROR: this should be "builtins.list*[builtins.str]"reveal_type(a_c) # Revealed type is "builtins.list*[_T`-1]"# this worksdefmy_func_str(elem: str) ->list[str]:
return [elem]
my_func_str_cached=functools.lru_cache(my_func_str)
a_str=my_func_str("a")
reveal_type(a_str) # Revealed type is "builtins.list[builtins.str]"a_str_c=my_func_str_cached("a")
reveal_type(a_str_c) # Revealed type is "builtins.list*[builtins.str]"
Running:
Python 3.10.1
mypy 0.931
Linux 5.16.0-arch1-1
Activity