File tree Expand file tree Collapse file tree 8 files changed +182
-0
lines changed
Expand file tree Collapse file tree 8 files changed +182
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ TODO:
3+
4+ `gen` is a generator that yields a integer, and can accept a string sent to it.
5+ It does not return anything.
6+ """
7+
8+
9+ def gen ():
10+ """You don't need to implement it"""
11+ ...
12+
13+
14+ ## End of your code ##
15+ from typing import assert_type
16+
17+ generator = gen ()
18+ assert_type (next (generator ), int )
19+ generator .send ("sss" )
20+ generator .send (3 ) # expect-type-error
Original file line number Diff line number Diff line change 1+ """
2+ TODO:
3+
4+ `gen` is a generator that yields a integer, and can accept a string sent to it.
5+ It does not return anything.
6+ """
7+
8+ from collections .abc import Generator
9+
10+
11+ def gen () -> Generator [int , str , None ]:
12+ """You don't need to implement it"""
13+ ...
14+
15+
16+ ## End of your code ##
17+ from typing import assert_type
18+
19+ generator = gen ()
20+ assert_type (next (generator ), int )
21+ generator .send ("sss" )
22+ generator .send (3 ) # expect-type-error
Original file line number Diff line number Diff line change 1+ """
2+ TODO:
3+
4+ `make_object` takes a class returns an instance of it.
5+ """
6+
7+
8+ def make_object (cls ):
9+ return cls ()
10+
11+
12+ ## End of your code ##
13+ class MyClass :
14+ pass
15+
16+
17+ def f ():
18+ pass
19+
20+
21+ c = make_object (MyClass )
22+ c = make_object (int )
23+ c = make_object (f ) # expect-type-error
24+ c = make_object ("sss" ) # expect-type-error
25+ c = make_object (["sss" ]) # expect-type-error
Original file line number Diff line number Diff line change 1+ """
2+ TODO:
3+
4+ `make_object` takes a class returns an instance of it.
5+ """
6+
7+ from typing import Any
8+
9+
10+ def make_object (cls : type [Any ]):
11+ return cls ()
12+
13+
14+ ## End of your code ##
15+ class MyClass :
16+ pass
17+
18+
19+ def f ():
20+ pass
21+
22+
23+ c = make_object (MyClass )
24+ c = make_object (int )
25+ c = make_object (f ) # expect-type-error
26+ c = make_object ("sss" ) # expect-type-error
27+ c = make_object (["sss" ]) # expect-type-error
Original file line number Diff line number Diff line change 1+ """
2+ TODO:
3+
4+ `foo` takes keyword arguments of type integer or string.
5+ """
6+
7+
8+ def foo (** kwargs ):
9+ ...
10+
11+
12+ ## End of your code ##
13+ foo (a = 1 , b = "2" )
14+ foo (a = [1 ]) # expect-type-error
Original file line number Diff line number Diff line change 1+ """
2+ TODO:
3+
4+ `foo` takes keyword arguments of type integer or string.
5+ """
6+
7+
8+ def foo (** kwargs : int | str ):
9+ ...
10+
11+
12+ ## End of your code ##
13+ foo (a = 1 , b = "2" )
14+ foo (a = [1 ]) # expect-type-error
Original file line number Diff line number Diff line change 1+ """
2+ TODO:
3+
4+ `run_async` takes an awaitable integer.
5+ """
6+
7+
8+ def run_async ():
9+ ...
10+
11+
12+ ## End of your code ##
13+ from asyncio import Queue
14+
15+ queue : Queue [int ] = Queue ()
16+ queue2 : Queue [str ] = Queue ()
17+
18+
19+ async def async_function () -> int :
20+ return await queue .get ()
21+
22+
23+ async def async_function2 () -> str :
24+ return await queue2 .get ()
25+
26+
27+ run_async (async_function ())
28+ run_async (1 ) # expect-type-error
29+ run_async (async_function2 ()) # expect-type-error
Original file line number Diff line number Diff line change 1+ """
2+ TODO:
3+
4+ `run_async` takes an awaitable integer.
5+ """
6+
7+ from typing import Awaitable
8+
9+
10+ def run_async (func : Awaitable [int ]):
11+ ...
12+
13+
14+ ## End of your code ##
15+ from asyncio import Queue
16+
17+ queue : Queue [int ] = Queue ()
18+ queue2 : Queue [str ] = Queue ()
19+
20+
21+ async def async_function () -> int :
22+ return await queue .get ()
23+
24+
25+ async def async_function2 () -> str :
26+ return await queue2 .get ()
27+
28+
29+ run_async (async_function ())
30+ run_async (1 ) # expect-type-error
31+ run_async (async_function2 ()) # expect-type-error
You can’t perform that action at this time.
0 commit comments