11from __future__ import annotations
22
3- from collections .abc import Callable
3+ from collections .abc import AsyncIterator , Callable
44from concurrent .futures .thread import ThreadPoolExecutor
5- from typing import Awaitable , TypeVar
5+ from typing import Awaitable , TypeVar , cast
66
77import grpc
88import grpc .aio
@@ -26,10 +26,28 @@ def intercept_service(
2626class NoopAioInterceptor (grpc .aio .ServerInterceptor ):
2727 async def intercept_service (
2828 self ,
29- continuation : Callable [[grpc .HandlerCallDetails ], Awaitable [grpc .RpcMethodHandler [RequestT , ResponseT ]]],
29+ continuation : Callable [[grpc .HandlerCallDetails ], Awaitable [grpc .aio . RpcMethodHandler [RequestT , ResponseT ]]],
3030 handler_call_details : grpc .HandlerCallDetails ,
31- ) -> grpc .RpcMethodHandler [RequestT , ResponseT ]:
31+ ) -> grpc .aio . RpcMethodHandler [RequestT , ResponseT ]:
3232 return await continuation (handler_call_details )
3333
3434
3535grpc .aio .server (interceptors = [NoopAioInterceptor ()])
36+
37+ aio_handler = grpc .aio .RpcMethodHandler [RequestT , ResponseT ]()
38+ aio_handler .unary_unary = cast (
39+ Callable [[RequestT , grpc .aio .ServicerContext [RequestT , ResponseT ]], Awaitable [ResponseT ]],
40+ None ,
41+ )
42+ aio_handler .unary_stream = cast (
43+ Callable [[RequestT , grpc .aio .ServicerContext [RequestT , ResponseT ]], AsyncIterator [ResponseT ]],
44+ None ,
45+ )
46+ aio_handler .stream_unary = cast (
47+ Callable [[AsyncIterator [RequestT ], grpc .aio .ServicerContext [RequestT , ResponseT ]], Awaitable [ResponseT ]],
48+ None ,
49+ )
50+ aio_handler .stream_stream = cast (
51+ Callable [[AsyncIterator [RequestT ], grpc .aio .ServicerContext [RequestT , ResponseT ]], AsyncIterator [ResponseT ]],
52+ None ,
53+ )
0 commit comments