blob: 4d8844d254d168dcf444f8e460c044254c4f4857 [file] [log] [blame] [edit]
-- Test cases for the default plugin
--
-- Note that we have additional test cases in pythoneval.test (that use real typeshed stubs).
[case testContextManagerWithGenericFunction]
from contextlib import contextmanager
from typing import TypeVar, Iterator
T = TypeVar('T')
@contextmanager
def yield_id(item: T) -> Iterator[T]:
yield item
reveal_type(yield_id) # N: Revealed type is "def [T] (item: T`-1) -> contextlib.GeneratorContextManager[T`-1]"
with yield_id(1) as x:
reveal_type(x) # N: Revealed type is "builtins.int"
f = yield_id
def g(x, y): pass
f = g # E: Incompatible types in assignment (expression has type "Callable[[Any, Any], Any]", variable has type "Callable[[T], GeneratorContextManager[T]]")
[typing fixtures/typing-medium.pyi]
[builtins fixtures/tuple.pyi]
[case testAsyncContextManagerWithGenericFunction]
# flags: --python-version 3.7
from contextlib import asynccontextmanager
from typing import TypeVar, AsyncGenerator
T = TypeVar('T')
@asynccontextmanager
async def yield_id(item: T) -> AsyncGenerator[T, None]:
yield item
reveal_type(yield_id) # N: Revealed type is "def [T] (item: T`-1) -> typing.AsyncContextManager[T`-1]"
async def f() -> None:
async with yield_id(1) as x:
reveal_type(x) # N: Revealed type is "builtins.int"
[typing fixtures/typing-async.pyi]
[builtins fixtures/tuple.pyi]
[case testContextManagerReturnsGenericFunction]
import contextlib
from typing import Callable
from typing import Generator
from typing import Iterable
from typing import TypeVar
TArg = TypeVar('TArg')
TRet = TypeVar('TRet')
@contextlib.contextmanager
def _thread_mapper(maxsize: int) -> Generator[
Callable[[Callable[[TArg], TRet], Iterable[TArg]], Iterable[TRet]],
None, None,
]:
# defined inline as there isn't a builtins.map fixture
def my_map(f: Callable[[TArg], TRet], it: Iterable[TArg]) -> Iterable[TRet]:
for x in it:
yield f(x)
yield my_map
def identity(x: int) -> int: return x
with _thread_mapper(1) as m:
lst = list(m(identity, [2, 3]))
reveal_type(lst) # N: Revealed type is "builtins.list[builtins.int]"
[typing fixtures/typing-medium.pyi]
[builtins fixtures/list.pyi]
[case testContextManagerWithUnspecifiedArguments]
from contextlib import contextmanager
from typing import Callable, Iterator
c: Callable[..., Iterator[int]]
reveal_type(c) # N: Revealed type is "def (*Any, **Any) -> typing.Iterator[builtins.int]"
reveal_type(contextmanager(c)) # N: Revealed type is "def (*Any, **Any) -> contextlib.GeneratorContextManager[builtins.int]"
[typing fixtures/typing-medium.pyi]
[builtins fixtures/tuple.pyi]