diff options
Diffstat (limited to 'src/python/grpcio')
-rw-r--r-- | src/python/grpcio/grpc/_grpcio_metadata.py | 2 | ||||
-rw-r--r-- | src/python/grpcio/grpc/_interceptor.py | 91 | ||||
-rw-r--r-- | src/python/grpcio/grpc_version.py | 2 |
3 files changed, 63 insertions, 32 deletions
diff --git a/src/python/grpcio/grpc/_grpcio_metadata.py b/src/python/grpcio/grpc/_grpcio_metadata.py index 993c49d4af..6032828c77 100644 --- a/src/python/grpcio/grpc/_grpcio_metadata.py +++ b/src/python/grpcio/grpc/_grpcio_metadata.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!! -__version__ = """1.9.0.dev0""" +__version__ = """1.10.0.dev0""" diff --git a/src/python/grpcio/grpc/_interceptor.py b/src/python/grpcio/grpc/_interceptor.py index 56a280624f..d029472c68 100644 --- a/src/python/grpcio/grpc/_interceptor.py +++ b/src/python/grpcio/grpc/_interceptor.py @@ -51,6 +51,30 @@ class _ClientCallDetails( pass +def _unwrap_client_call_details(call_details, default_details): + try: + method = call_details.method + except AttributeError: + method = default_details.method + + try: + timeout = call_details.timeout + except AttributeError: + timeout = default_details.timeout + + try: + metadata = call_details.metadata + except AttributeError: + metadata = default_details.metadata + + try: + credentials = call_details.credentials + except AttributeError: + credentials = default_details.credentials + + return method, timeout, metadata, credentials + + class _LocalFailure(grpc.RpcError, grpc.Future, grpc.Call): def __init__(self, exception, traceback): @@ -126,15 +150,18 @@ class _UnaryUnaryMultiCallable(grpc.UnaryUnaryMultiCallable): def future(self, request, timeout=None, metadata=None, credentials=None): - def continuation(client_call_details, request): - return self._thunk(client_call_details.method).future( - request, - timeout=client_call_details.timeout, - metadata=client_call_details.metadata, - credentials=client_call_details.credentials) - client_call_details = _ClientCallDetails(self._method, timeout, metadata, credentials) + + def continuation(new_details, request): + new_method, new_timeout, new_metadata, new_credentials = ( + _unwrap_client_call_details(new_details, client_call_details)) + return self._thunk(new_method).future( + request, + timeout=new_timeout, + metadata=new_metadata, + credentials=new_credentials) + try: return self._interceptor.intercept_unary_unary( continuation, client_call_details, request) @@ -150,16 +177,18 @@ class _UnaryStreamMultiCallable(grpc.UnaryStreamMultiCallable): self._interceptor = interceptor def __call__(self, request, timeout=None, metadata=None, credentials=None): + client_call_details = _ClientCallDetails(self._method, timeout, + metadata, credentials) - def continuation(client_call_details, request): - return self._thunk(client_call_details.method)( + def continuation(new_details, request): + new_method, new_timeout, new_metadata, new_credentials = ( + _unwrap_client_call_details(new_details, client_call_details)) + return self._thunk(new_method)( request, - timeout=client_call_details.timeout, - metadata=client_call_details.metadata, - credentials=client_call_details.credentials) + timeout=new_timeout, + metadata=new_metadata, + credentials=new_credentials) - client_call_details = _ClientCallDetails(self._method, timeout, - metadata, credentials) try: return self._interceptor.intercept_unary_stream( continuation, client_call_details, request) @@ -203,17 +232,18 @@ class _StreamUnaryMultiCallable(grpc.StreamUnaryMultiCallable): timeout=None, metadata=None, credentials=None): - - def continuation(client_call_details, request_iterator): - return self._thunk(client_call_details.method).future( - request_iterator, - timeout=client_call_details.timeout, - metadata=client_call_details.metadata, - credentials=client_call_details.credentials) - client_call_details = _ClientCallDetails(self._method, timeout, metadata, credentials) + def continuation(new_details, request_iterator): + new_method, new_timeout, new_metadata, new_credentials = ( + _unwrap_client_call_details(new_details, client_call_details)) + return self._thunk(new_method).future( + request_iterator, + timeout=new_timeout, + metadata=new_metadata, + credentials=new_credentials) + try: return self._interceptor.intercept_stream_unary( continuation, client_call_details, request_iterator) @@ -233,17 +263,18 @@ class _StreamStreamMultiCallable(grpc.StreamStreamMultiCallable): timeout=None, metadata=None, credentials=None): - - def continuation(client_call_details, request_iterator): - return self._thunk(client_call_details.method)( - request_iterator, - timeout=client_call_details.timeout, - metadata=client_call_details.metadata, - credentials=client_call_details.credentials) - client_call_details = _ClientCallDetails(self._method, timeout, metadata, credentials) + def continuation(new_details, request_iterator): + new_method, new_timeout, new_metadata, new_credentials = ( + _unwrap_client_call_details(new_details, client_call_details)) + return self._thunk(new_method)( + request_iterator, + timeout=new_timeout, + metadata=new_metadata, + credentials=new_credentials) + try: return self._interceptor.intercept_stream_stream( continuation, client_call_details, request_iterator) diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py index 1fac57b03a..a654eb026a 100644 --- a/src/python/grpcio/grpc_version.py +++ b/src/python/grpcio/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!! -VERSION = '1.9.0.dev0' +VERSION = '1.10.0.dev0' |