| 
					
				 | 
			
			
				@@ -0,0 +1,933 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Copyright 2015, Google Inc. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# All rights reserved. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Redistribution and use in source and binary forms, with or without 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# modification, are permitted provided that the following conditions are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# met: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#     * Redistributions of source code must retain the above copyright 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# notice, this list of conditions and the following disclaimer. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#     * Redistributions in binary form must reproduce the above 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# copyright notice, this list of conditions and the following disclaimer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# in the documentation and/or other materials provided with the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# distribution. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#     * Neither the name of Google Inc. nor the names of its 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# contributors may be used to endorse or promote products derived from 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# this software without specific prior written permission. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"""Interfaces defining the Face layer of RPC Framework.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import abc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import collections 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import enum 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# cardinality, style, abandonment, future, and stream are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# referenced from specification in this module. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from grpc.framework.common import cardinality  # pylint: disable=unused-import 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from grpc.framework.common import style  # pylint: disable=unused-import 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from grpc.framework.foundation import abandonment  # pylint: disable=unused-import 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from grpc.framework.foundation import future  # pylint: disable=unused-import 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from grpc.framework.foundation import stream  # pylint: disable=unused-import 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class NoSuchMethodError(Exception): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Raised by customer code to indicate an unrecognized method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Attributes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    group: The group of the unrecognized method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    name: The name of the unrecognized method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def __init__(self, group, method): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Constructor. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the unrecognized RPC name. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the unrecognized RPC name. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    super(NoSuchMethodError, self).__init__() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    self.group = group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    self.method = method 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def __repr__(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return 'face.NoSuchMethodError(%s, %s)' % (self.group, self.method,) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class Abortion( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    collections.namedtuple( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'Abortion', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ('kind', 'initial_metadata', 'terminal_metadata', 'code', 'details',))): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """A value describing RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Attributes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    kind: A Kind value identifying how the RPC failed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    initial_metadata: The initial metadata from the other side of the RPC or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      None if no initial metadata value was received. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    terminal_metadata: The terminal metadata from the other side of the RPC or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      None if no terminal metadata value was received. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    code: The code value from the other side of the RPC or None if no code value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      was received. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    details: The details value from the other side of the RPC or None if no 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      details value was received. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @enum.unique 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  class Kind(enum.Enum): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Types of RPC abortion.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    CANCELLED = 'cancelled' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    EXPIRED = 'expired' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    LOCAL_SHUTDOWN = 'local shutdown' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    REMOTE_SHUTDOWN = 'remote shutdown' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    NETWORK_FAILURE = 'network failure' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    LOCAL_FAILURE = 'local failure' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    REMOTE_FAILURE = 'remote failure' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class AbortionError(Exception): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Common super type for exceptions indicating RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    initial_metadata: The initial metadata from the other side of the RPC or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      None if no initial metadata value was received. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    terminal_metadata: The terminal metadata from the other side of the RPC or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      None if no terminal metadata value was received. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    code: The code value from the other side of the RPC or None if no code value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      was received. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    details: The details value from the other side of the RPC or None if no 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      details value was received. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def __init__(self, initial_metadata, terminal_metadata, code, details): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    super(AbortionError, self).__init__() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    self.initial_metadata = initial_metadata 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    self.terminal_metadata = terminal_metadata 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    self.code = code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    self.details = details 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class CancellationError(AbortionError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Indicates that an RPC has been cancelled.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class ExpirationError(AbortionError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Indicates that an RPC has expired ("timed out").""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class LocalShutdownError(AbortionError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Indicates that an RPC has terminated due to local shutdown of RPCs.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class RemoteShutdownError(AbortionError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Indicates that an RPC has terminated due to remote shutdown of RPCs.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class NetworkError(AbortionError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Indicates that some error occurred on the network.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class LocalError(AbortionError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Indicates that an RPC has terminated due to a local defect.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class RemoteError(AbortionError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Indicates that an RPC has terminated due to a remote defect.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class RpcContext(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Provides RPC-related information and action.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def is_active(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Describes whether the RPC is active or has terminated.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def time_remaining(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Describes the length of allowed time remaining for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A nonnegative float indicating the length of allowed time in seconds 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      remaining for the RPC to complete before it is considered to have timed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      out. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def add_abortion_callback(self, abortion_callback): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Registers a callback to be called if the RPC is aborted. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abortion_callback: A callable to be called and passed an Abortion value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        in the event of RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def cancel(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Cancels the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Idempotent and has no effect if the RPC has already terminated. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class Call(RpcContext): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Invocation-side utility object for an RPC.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def initial_metadata(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Accesses the initial metadata from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method blocks until the value is available or is known not to have been 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    emitted from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The initial metadata object emitted by the service-side of the RPC, or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        None if there was no such value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def terminal_metadata(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Accesses the terminal metadata from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method blocks until the value is available or is known not to have been 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    emitted from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The terminal metadata object emitted by the service-side of the RPC, or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        None if there was no such value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def code(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Accesses the code emitted by the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method blocks until the value is available or is known not to have been 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    emitted from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The code object emitted by the service-side of the RPC, or None if there 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        was no such value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def details(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Accesses the details value emitted by the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method blocks until the value is available or is known not to have been 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    emitted from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The details value emitted by the service-side of the RPC, or None if there 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        was no such value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class ServicerContext(RpcContext): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """A context object passed to method implementations.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def invocation_metadata(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Accesses the metadata from the invocation-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method blocks until the value is available or is known not to have been 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    emitted from the invocation-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The metadata object emitted by the invocation-side of the RPC, or None if 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        there was no such value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def initial_metadata(self, initial_metadata): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Accepts the service-side initial metadata value of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method need not be called by method implementations if they have no 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    service-side initial metadata to transmit. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      initial_metadata: The service-side initial metadata value of the RPC to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        be transmitted to the invocation side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def terminal_metadata(self, terminal_metadata): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Accepts the service-side terminal metadata value of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method need not be called by method implementations if they have no 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    service-side terminal metadata to transmit. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      terminal_metadata: The service-side terminal metadata value of the RPC to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        be transmitted to the invocation side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def code(self, code): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Accepts the service-side code of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method need not be called by method implementations if they have no 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    code to transmit. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      code: The code of the RPC to be transmitted to the invocation side of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def details(self, details): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Accepts the service-side details of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method need not be called by method implementations if they have no 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    service-side details to transmit. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      details: The service-side details value of the RPC to be transmitted to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the invocation side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class ResponseReceiver(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Invocation-side object used to accept the output of an RPC.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def initial_metadata(self, initial_metadata): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Receives the initial metadata from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      initial_metadata: The initial metadata object emitted from the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def response(self, response): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Receives a response from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      response: A response object emitted from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def complete(self, terminal_metadata, code, details): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Receives the completion values emitted from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      terminal_metadata: The terminal metadata object emitted from the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      code: The code object emitted from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      details: The details object emitted from the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class UnaryUnaryMultiCallable(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Affords invoking a unary-unary RPC in any call style.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def __call__( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, request, timeout, metadata=None, with_call=False): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Synchronously invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_call: Whether or not to include return a Call for the RPC in addition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        to the reponse. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The response value for the RPC, and a Call for the RPC if with_call was 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        set to True at invocation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Raises: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      AbortionError: Indicating that the RPC was aborted. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def future(self, request, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Asynchronously invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      An object that is both a Call for the RPC and a future.Future. In the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        event of RPC completion, the return Future's result value will be the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        response value of the RPC. In the event of RPC abortion, the returned 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Future's exception value will be an AbortionError. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def event( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, request, receiver, abortion_callback, timeout, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Asynchronously invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiver: A ResponseReceiver to be passed the response data of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abortion_callback: A callback to be called and passed an Abortion value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        in the event of RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A Call for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class UnaryStreamMultiCallable(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Affords invoking a unary-stream RPC in any call style.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def __call__(self, request, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      An object that is both a Call for the RPC and an iterator of response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        values. Drawing response values from the returned iterator may raise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AbortionError indicating abortion of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def event( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, request, receiver, abortion_callback, timeout, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Asynchronously invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiver: A ResponseReceiver to be passed the response data of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abortion_callback: A callback to be called and passed an Abortion value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        in the event of RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A Call object for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class StreamUnaryMultiCallable(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Affords invoking a stream-unary RPC in any call style.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def __call__( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, request_iterator, timeout, metadata=None, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_call=False): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Synchronously invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request_iterator: An iterator that yields request values for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_call: Whether or not to include return a Call for the RPC in addition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        to the reponse. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The response value for the RPC, and a Call for the RPC if with_call was 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        set to True at invocation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Raises: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      AbortionError: Indicating that the RPC was aborted. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def future(self, request_iterator, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Asynchronously invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request_iterator: An iterator that yields request values for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      An object that is both a Call for the RPC and a future.Future. In the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        event of RPC completion, the return Future's result value will be the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        response value of the RPC. In the event of RPC abortion, the returned 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Future's exception value will be an AbortionError. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def event( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, receiver, abortion_callback, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Asynchronously invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiver: A ResponseReceiver to be passed the response data of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abortion_callback: A callback to be called and passed an Abortion value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        in the event of RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A single object that is both a Call object for the RPC and a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stream.Consumer to which the request values of the RPC should be passed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class StreamStreamMultiCallable(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Affords invoking a stream-stream RPC in any call style.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def __call__(self, request_iterator, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request_iterator: An iterator that yields request values for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      An object that is both a Call for the RPC and an iterator of response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        values. Drawing response values from the returned iterator may raise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AbortionError indicating abortion of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def event( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, receiver, abortion_callback, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Asynchronously invokes the underlying RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiver: A ResponseReceiver to be passed the response data of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abortion_callback: A callback to be called and passed an Abortion value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        in the event of RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A single object that is both a Call object for the RPC and a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stream.Consumer to which the request values of the RPC should be passed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class MethodImplementation(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """A sum type that describes a method implementation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Attributes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cardinality: A cardinality.Cardinality value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    style: A style.Service value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    unary_unary_inline: The implementation of the method as a callable value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that takes a request value and a ServicerContext object and returns a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      response value. Only non-None if cardinality is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cardinality.Cardinality.UNARY_UNARY and style is style.Service.INLINE. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    unary_stream_inline: The implementation of the method as a callable value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that takes a request value and a ServicerContext object and returns an 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      iterator of response values. Only non-None if cardinality is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cardinality.Cardinality.UNARY_STREAM and style is style.Service.INLINE. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stream_unary_inline: The implementation of the method as a callable value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that takes an iterator of request values and a ServicerContext object and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      returns a response value. Only non-None if cardinality is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cardinality.Cardinality.STREAM_UNARY and style is style.Service.INLINE. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stream_stream_inline: The implementation of the method as a callable value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that takes an iterator of request values and a ServicerContext object and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      returns an iterator of response values. Only non-None if cardinality is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cardinality.Cardinality.STREAM_STREAM and style is style.Service.INLINE. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    unary_unary_event: The implementation of the method as a callable value that 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      takes a request value, a response callback to which to pass the response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      value of the RPC, and a ServicerContext. Only non-None if cardinality is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cardinality.Cardinality.UNARY_UNARY and style is style.Service.EVENT. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    unary_stream_event: The implementation of the method as a callable value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that takes a request value, a stream.Consumer to which to pass the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      response values of the RPC, and a ServicerContext. Only non-None if 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cardinality is cardinality.Cardinality.UNARY_STREAM and style is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      style.Service.EVENT. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stream_unary_event: The implementation of the method as a callable value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that takes a response callback to which to pass the response value of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      RPC and a ServicerContext and returns a stream.Consumer to which the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request values of the RPC should be passed. Only non-None if cardinality 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      is cardinality.Cardinality.STREAM_UNARY and style is style.Service.EVENT. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stream_stream_event: The implementation of the method as a callable value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that takes a stream.Consumer to which to pass the response values of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      RPC and a ServicerContext and returns a stream.Consumer to which the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request values of the RPC should be passed. Only non-None if cardinality 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      is cardinality.Cardinality.STREAM_STREAM and style is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      style.Service.EVENT. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class MultiMethodImplementation(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """A general type able to service many methods.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def service(self, group, method, response_consumer, context): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Services an RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      response_consumer: A stream.Consumer to be called to accept the response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        values of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      context: a ServicerContext object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A stream.Consumer with which to accept the request values of the RPC. The 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        consumer returned from this method may or may not be invoked to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        completion: in the case of RPC abortion, RPC Framework will simply stop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        passing values to this object. Implementations must not assume that this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        object will be called to completion of the request stream or even called 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        at all. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Raises: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abandonment.Abandoned: May or may not be raised when the RPC has been 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        aborted. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      NoSuchMethodError: If this MultiMethod does not recognize the given group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        and name for the RPC and is not able to service the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class GenericStub(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Affords RPC invocation via generic methods.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def blocking_unary_unary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, request, timeout, metadata=None, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_call=False): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Invokes a unary-request-unary-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method blocks until either returning the response value of the RPC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (in the event of RPC completion) or raising an exception (in the event of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    RPC abortion). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_call: Whether or not to include return a Call for the RPC in addition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        to the reponse. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The response value for the RPC, and a Call for the RPC if with_call was 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        set to True at invocation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Raises: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      AbortionError: Indicating that the RPC was aborted. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def future_unary_unary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, request, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Invokes a unary-request-unary-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      An object that is both a Call for the RPC and a future.Future. In the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        event of RPC completion, the return Future's result value will be the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        response value of the RPC. In the event of RPC abortion, the returned 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Future's exception value will be an AbortionError. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def inline_unary_stream( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, request, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Invokes a unary-request-stream-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      An object that is both a Call for the RPC and an iterator of response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        values. Drawing response values from the returned iterator may raise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AbortionError indicating abortion of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def blocking_stream_unary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, request_iterator, timeout, metadata=None, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_call=False): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Invokes a stream-request-unary-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    This method blocks until either returning the response value of the RPC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (in the event of RPC completion) or raising an exception (in the event of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    RPC abortion). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request_iterator: An iterator that yields request values for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      with_call: Whether or not to include return a Call for the RPC in addition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        to the reponse. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The response value for the RPC, and a Call for the RPC if with_call was 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        set to True at invocation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Raises: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      AbortionError: Indicating that the RPC was aborted. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def future_stream_unary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, request_iterator, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Invokes a stream-request-unary-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request_iterator: An iterator that yields request values for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      An object that is both a Call for the RPC and a future.Future. In the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        event of RPC completion, the return Future's result value will be the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        response value of the RPC. In the event of RPC abortion, the returned 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Future's exception value will be an AbortionError. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def inline_stream_stream( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, request_iterator, timeout, metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Invokes a stream-request-stream-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request_iterator: An iterator that yields request values for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      An object that is both a Call for the RPC and an iterator of response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        values. Drawing response values from the returned iterator may raise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AbortionError indicating abortion of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def event_unary_unary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, request, receiver, abortion_callback, timeout, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Event-driven invocation of a unary-request-unary-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiver: A ResponseReceiver to be passed the response data of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abortion_callback: A callback to be called and passed an Abortion value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        in the event of RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A Call for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def event_unary_stream( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, request, receiver, abortion_callback, timeout, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Event-driven invocation of a unary-request-stream-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      request: The request value for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiver: A ResponseReceiver to be passed the response data of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abortion_callback: A callback to be called and passed an Abortion value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        in the event of RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A Call for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def event_stream_unary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, receiver, abortion_callback, timeout, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Event-driven invocation of a unary-request-unary-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiver: A ResponseReceiver to be passed the response data of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abortion_callback: A callback to be called and passed an Abortion value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        in the event of RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A pair of a Call object for the RPC and a stream.Consumer to which the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        request values of the RPC should be passed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def event_stream_stream( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self, group, method, receiver, abortion_callback, timeout, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Event-driven invocation of a unary-request-stream-response method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      receiver: A ResponseReceiver to be passed the response data of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      abortion_callback: A callback to be called and passed an Abortion value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        in the event of RPC abortion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      timeout: A duration of time in seconds to allow for the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      metadata: A metadata value to be passed to the service-side of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A pair of a Call object for the RPC and a stream.Consumer to which the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        request values of the RPC should be passed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def unary_unary(self, group, method): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Creates a UnaryUnaryMultiCallable for a unary-unary method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A UnaryUnaryMultiCallable value for the named unary-unary method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def unary_stream(self, group, method): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Creates a UnaryStreamMultiCallable for a unary-stream method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A UnaryStreamMultiCallable value for the name unary-stream method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def stream_unary(self, group, method): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Creates a StreamUnaryMultiCallable for a stream-unary method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A StreamUnaryMultiCallable value for the named stream-unary method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @abc.abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  def stream_stream(self, group, method): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """Creates a StreamStreamMultiCallable for a stream-stream method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      group: The group identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      method: The method identifier of the RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      A StreamStreamMultiCallable value for the named stream-stream method. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    raise NotImplementedError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class DynamicStub(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """Affords RPC invocation via attributes corresponding to afforded methods. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Instances of this type may be scoped to a single group so that attribute 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  access is unambiguous. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Instances of this type respond to attribute access as follows: if the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  requested attribute is the name of a unary-unary method, the value of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  attribute will be a UnaryUnaryMultiCallable with which to invoke an RPC; if 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  the requested attribute is the name of a unary-stream method, the value of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  attribute will be a UnaryStreamMultiCallable with which to invoke an RPC; if 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  the requested attribute is the name of a stream-unary method, the value of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  attribute will be a StreamUnaryMultiCallable with which to invoke an RPC; and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if the requested attribute is the name of a stream-stream method, the value of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  the attribute will be a StreamStreamMultiCallable with which to invoke an RPC. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  __metaclass__ = abc.ABCMeta 
			 |