|
|
|
@ -32,8 +32,8 @@ from ._interceptor import ( |
|
|
|
|
from ._typing import (ChannelArgumentType, DeserializingFunction, MetadataType, |
|
|
|
|
SerializingFunction, RequestIterableType) |
|
|
|
|
from ._utils import _timeout_to_deadline |
|
|
|
|
from ._metadata import Metadata |
|
|
|
|
|
|
|
|
|
_IMMUTABLE_EMPTY_TUPLE = tuple() |
|
|
|
|
_USER_AGENT = 'grpc-python-asyncio/{}'.format(_grpcio_metadata.__version__) |
|
|
|
|
|
|
|
|
|
if sys.version_info[1] < 7: |
|
|
|
@ -88,6 +88,19 @@ class _BaseMultiCallable: |
|
|
|
|
self._response_deserializer = response_deserializer |
|
|
|
|
self._interceptors = interceptors |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
def _init_metadata(metadata: Optional[Metadata] = None, |
|
|
|
|
compression: Optional[grpc.Compression] = None |
|
|
|
|
) -> Metadata: |
|
|
|
|
"""Based on the provided values for <metadata> or <compression> initialise the final |
|
|
|
|
metadata, as it should be used for the current call. |
|
|
|
|
""" |
|
|
|
|
metadata = metadata or Metadata() |
|
|
|
|
if compression: |
|
|
|
|
metadata = Metadata( |
|
|
|
|
*_compression.augment_metadata(metadata, compression)) |
|
|
|
|
return metadata |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UnaryUnaryMultiCallable(_BaseMultiCallable, |
|
|
|
|
_base_channel.UnaryUnaryMultiCallable): |
|
|
|
@ -96,14 +109,13 @@ class UnaryUnaryMultiCallable(_BaseMultiCallable, |
|
|
|
|
request: Any, |
|
|
|
|
*, |
|
|
|
|
timeout: Optional[float] = None, |
|
|
|
|
metadata: Optional[MetadataType] = _IMMUTABLE_EMPTY_TUPLE, |
|
|
|
|
metadata: Optional[MetadataType] = None, |
|
|
|
|
credentials: Optional[grpc.CallCredentials] = None, |
|
|
|
|
wait_for_ready: Optional[bool] = None, |
|
|
|
|
compression: Optional[grpc.Compression] = None |
|
|
|
|
) -> _base_call.UnaryUnaryCall: |
|
|
|
|
if compression: |
|
|
|
|
metadata = _compression.augment_metadata(metadata, compression) |
|
|
|
|
|
|
|
|
|
metadata = self._init_metadata(metadata, compression) |
|
|
|
|
if not self._interceptors: |
|
|
|
|
call = UnaryUnaryCall(request, _timeout_to_deadline(timeout), |
|
|
|
|
metadata, credentials, wait_for_ready, |
|
|
|
@ -127,14 +139,13 @@ class UnaryStreamMultiCallable(_BaseMultiCallable, |
|
|
|
|
request: Any, |
|
|
|
|
*, |
|
|
|
|
timeout: Optional[float] = None, |
|
|
|
|
metadata: Optional[MetadataType] = _IMMUTABLE_EMPTY_TUPLE, |
|
|
|
|
metadata: Optional[MetadataType] = None, |
|
|
|
|
credentials: Optional[grpc.CallCredentials] = None, |
|
|
|
|
wait_for_ready: Optional[bool] = None, |
|
|
|
|
compression: Optional[grpc.Compression] = None |
|
|
|
|
) -> _base_call.UnaryStreamCall: |
|
|
|
|
if compression: |
|
|
|
|
metadata = _compression.augment_metadata(metadata, compression) |
|
|
|
|
|
|
|
|
|
metadata = self._init_metadata(metadata, compression) |
|
|
|
|
deadline = _timeout_to_deadline(timeout) |
|
|
|
|
|
|
|
|
|
if not self._interceptors: |
|
|
|
@ -158,14 +169,13 @@ class StreamUnaryMultiCallable(_BaseMultiCallable, |
|
|
|
|
def __call__(self, |
|
|
|
|
request_iterator: Optional[RequestIterableType] = None, |
|
|
|
|
timeout: Optional[float] = None, |
|
|
|
|
metadata: Optional[MetadataType] = _IMMUTABLE_EMPTY_TUPLE, |
|
|
|
|
metadata: Optional[MetadataType] = None, |
|
|
|
|
credentials: Optional[grpc.CallCredentials] = None, |
|
|
|
|
wait_for_ready: Optional[bool] = None, |
|
|
|
|
compression: Optional[grpc.Compression] = None |
|
|
|
|
) -> _base_call.StreamUnaryCall: |
|
|
|
|
if compression: |
|
|
|
|
metadata = _compression.augment_metadata(metadata, compression) |
|
|
|
|
|
|
|
|
|
metadata = self._init_metadata(metadata, compression) |
|
|
|
|
deadline = _timeout_to_deadline(timeout) |
|
|
|
|
|
|
|
|
|
if not self._interceptors: |
|
|
|
@ -189,14 +199,13 @@ class StreamStreamMultiCallable(_BaseMultiCallable, |
|
|
|
|
def __call__(self, |
|
|
|
|
request_iterator: Optional[RequestIterableType] = None, |
|
|
|
|
timeout: Optional[float] = None, |
|
|
|
|
metadata: Optional[MetadataType] = _IMMUTABLE_EMPTY_TUPLE, |
|
|
|
|
metadata: Optional[MetadataType] = None, |
|
|
|
|
credentials: Optional[grpc.CallCredentials] = None, |
|
|
|
|
wait_for_ready: Optional[bool] = None, |
|
|
|
|
compression: Optional[grpc.Compression] = None |
|
|
|
|
) -> _base_call.StreamStreamCall: |
|
|
|
|
if compression: |
|
|
|
|
metadata = _compression.augment_metadata(metadata, compression) |
|
|
|
|
|
|
|
|
|
metadata = self._init_metadata(metadata, compression) |
|
|
|
|
deadline = _timeout_to_deadline(timeout) |
|
|
|
|
|
|
|
|
|
if not self._interceptors: |
|
|
|
|