Oh, man, super well-caught! You're right, committing to invariance by default does put us in a tricky situation.
But then - trying this with a regular `TypeVar`, mypy seems to be happy with the following:
from typing import Generic, TypeVar
T = TypeVar('T')
def expects_arbitrary_tensor(x: Tensor):
def expects_concrete_tensor(x: Tensor[int]):
x: Tensor = Tensor()
y: Tensor[int] = Tensor()
Any idea why that works?