text: # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
  """Client and server classes corresponding to protobuf-defined services."""
  import grpc
  
  from descarteslabs.common.proto.discover import discover_pb2 as descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2
  
  
  class AssetApiStub(object):
      """Missing associated documentation comment in .proto file."""
  
      def __init__(self, channel):
          """Constructor.
  
          Args:
              channel: A grpc.Channel.
          """
          self.CreateAsset = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AssetApi/CreateAsset',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAssetRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAssetResponse.FromString,
                  )
          self.GetAsset = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AssetApi/GetAsset',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.GetAssetRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.GetAssetResponse.FromString,
                  )
          self.ListAssets = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AssetApi/ListAssets',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAssetsRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAssetsResponse.FromString,
                  )
          self.MoveAsset = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AssetApi/MoveAsset',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.MoveAssetRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.MoveAssetResponse.FromString,
                  )
          self.UpdateAsset = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AssetApi/UpdateAsset',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.UpdateAssetRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.UpdateAssetResponse.FromString,
                  )
          self.DeleteAsset = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AssetApi/DeleteAsset',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAssetRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAssetResponse.FromString,
                  )
  
  
  class AssetApiServicer(object):
      """Missing associated documentation comment in .proto file."""
  
      def CreateAsset(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
      def GetAsset(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
      def ListAssets(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
      def MoveAsset(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
      def UpdateAsset(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
      def DeleteAsset(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
  
  def add_AssetApiServicer_to_server(servicer, server):
      rpc_method_handlers = {
              'CreateAsset': grpc.unary_unary_rpc_method_handler(
                      servicer.CreateAsset,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAssetRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAssetResponse.SerializeToString,
              ),
              'GetAsset': grpc.unary_unary_rpc_method_handler(
                      servicer.GetAsset,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.GetAssetRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.GetAssetResponse.SerializeToString,
              ),
              'ListAssets': grpc.unary_unary_rpc_method_handler(
                      servicer.ListAssets,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAssetsRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAssetsResponse.SerializeToString,
              ),
              'MoveAsset': grpc.unary_unary_rpc_method_handler(
                      servicer.MoveAsset,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.MoveAssetRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.MoveAssetResponse.SerializeToString,
              ),
              'UpdateAsset': grpc.unary_unary_rpc_method_handler(
                      servicer.UpdateAsset,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.UpdateAssetRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.UpdateAssetResponse.SerializeToString,
              ),
              'DeleteAsset': grpc.unary_unary_rpc_method_handler(
                      servicer.DeleteAsset,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAssetRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAssetResponse.SerializeToString,
              ),
      }
      generic_handler = grpc.method_handlers_generic_handler(
              'descarteslabs.discover.v0alpha.AssetApi', rpc_method_handlers)
      server.add_generic_rpc_handlers((generic_handler,))
  
  
   # This class is part of an EXPERIMENTAL API.
  class AssetApi(object):
      """Missing associated documentation comment in .proto file."""
  
      @staticmethod
      def CreateAsset(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AssetApi/CreateAsset',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAssetRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAssetResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
      @staticmethod
      def GetAsset(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AssetApi/GetAsset',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.GetAssetRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.GetAssetResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
      @staticmethod
      def ListAssets(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AssetApi/ListAssets',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAssetsRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAssetsResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
      @staticmethod
      def MoveAsset(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AssetApi/MoveAsset',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.MoveAssetRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.MoveAssetResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
      @staticmethod
      def UpdateAsset(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AssetApi/UpdateAsset',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.UpdateAssetRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.UpdateAssetResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
      @staticmethod
      def DeleteAsset(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AssetApi/DeleteAsset',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAssetRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAssetResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
  
  class AccessGrantApiStub(object):
      """Missing associated documentation comment in .proto file."""
  
      def __init__(self, channel):
          """Constructor.
  
          Args:
              channel: A grpc.Channel.
          """
          self.CreateAccessGrant = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AccessGrantApi/CreateAccessGrant',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAccessGrantRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAccessGrantResponse.FromString,
                  )
          self.DeleteAccessGrant = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AccessGrantApi/DeleteAccessGrant',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAccessGrantRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAccessGrantResponse.FromString,
                  )
          self.ListAccessGrants = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AccessGrantApi/ListAccessGrants',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsResponse.FromString,
                  )
          self.ListAccessGrantsStream = channel.unary_stream(
                  '/descarteslabs.discover.v0alpha.AccessGrantApi/ListAccessGrantsStream',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsStreamRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsStreamResponse.FromString,
                  )
          self.ReplaceAccessGrant = channel.unary_unary(
                  '/descarteslabs.discover.v0alpha.AccessGrantApi/ReplaceAccessGrant',
                  request_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ReplaceAccessGrantRequest.SerializeToString,
                  response_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ReplaceAccessGrantResponse.FromString,
                  )
  
  
  class AccessGrantApiServicer(object):
      """Missing associated documentation comment in .proto file."""
  
      def CreateAccessGrant(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
      def DeleteAccessGrant(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
      def ListAccessGrants(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
      def ListAccessGrantsStream(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
      def ReplaceAccessGrant(self, request, context):
          """Missing associated documentation comment in .proto file."""
          context.set_code(grpc.StatusCode.UNIMPLEMENTED)
          context.set_details('Method not implemented!')
          raise NotImplementedError('Method not implemented!')
  
  
  def add_AccessGrantApiServicer_to_server(servicer, server):
      rpc_method_handlers = {
              'CreateAccessGrant': grpc.unary_unary_rpc_method_handler(
                      servicer.CreateAccessGrant,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAccessGrantRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAccessGrantResponse.SerializeToString,
              ),
              'DeleteAccessGrant': grpc.unary_unary_rpc_method_handler(
                      servicer.DeleteAccessGrant,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAccessGrantRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAccessGrantResponse.SerializeToString,
              ),
              'ListAccessGrants': grpc.unary_unary_rpc_method_handler(
                      servicer.ListAccessGrants,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsResponse.SerializeToString,
              ),
              'ListAccessGrantsStream': grpc.unary_stream_rpc_method_handler(
                      servicer.ListAccessGrantsStream,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsStreamRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsStreamResponse.SerializeToString,
              ),
              'ReplaceAccessGrant': grpc.unary_unary_rpc_method_handler(
                      servicer.ReplaceAccessGrant,
                      request_deserializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ReplaceAccessGrantRequest.FromString,
                      response_serializer=descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ReplaceAccessGrantResponse.SerializeToString,
              ),
      }
      generic_handler = grpc.method_handlers_generic_handler(
              'descarteslabs.discover.v0alpha.AccessGrantApi', rpc_method_handlers)
      server.add_generic_rpc_handlers((generic_handler,))
  
  
   # This class is part of an EXPERIMENTAL API.
  class AccessGrantApi(object):
      """Missing associated documentation comment in .proto file."""
  
      @staticmethod
      def CreateAccessGrant(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AccessGrantApi/CreateAccessGrant',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAccessGrantRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.CreateAccessGrantResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
      @staticmethod
      def DeleteAccessGrant(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AccessGrantApi/DeleteAccessGrant',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAccessGrantRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.DeleteAccessGrantResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
      @staticmethod
      def ListAccessGrants(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AccessGrantApi/ListAccessGrants',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
      @staticmethod
      def ListAccessGrantsStream(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_stream(request, target, '/descarteslabs.discover.v0alpha.AccessGrantApi/ListAccessGrantsStream',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsStreamRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ListAccessGrantsStreamResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  
      @staticmethod
      def ReplaceAccessGrant(request,
              target,
              options=(),
              channel_credentials=None,
              call_credentials=None,
              insecure=False,
              compression=None,
              wait_for_ready=None,
              timeout=None,
              metadata=None):
          return grpc.experimental.unary_unary(request, target, '/descarteslabs.discover.v0alpha.AccessGrantApi/ReplaceAccessGrant',
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ReplaceAccessGrantRequest.SerializeToString,
              descarteslabs_dot_common_dot_proto_dot_discover_dot_discover__pb2.ReplaceAccessGrantResponse.FromString,
              options, channel_credentials,
              insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
  