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
typecheck failure with parameterized iterator #11375
fromtypingimport*importasyncioT=TypeVar('T')
classFoo(Generic[T]):
def__iter__(self) ->Iterator[Awaitable[T]]:
returniter([])
asyncdefbar(foo:Foo[T]):
# No errorawaitasyncio.gather(*iter(foo))
# mypy says:# No overload variant of "gather" matches argument type "Foo[T]"awaitasyncio.gather(*foo)
asyncdefbaz(foo:Foo):
# also no errorawaitasyncio.gather(*foo)
To Reproduce
➜ mypy mypy-bug.py
mypy-bug.py:17: error: No overload variant of "gather" matches argument type "Foo[T]"
mypy-bug.py:17: note: Possible overload variants:
mypy-bug.py:17: note: def gather(coro_or_future1: Union[Future[Any], Generator[Any, None, Any], Awaitable[Any]], coro_or_future2: Union[Future[Any], Generator[Any, None, Any], Awaitable[Any]], coro_or_future3: Union[Future[Any], Generator[Any, None, Any], Awaitable[Any]], coro_or_future4: Union[Future[Any], Generator[Any, None, Any], Awaitable[Any]], coro_or_future5: Union[Future[Any], Generator[Any, None, Any], Awaitable[Any]], coro_or_future6: Union[Future[Any], Generator[Any, None, Any], Awaitable[Any]], *coros_or_futures: Union[Future[Any], Generator[Any, None, Any], Awaitable[Any]], loop: Optional[AbstractEventLoop] = ..., return_exceptions: bool = ...) -> Future[List[Any]]
mypy-bug.py:17: note: def [_T1] gather(coro_or_future1: Union[Future[_T1], Generator[Any, None, _T1], Awaitable[_T1]], *, loop: Optional[AbstractEventLoop] = ..., return_exceptions: Literal[False] = ...) -> Future[Tuple[_T1]]
mypy-bug.py:17: note: <9 more similar overloads not shown, out of 11 total overloads>
Found 1 error in 1 file (checked 1 source file)
Expected Behavior
The second gather call should typecheck just like the first one, as using *foo is essentially the same as *iter(foo).
Note also that the type variable is required to reproduce the bug.
Actual Behavior
Mypy prints an error
Your Environment
Mypy version used: mypy 0.812, also reproduces with mypy-0.910
Mypy command-line flags: none
Mypy configuration options from mypy.ini (and other config files): none
Activity
sobolevn commentedon Oct 22, 2021
It can probably be fixed by #11151