# Copyright 2022 gRPC authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Common types for gRPC Sync API""" from typing import (TYPE_CHECKING, Any, Callable, Iterable, Iterator, Optional, Sequence, Tuple, TypeVar, Union) from grpc._cython import cygrpc if TYPE_CHECKING: from grpc import ServicerContext from grpc._server import _RPCState RequestType = TypeVar('RequestType') ResponseType = TypeVar('ResponseType') SerializingFunction = Callable[[Any], bytes] DeserializingFunction = Callable[[bytes], Any] MetadataType = Sequence[Tuple[str, Union[str, bytes]]] ChannelArgumentType = Tuple[str, Any] DoneCallbackType = Callable[[Any], None] NullaryCallbackType = Callable[[], None] RequestIterableType = Iterable[Any] ResponseIterableType = Iterable[Any] UserTag = Callable[[cygrpc.BaseEvent], bool] IntegratedCallFactory = Callable[[ int, bytes, None, Optional[float], Optional[MetadataType], Optional[ cygrpc.CallCredentials], Sequence[Sequence[cygrpc. Operation]], UserTag, Any ], cygrpc.IntegratedCall] ServerTagCallbackType = Tuple[Optional['_RPCState'], Sequence[NullaryCallbackType]] ServerCallbackTag = Callable[[cygrpc.BaseEvent], ServerTagCallbackType] ArityAgnosticMethodHandler = Union[ Callable[[RequestType, 'ServicerContext', Callable[[ResponseType], None]], ResponseType], Callable[[RequestType, 'ServicerContext', Callable[[ResponseType], None]], Iterator[ResponseType]], Callable[[ Iterator[RequestType], 'ServicerContext', Callable[[ResponseType], None] ], ResponseType], Callable[[ Iterator[RequestType], 'ServicerContext', Callable[[ResponseType], None] ], Iterator[ResponseType]], Callable[[RequestType, 'ServicerContext'], ResponseType], Callable[[RequestType, 'ServicerContext'], Iterator[ResponseType]], Callable[[Iterator[RequestType], 'ServicerContext'], ResponseType], Callable[[Iterator[RequestType], 'ServicerContext'], Iterator[ResponseType]]]