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
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
The text was updated successfully, but these errors were encountered:
Hi,
I think there is a problem when using
functools.lru_cache
(andfunctools.cache
). When the decorated function uses aTypeVar
for typing arguments and return type, the wrapped function returend byfunctools.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.Running:
Python 3.10.1
mypy 0.931
Linux 5.16.0-arch1-1
The text was updated successfully, but these errors were encountered: