Oct-18-2023, 07:34 AM
I'm not sure, whether it's a good place to ask such question. If it's not, please tell me, where it suits better.
I use Python 3.11/3.12, and mypy 1.6.0.
Here's the code:
):
Am I missing something, or mypy has some problems with type parameters in type aliases?
I use Python 3.11/3.12, and mypy 1.6.0.
Here's the code:
from typing import TypeVar, Callable
T = TypeVar('T')
# type alias, for Python 3.11
IntToSomething = Callable[ [int], T ]
def callPlusOne(f : IntToSomething, val : int) -> T:
return f(val+1)
def prettyInt(val : int) -> str:
return f'Your pretty number is {val}'
print( callPlusOne(prettyInt, 10) )It's perfectly fine, and can be run without any problems. mypy finds it incorrect, though (it's about the callPlusOne function):Output:error: A function returning TypeVar should receive at least one argument containing the same TypeVar [type-var]The solution (?) is to get rid of type alias (who needs them, anyway?
):from typing import TypeVar, Callable
T = TypeVar('T')
def callPlusOne(f : Callable[ [int], T ], val : int) -> T:
return f(val+1)
def prettyInt(val : int) -> str:
return f'Your pretty number is {val}'
print( callPlusOne(prettyInt, 10) )No type alias used, no problem for mypy. And anyone is happy. Well, anyone but me: I'd like to use type aliases, since they make my code more readable.Am I missing something, or mypy has some problems with type parameters in type aliases?
