14 """Implementation of gRPC Python interceptors."""
28 return lambda context: self.
_intercept_at(thunk, index, context)
34 return interceptor.intercept_service(thunk, context)
47 collections.namedtuple(
'_ClientCallDetails',
48 (
'method',
'timeout',
'metadata',
'credentials',
49 'wait_for_ready',
'compression')),
56 method = call_details.method
57 except AttributeError:
58 method = default_details.method
61 timeout = call_details.timeout
62 except AttributeError:
63 timeout = default_details.timeout
66 metadata = call_details.metadata
67 except AttributeError:
68 metadata = default_details.metadata
71 credentials = call_details.credentials
72 except AttributeError:
73 credentials = default_details.credentials
76 wait_for_ready = call_details.wait_for_ready
77 except AttributeError:
78 wait_for_ready = default_details.wait_for_ready
81 compression = call_details.compression
82 except AttributeError:
83 compression = default_details.compression
85 return method, timeout, metadata, credentials, wait_for_ready, compression
91 super(_FailureOutcome, self).
__init__()
102 return grpc.StatusCode.INTERNAL
105 return 'Exception raised while intercepting the RPC'
216 response, ignored_call = self.
_with_call(request,
219 credentials=credentials,
220 wait_for_ready=wait_for_ready,
221 compression=compression)
232 metadata, credentials,
233 wait_for_ready, compression)
235 def continuation(new_details, request):
236 (new_method, new_timeout, new_metadata, new_credentials,
239 new_details, client_call_details))
244 metadata=new_metadata,
245 credentials=new_credentials,
246 wait_for_ready=new_wait_for_ready,
247 compression=new_compression)
251 except Exception
as exception:
254 call = self.
_interceptor.intercept_unary_unary(continuation,
257 return call.result(), call
269 credentials=credentials,
270 wait_for_ready=wait_for_ready,
271 compression=compression)
281 metadata, credentials,
282 wait_for_ready, compression)
284 def continuation(new_details, request):
285 (new_method, new_timeout, new_metadata, new_credentials,
288 new_details, client_call_details))
292 metadata=new_metadata,
293 credentials=new_credentials,
294 wait_for_ready=new_wait_for_ready,
295 compression=new_compression)
299 continuation, client_call_details, request)
300 except Exception
as exception:
319 metadata, credentials,
320 wait_for_ready, compression)
322 def continuation(new_details, request):
323 (new_method, new_timeout, new_metadata, new_credentials,
326 new_details, client_call_details))
327 return self.
_thunk(new_method)(request,
329 metadata=new_metadata,
330 credentials=new_credentials,
331 wait_for_ready=new_wait_for_ready,
332 compression=new_compression)
336 continuation, client_call_details, request)
337 except Exception
as exception:
355 response, ignored_call = self.
_with_call(request_iterator,
358 credentials=credentials,
359 wait_for_ready=wait_for_ready,
360 compression=compression)
371 metadata, credentials,
372 wait_for_ready, compression)
374 def continuation(new_details, request_iterator):
375 (new_method, new_timeout, new_metadata, new_credentials,
378 new_details, client_call_details))
383 metadata=new_metadata,
384 credentials=new_credentials,
385 wait_for_ready=new_wait_for_ready,
386 compression=new_compression)
390 except Exception
as exception:
393 call = self.
_interceptor.intercept_stream_unary(continuation,
396 return call.result(), call
408 credentials=credentials,
409 wait_for_ready=wait_for_ready,
410 compression=compression)
420 metadata, credentials,
421 wait_for_ready, compression)
423 def continuation(new_details, request_iterator):
424 (new_method, new_timeout, new_metadata, new_credentials,
427 new_details, client_call_details))
431 metadata=new_metadata,
432 credentials=new_credentials,
433 wait_for_ready=new_wait_for_ready,
434 compression=new_compression)
438 continuation, client_call_details, request_iterator)
439 except Exception
as exception:
458 metadata, credentials,
459 wait_for_ready, compression)
461 def continuation(new_details, request_iterator):
462 (new_method, new_timeout, new_metadata, new_credentials,
465 new_details, client_call_details))
466 return self.
_thunk(new_method)(request_iterator,
468 metadata=new_metadata,
469 credentials=new_credentials,
470 wait_for_ready=new_wait_for_ready,
471 compression=new_compression)
475 continuation, client_call_details, request_iterator)
476 except Exception
as exception:
494 request_serializer=None,
495 response_deserializer=None):
497 response_deserializer)
505 request_serializer=None,
506 response_deserializer=None):
508 response_deserializer)
516 request_serializer=None,
517 response_deserializer=None):
519 response_deserializer)
527 request_serializer=None,
528 response_deserializer=None):
530 response_deserializer)
551 for interceptor
in reversed(list(interceptors)):
556 raise TypeError(
'interceptor must be '
557 'grpc.UnaryUnaryClientInterceptor or '
558 'grpc.UnaryStreamClientInterceptor or '
559 'grpc.StreamUnaryClientInterceptor or '
560 'grpc.StreamStreamClientInterceptor or ')
561 channel =
_Channel(channel, interceptor)