@@ -11,18 +11,11 @@ from . import aio as aio
11
11
12
12
__version__ : str
13
13
14
- # This class encodes an uninhabited type, requiring use of explicit casts or ignores
15
- # in order to satisfy type checkers. This allows grpc-stubs to add proper stubs
16
- # later, allowing those overrides to be removed.
17
- # The alternative is Any, but a future replacement of Any with a proper type
18
- # would result in type errors where previously the type checker was happy, which
19
- # we want to avoid. Forcing the user to use overrides provides forwards-compatibility.
20
- @type_check_only
21
- class _PartialStubMustCastOrIgnore : ...
14
+ _T = TypeVar ("_T" )
22
15
23
16
# XXX: Early attempts to tame this used literals for all the keys (gRPC is
24
17
# a bit segfaulty and doesn't adequately validate the option keys), but that
25
- # didn't quite work out. Maybe it's something we can come back to?
18
+ # didn't quite work out. Maybe it's something we can come back to
26
19
_OptionKeyValue : TypeAlias = tuple [str , Any ]
27
20
_Options : TypeAlias = Sequence [_OptionKeyValue ]
28
21
@@ -45,24 +38,8 @@ _Metadata: TypeAlias = tuple[tuple[str, str | bytes], ...]
45
38
46
39
_TRequest = TypeVar ("_TRequest" )
47
40
_TResponse = TypeVar ("_TResponse" )
48
-
49
- # XXX: These are probably the SerializeToTring/FromString pb2 methods, but
50
- # this needs further investigation
51
- @type_check_only
52
- class _RequestSerializer (Protocol ):
53
- def __call__ (self , * args : Any , ** kwargs : Any ) -> Any : ...
54
-
55
- @type_check_only
56
- class _RequestDeserializer (Protocol ):
57
- def __call__ (self , * args : Any , ** kwargs : Any ) -> Any : ...
58
-
59
- @type_check_only
60
- class _ResponseSerializer (Protocol ):
61
- def __call__ (self , * args : Any , ** kwargs : Any ) -> Any : ...
62
-
63
- @type_check_only
64
- class _ResponseDeserializer (Protocol ):
65
- def __call__ (self , * args : Any , ** kwargs : Any ) -> Any : ...
41
+ _Serializer : TypeAlias = Callable [[_T ], bytes ]
42
+ _Deserializer : TypeAlias = Callable [[bytes ], _T ]
66
43
67
44
# Future Interfaces:
68
45
@@ -176,24 +153,24 @@ class _Behaviour(Protocol):
176
153
177
154
def unary_unary_rpc_method_handler (
178
155
behavior : _Behaviour ,
179
- request_deserializer : _RequestDeserializer | None = None ,
180
- response_serializer : _ResponseSerializer | None = None ,
181
- ) -> RpcMethodHandler [Any , Any ]: ...
156
+ request_deserializer : _Deserializer [ _TRequest ] | None = None ,
157
+ response_serializer : _Serializer [ _TResponse ] | None = None ,
158
+ ) -> RpcMethodHandler [_TRequest , _TResponse ]: ...
182
159
def unary_stream_rpc_method_handler (
183
160
behavior : _Behaviour ,
184
- request_deserializer : _RequestDeserializer | None = None ,
185
- response_serializer : _ResponseSerializer | None = None ,
186
- ) -> RpcMethodHandler [Any , Any ]: ...
161
+ request_deserializer : _Deserializer [ _TRequest ] | None = None ,
162
+ response_serializer : _Serializer [ _TResponse ] | None = None ,
163
+ ) -> RpcMethodHandler [_TRequest , _TResponse ]: ...
187
164
def stream_unary_rpc_method_handler (
188
165
behavior : _Behaviour ,
189
- request_deserializer : _RequestDeserializer | None = None ,
190
- response_serializer : _ResponseSerializer | None = None ,
191
- ) -> RpcMethodHandler [Any , Any ]: ...
166
+ request_deserializer : _Deserializer [ _TRequest ] | None = None ,
167
+ response_serializer : _Serializer [ _TResponse ] | None = None ,
168
+ ) -> RpcMethodHandler [_TRequest , _TResponse ]: ...
192
169
def stream_stream_rpc_method_handler (
193
170
behavior : _Behaviour ,
194
- request_deserializer : _RequestDeserializer | None = None ,
195
- response_serializer : _ResponseSerializer | None = None ,
196
- ) -> RpcMethodHandler [Any , Any ]: ...
171
+ request_deserializer : _Deserializer [ _TRequest ] | None = None ,
172
+ response_serializer : _Serializer [ _TResponse ] | None = None ,
173
+ ) -> RpcMethodHandler [_TRequest , _TResponse ]: ...
197
174
def method_handlers_generic_handler (
198
175
service : str , method_handlers : dict [str , RpcMethodHandler [Any , Any ]]
199
176
) -> GenericRpcHandler [Any , Any ]: ...
@@ -250,32 +227,32 @@ class Channel(abc.ABC):
250
227
def stream_stream (
251
228
self ,
252
229
method : str ,
253
- request_serializer : _RequestSerializer | None = None ,
254
- response_deserializer : _ResponseDeserializer | None = None ,
255
- ) -> StreamStreamMultiCallable [Any , Any ]: ...
230
+ request_serializer : _Serializer [ _TRequest ] | None = None ,
231
+ response_deserializer : _Deserializer [ _TResponse ] | None = None ,
232
+ ) -> StreamStreamMultiCallable [_TRequest , _TResponse ]: ...
256
233
@abc .abstractmethod
257
234
def stream_unary (
258
235
self ,
259
236
method : str ,
260
- request_serializer : _RequestSerializer | None = None ,
261
- response_deserializer : _ResponseDeserializer | None = None ,
262
- ) -> StreamUnaryMultiCallable [Any , Any ]: ...
237
+ request_serializer : _Serializer [ _TRequest ] | None = None ,
238
+ response_deserializer : _Deserializer [ _TResponse ] | None = None ,
239
+ ) -> StreamUnaryMultiCallable [_TRequest , _TResponse ]: ...
263
240
@abc .abstractmethod
264
241
def subscribe (self , callback : Callable [[ChannelConnectivity ], None ], try_to_connect : bool = False ) -> None : ...
265
242
@abc .abstractmethod
266
243
def unary_stream (
267
244
self ,
268
245
method : str ,
269
- request_serializer : _RequestSerializer | None = None ,
270
- response_deserializer : _ResponseDeserializer | None = None ,
271
- ) -> UnaryStreamMultiCallable [Any , Any ]: ...
246
+ request_serializer : _Serializer [ _TRequest ] | None = None ,
247
+ response_deserializer : _Deserializer [ _TResponse ] | None = None ,
248
+ ) -> UnaryStreamMultiCallable [_TRequest , _TResponse ]: ...
272
249
@abc .abstractmethod
273
250
def unary_unary (
274
251
self ,
275
252
method : str ,
276
- request_serializer : _RequestSerializer | None = None ,
277
- response_deserializer : _ResponseDeserializer | None = None ,
278
- ) -> UnaryUnaryMultiCallable [Any , Any ]: ...
253
+ request_serializer : _Serializer [ _TRequest ] | None = None ,
254
+ response_deserializer : _Deserializer [ _TResponse ] | None = None ,
255
+ ) -> UnaryUnaryMultiCallable [_TRequest , _TResponse ]: ...
279
256
@abc .abstractmethod
280
257
def unsubscribe (self , callback : Callable [[ChannelConnectivity ], None ]) -> None : ...
281
258
def __enter__ (self ) -> Self : ...
@@ -499,10 +476,10 @@ class RpcMethodHandler(abc.ABC, Generic[_TRequest, _TResponse]):
499
476
response_streaming : bool
500
477
501
478
# XXX: not clear from docs whether this is optional or not
502
- request_deserializer : _RequestDeserializer | None
479
+ request_deserializer : _Deserializer [ _TRequest ] | None
503
480
504
481
# XXX: not clear from docs whether this is optional or not
505
- response_serializer : _ResponseSerializer | None
482
+ response_serializer : _Serializer [ _TResponse ] | None
506
483
507
484
unary_unary : Callable [[_TRequest , ServicerContext ], _TResponse ] | None
508
485
0 commit comments