Reputation: 752
import glob
from typing import Callable, List
def fun1(b: str) -> List[str]:
return ["a", "b"] + [b]
def fun(a: str) -> Callable:
return fun1 if a == "hello" else glob.glob
Running mypy on this file gives:
error: Incompatible return value type (got "function", expected "Callable[..., Any]") [return-value]
but I thought a function was a Callable? This seems specific to glob.glob
since if I simply return fun1
then the error goes away.
EDIT:
Opened an issue on github.
Upvotes: 7
Views: 3441
Reputation: 1920
I think it is a mypy
limit with if else
ternary operator, this indeed seems to work:
import glob
from typing import Callable, List
def fun1(b: str) -> List[str]:
return ["a", "b"] + [b]
def fun(a: str) -> Callable:
if a == "hello":
return fun1
else:
return glob.glob
Upvotes: 2