1111
1212import grpc
1313
14-
1514if TYPE_CHECKING :
1615 from .._types import (
1716 T ,
1817 IProtoMessage ,
1918 )
2019
21-
2220Value = Union [str , bytes ]
2321MetadataLike = Union [Mapping [str , Value ], Iterable [tuple [str , Value ]]]
2422MessageSource = Union [Iterable ["IProtoMessage" ], AsyncIterable ["IProtoMessage" ]]
2725class ServiceStub (ABC ):
2826
2927 def __init__ (
30- self ,
31- channel : grpc .aio .Channel ,
32- * ,
33- timeout : Optional [float ] = None ,
34- metadata : Optional [MetadataLike ] = None ,
28+ self ,
29+ channel : grpc .aio .Channel ,
30+ * ,
31+ timeout : Optional [float ] = None ,
32+ metadata : Optional [MetadataLike ] = None ,
3533 ) -> None :
3634 self .channel = channel
3735 self .timeout = timeout
3836 self .metadata = metadata
3937
4038 def _resolve_request_kwargs (
41- self ,
42- timeout : Optional [float ],
43- metadata : Optional [MetadataLike ],
39+ self ,
40+ timeout : Optional [float ],
41+ metadata : Optional [MetadataLike ],
4442 ):
45- # Avoid creating dict if no overrides needed
46- if timeout is None and metadata is None :
47- # Return cached default kwargs if both timeout and metadata are None
48- if not hasattr (self , '_default_kwargs' ):
49- self ._default_kwargs = {
50- "timeout" : self .timeout ,
51- "metadata" : self .metadata ,
52- }
53- return self ._default_kwargs
54-
5543 return {
5644 "timeout" : self .timeout if timeout is None else timeout ,
5745 "metadata" : self .metadata if metadata is None else metadata ,
5846 }
5947
6048 async def _unary_unary (
61- self ,
62- stub_method : grpc .aio .UnaryUnaryMultiCallable ,
63- request : "IProtoMessage" ,
64- * ,
65- timeout : Optional [float ] = None ,
66- metadata : Optional [MetadataLike ] = None ,
49+ self ,
50+ stub_method : grpc .aio .UnaryUnaryMultiCallable ,
51+ request : "IProtoMessage" ,
52+ * ,
53+ timeout : Optional [float ] = None ,
54+ metadata : Optional [MetadataLike ] = None ,
6755 ) -> "T" :
6856 return await stub_method (
6957 request ,
7058 ** self ._resolve_request_kwargs (timeout , metadata ),
7159 )
7260
7361 async def _unary_stream (
74- self ,
75- stub_method : grpc .aio .UnaryStreamMultiCallable ,
76- request : "IProtoMessage" ,
77- * ,
78- timeout : Optional [float ] = None ,
79- metadata : Optional [MetadataLike ] = None ,
62+ self ,
63+ stub_method : grpc .aio .UnaryStreamMultiCallable ,
64+ request : "IProtoMessage" ,
65+ * ,
66+ timeout : Optional [float ] = None ,
67+ metadata : Optional [MetadataLike ] = None ,
8068 ) -> AsyncIterator ["T" ]:
8169 call = stub_method (
8270 request ,
@@ -86,12 +74,12 @@ async def _unary_stream(
8674 yield response
8775
8876 async def _stream_unary (
89- self ,
90- stub_method : grpc .aio .StreamUnaryMultiCallable ,
91- request_iterator : MessageSource ,
92- * ,
93- timeout : Optional [float ] = None ,
94- metadata : Optional [MetadataLike ] = None ,
77+ self ,
78+ stub_method : grpc .aio .StreamUnaryMultiCallable ,
79+ request_iterator : MessageSource ,
80+ * ,
81+ timeout : Optional [float ] = None ,
82+ metadata : Optional [MetadataLike ] = None ,
9583 ) -> "T" :
9684 call = stub_method (
9785 self ._wrap_message_iterator (request_iterator ),
@@ -100,12 +88,12 @@ async def _stream_unary(
10088 return await call
10189
10290 async def _stream_stream (
103- self ,
104- stub_method : grpc .aio .StreamStreamMultiCallable ,
105- request_iterator : MessageSource ,
106- * ,
107- timeout : Optional [float ] = None ,
108- metadata : Optional [MetadataLike ] = None ,
91+ self ,
92+ stub_method : grpc .aio .StreamStreamMultiCallable ,
93+ request_iterator : MessageSource ,
94+ * ,
95+ timeout : Optional [float ] = None ,
96+ metadata : Optional [MetadataLike ] = None ,
10997 ) -> AsyncIterator ["T" ]:
11098 call = stub_method (
11199 self ._wrap_message_iterator (request_iterator ),
@@ -116,15 +104,17 @@ async def _stream_stream(
116104
117105 @staticmethod
118106 def _wrap_message_iterator (
119- messages : MessageSource ,
107+ messages : MessageSource ,
120108 ) -> AsyncIterator ["IProtoMessage" ]:
121109 if hasattr (messages , '__aiter__' ):
122110 async def async_wrapper ():
123111 async for message in messages :
124112 yield message
113+
125114 return async_wrapper ()
126115 else :
127116 async def sync_wrapper ():
128117 for message in messages :
129118 yield message
119+
130120 return sync_wrapper ()
0 commit comments