# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from biopb.image import detection_request_pb2 as biopb_dot_image_dot_detection__request__pb2
from biopb.image import detection_response_pb2 as biopb_dot_image_dot_detection__response__pb2
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2


class ObjectDetectionStub(object):
    """Missing associated documentation comment in .proto file."""

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.RunDetection = channel.unary_unary(
                '/biopb.image.ObjectDetection/RunDetection',
                request_serializer=biopb_dot_image_dot_detection__request__pb2.DetectionRequest.SerializeToString,
                response_deserializer=biopb_dot_image_dot_detection__response__pb2.DetectionResponse.FromString,
                _registered_method=True)
        self.RunDetectionStream = channel.stream_stream(
                '/biopb.image.ObjectDetection/RunDetectionStream',
                request_serializer=biopb_dot_image_dot_detection__request__pb2.DetectionRequest.SerializeToString,
                response_deserializer=biopb_dot_image_dot_detection__response__pb2.DetectionResponse.FromString,
                _registered_method=True)
        self.RunDetectionOnGrid = channel.stream_unary(
                '/biopb.image.ObjectDetection/RunDetectionOnGrid',
                request_serializer=biopb_dot_image_dot_detection__request__pb2.DetectionRequest.SerializeToString,
                response_deserializer=biopb_dot_image_dot_detection__response__pb2.DetectionResponse.FromString,
                _registered_method=True)
        self.RunModelAdaptation = channel.stream_unary(
                '/biopb.image.ObjectDetection/RunModelAdaptation',
                request_serializer=biopb_dot_image_dot_detection__request__pb2.DetectionRequest.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_any__pb2.Any.FromString,
                _registered_method=True)


class ObjectDetectionServicer(object):
    """Missing associated documentation comment in .proto file."""

    def RunDetection(self, request, context):
        """Implementing the `RunDetection` call is mandatory. The rest are optional. 

        Unitary call for computing cell detection / segmentation. 
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RunDetectionStream(self, request_iterator, context):
        """The streaming version allows dynamic updating of the DetectionRequest and
        getting updated results. For example, a client may request analyses at
        several different settings on the same image. After initial request, the
        following streaming requests no long need to transmit the image pixel
        data anymore, but only the new parameter settings, which saves network
        bandwidth.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RunDetectionOnGrid(self, request_iterator, context):
        """Send the image dataset as a stream of (overlapping or non-overlapping) image
        patches, instead of one large chunk of binary data. There are two use
        cases for this call: (1) The image dataset is too large therefore sending
        all data in one message would exceed GRPC message size limit; (2) The
        original data were taken as a grid scan so it is convinent to read/write
        as patches.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RunModelAdaptation(self, request_iterator, context):
        """Run model adaptation based on the submitted stream of DetectionRequest,
        which may or may not contain ROI annotations. The all returns an opaque
        data strcuture representing the model configuration after model
        adaptation, which in turn should be included in future inference reuest
        as a DetectionSetting field.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_ObjectDetectionServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'RunDetection': grpc.unary_unary_rpc_method_handler(
                    servicer.RunDetection,
                    request_deserializer=biopb_dot_image_dot_detection__request__pb2.DetectionRequest.FromString,
                    response_serializer=biopb_dot_image_dot_detection__response__pb2.DetectionResponse.SerializeToString,
            ),
            'RunDetectionStream': grpc.stream_stream_rpc_method_handler(
                    servicer.RunDetectionStream,
                    request_deserializer=biopb_dot_image_dot_detection__request__pb2.DetectionRequest.FromString,
                    response_serializer=biopb_dot_image_dot_detection__response__pb2.DetectionResponse.SerializeToString,
            ),
            'RunDetectionOnGrid': grpc.stream_unary_rpc_method_handler(
                    servicer.RunDetectionOnGrid,
                    request_deserializer=biopb_dot_image_dot_detection__request__pb2.DetectionRequest.FromString,
                    response_serializer=biopb_dot_image_dot_detection__response__pb2.DetectionResponse.SerializeToString,
            ),
            'RunModelAdaptation': grpc.stream_unary_rpc_method_handler(
                    servicer.RunModelAdaptation,
                    request_deserializer=biopb_dot_image_dot_detection__request__pb2.DetectionRequest.FromString,
                    response_serializer=google_dot_protobuf_dot_any__pb2.Any.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'biopb.image.ObjectDetection', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('biopb.image.ObjectDetection', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class ObjectDetection(object):
    """Missing associated documentation comment in .proto file."""

    @staticmethod
    def RunDetection(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,
            '/biopb.image.ObjectDetection/RunDetection',
            biopb_dot_image_dot_detection__request__pb2.DetectionRequest.SerializeToString,
            biopb_dot_image_dot_detection__response__pb2.DetectionResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def RunDetectionStream(request_iterator,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.stream_stream(
            request_iterator,
            target,
            '/biopb.image.ObjectDetection/RunDetectionStream',
            biopb_dot_image_dot_detection__request__pb2.DetectionRequest.SerializeToString,
            biopb_dot_image_dot_detection__response__pb2.DetectionResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def RunDetectionOnGrid(request_iterator,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.stream_unary(
            request_iterator,
            target,
            '/biopb.image.ObjectDetection/RunDetectionOnGrid',
            biopb_dot_image_dot_detection__request__pb2.DetectionRequest.SerializeToString,
            biopb_dot_image_dot_detection__response__pb2.DetectionResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def RunModelAdaptation(request_iterator,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.stream_unary(
            request_iterator,
            target,
            '/biopb.image.ObjectDetection/RunModelAdaptation',
            biopb_dot_image_dot_detection__request__pb2.DetectionRequest.SerializeToString,
            google_dot_protobuf_dot_any__pb2.Any.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
