# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from google.cloud.tasks_v2 import (
    ListQueuesRequest, ListQueuesResponse, GetQueueRequest, Queue, CreateQueueRequest,
    UpdateQueueRequest, DeleteQueueRequest, PurgeQueueRequest, PauseQueueRequest, ResumeQueueRequest, ListTasksRequest,
    ListTasksResponse, GetTaskRequest, Task, CreateTaskRequest, DeleteTaskRequest, RunTaskRequest
)

from google.iam.v1 import iam_policy_pb2 as google_dot_iam_dot_v1_dot_iam__policy__pb2
from google.iam.v1 import policy_pb2 as google_dot_iam_dot_v1_dot_policy__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2


class CloudTasksStub(object):
    """Cloud Tasks allows developers to manage the execution of background
    work in their applications.
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.ListQueues = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/ListQueues',
            request_serializer=ListQueuesRequest.serialize,
            response_deserializer=ListQueuesResponse.deserialize,
        )
        self.GetQueue = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/GetQueue',
            request_serializer=GetQueueRequest.serialize,
            response_deserializer=Queue.deserialize,
        )
        self.CreateQueue = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/CreateQueue',
            request_serializer=CreateQueueRequest.serialize,
            response_deserializer=Queue.deserialize,
        )
        self.UpdateQueue = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/UpdateQueue',
            request_serializer=UpdateQueueRequest.serialize,
            response_deserializer=Queue.deserialize,
        )
        self.DeleteQueue = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/DeleteQueue',
            request_serializer=DeleteQueueRequest.serialize,
            response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
        )
        self.PurgeQueue = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/PurgeQueue',
            request_serializer=PurgeQueueRequest.serialize,
            response_deserializer=Queue.deserialize,
        )
        self.PauseQueue = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/PauseQueue',
            request_serializer=PauseQueueRequest.serialize,
            response_deserializer=Queue.deserialize,
        )
        self.ResumeQueue = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/ResumeQueue',
            request_serializer=ResumeQueueRequest.serialize,
            response_deserializer=Queue.deserialize,
        )
        self.GetIamPolicy = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/GetIamPolicy',
            request_serializer=google_dot_iam_dot_v1_dot_iam__policy__pb2.GetIamPolicyRequest.SerializeToString,
            response_deserializer=google_dot_iam_dot_v1_dot_policy__pb2.Policy.FromString,
        )
        self.SetIamPolicy = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/SetIamPolicy',
            request_serializer=google_dot_iam_dot_v1_dot_iam__policy__pb2.SetIamPolicyRequest.SerializeToString,
            response_deserializer=google_dot_iam_dot_v1_dot_policy__pb2.Policy.FromString,
        )
        self.TestIamPermissions = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/TestIamPermissions',
            request_serializer=google_dot_iam_dot_v1_dot_iam__policy__pb2.TestIamPermissionsRequest.SerializeToString,
            response_deserializer=google_dot_iam_dot_v1_dot_iam__policy__pb2.TestIamPermissionsResponse.FromString,
        )
        self.ListTasks = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/ListTasks',
            request_serializer=ListTasksRequest.serialize,
            response_deserializer=ListTasksResponse.deserialize,
        )
        self.GetTask = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/GetTask',
            request_serializer=GetTaskRequest.serialize,
            response_deserializer=Task.serialize,
        )
        self.CreateTask = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/CreateTask',
            request_serializer=CreateTaskRequest.serialize,
            response_deserializer=Task.deserialize,
        )
        self.DeleteTask = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/DeleteTask',
            request_serializer=DeleteTaskRequest.serialize,
            response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
        )
        self.RunTask = channel.unary_unary(
            '/google.cloud.tasks.v2.CloudTasks/RunTask',
            request_serializer=RunTaskRequest.serialize,
            response_deserializer=Task.deserialize,
        )


class CloudTasksServicer(object):
    """Cloud Tasks allows developers to manage the execution of background
    work in their applications.
    """

    def ListQueues(self, request, context):
        """Lists queues.

        Queues are returned in lexicographical order.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetQueue(self, request, context):
        """Gets a queue.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateQueue(self, request, context):
        """Creates a queue.

        Queues created with this method allow tasks to live for a maximum of 31
        days. After a task is 31 days old, the task will be deleted regardless of
        whether it was dispatched or not.

        WARNING: Using this method may have unintended side effects if you are
        using an App Engine `queue.yaml` or `queue.xml` file to manage your queues.
        Read
        [Overview of Queue Management and
        queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using
        this method.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateQueue(self, request, context):
        """Updates a queue.

        This method creates the queue if it does not exist and updates
        the queue if it does exist.

        Queues created with this method allow tasks to live for a maximum of 31
        days. After a task is 31 days old, the task will be deleted regardless of
        whether it was dispatched or not.

        WARNING: Using this method may have unintended side effects if you are
        using an App Engine `queue.yaml` or `queue.xml` file to manage your queues.
        Read
        [Overview of Queue Management and
        queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using
        this method.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteQueue(self, request, context):
        """Deletes a queue.

        This command will delete the queue even if it has tasks in it.

        Note: If you delete a queue, a queue with the same name can't be created
        for 7 days.

        WARNING: Using this method may have unintended side effects if you are
        using an App Engine `queue.yaml` or `queue.xml` file to manage your queues.
        Read
        [Overview of Queue Management and
        queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using
        this method.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def PurgeQueue(self, request, context):
        """Purges a queue by deleting all of its tasks.

        All tasks created before this method is called are permanently deleted.

        Purge operations can take up to one minute to take effect. Tasks
        might be dispatched before the purge takes effect. A purge is irreversible.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def PauseQueue(self, request, context):
        """Pauses the queue.

        If a queue is paused then the system will stop dispatching tasks
        until the queue is resumed via
        [ResumeQueue][google.cloud.tasks.v2.CloudTasks.ResumeQueue]. Tasks can
        still be added when the queue is paused. A queue is paused if its
        [state][google.cloud.tasks.v2.Queue.state] is
        [PAUSED][google.cloud.tasks.v2.Queue.State.PAUSED].
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ResumeQueue(self, request, context):
        """Resume a queue.

        This method resumes a queue after it has been
        [PAUSED][google.cloud.tasks.v2.Queue.State.PAUSED] or
        [DISABLED][google.cloud.tasks.v2.Queue.State.DISABLED]. The state of a
        queue is stored in the queue's [state][google.cloud.tasks.v2.Queue.state];
        after calling this method it will be set to
        [RUNNING][google.cloud.tasks.v2.Queue.State.RUNNING].

        WARNING: Resuming many high-QPS queues at the same time can
        lead to target overloading. If you are resuming high-QPS
        queues, follow the 500/50/5 pattern described in
        [Managing Cloud Tasks Scaling
        Risks](https://cloud.google.com/tasks/docs/manage-cloud-task-scaling).
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetIamPolicy(self, request, context):
        """Gets the access control policy for a [Queue][google.cloud.tasks.v2.Queue].
        Returns an empty policy if the resource exists and does not have a policy
        set.

        Authorization requires the following
        [Google IAM](https://cloud.google.com/iam) permission on the specified
        resource parent:

        * `cloudtasks.queues.getIamPolicy`
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SetIamPolicy(self, request, context):
        """Sets the access control policy for a [Queue][google.cloud.tasks.v2.Queue].
        Replaces any existing policy.

        Note: The Cloud Console does not check queue-level IAM permissions yet.
        Project-level permissions are required to use the Cloud Console.

        Authorization requires the following
        [Google IAM](https://cloud.google.com/iam) permission on the specified
        resource parent:

        * `cloudtasks.queues.setIamPolicy`
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def TestIamPermissions(self, request, context):
        """Returns permissions that a caller has on a
        [Queue][google.cloud.tasks.v2.Queue]. If the resource does not exist, this
        will return an empty set of permissions, not a
        [NOT_FOUND][google.rpc.Code.NOT_FOUND] error.

        Note: This operation is designed to be used for building permission-aware
        UIs and command-line tools, not for authorization checking. This operation
        may "fail open" without warning.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListTasks(self, request, context):
        """Lists the tasks in a queue.

        By default, only the [BASIC][google.cloud.tasks.v2.Task.View.BASIC] view is
        retrieved due to performance considerations;
        [response_view][google.cloud.tasks.v2.ListTasksRequest.response_view]
        controls the subset of information which is returned.

        The tasks may be returned in any order. The ordering may change at any
        time.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetTask(self, request, context):
        """Gets a task.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateTask(self, request, context):
        """Creates a task and adds it to a queue.

        Tasks cannot be updated after creation; there is no UpdateTask command.

        * The maximum task size is 100KB.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteTask(self, request, context):
        """Deletes a task.

        A task can be deleted if it is scheduled or dispatched. A task
        cannot be deleted if it has executed successfully or permanently
        failed.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RunTask(self, request, context):
        """Forces a task to run now.

        When this method is called, Cloud Tasks will dispatch the task, even if
        the task is already running, the queue has reached its
        [RateLimits][google.cloud.tasks.v2.RateLimits] or is
        [PAUSED][google.cloud.tasks.v2.Queue.State.PAUSED].

        This command is meant to be used for manual debugging. For
        example, [RunTask][google.cloud.tasks.v2.CloudTasks.RunTask] can be used to
        retry a failed task after a fix has been made or to manually force a task
        to be dispatched now.

        The dispatched task is returned. That is, the task that is returned
        contains the [status][Task.status] after the task is dispatched but
        before the task is received by its target.

        If Cloud Tasks receives a successful response from the task's
        target, then the task will be deleted; otherwise the task's
        [schedule_time][google.cloud.tasks.v2.Task.schedule_time] will be reset to
        the time that [RunTask][google.cloud.tasks.v2.CloudTasks.RunTask] was
        called plus the retry delay specified in the queue's
        [RetryConfig][google.cloud.tasks.v2.RetryConfig].

        [RunTask][google.cloud.tasks.v2.CloudTasks.RunTask] returns
        [NOT_FOUND][google.rpc.Code.NOT_FOUND] when it is called on a
        task that has already succeeded or permanently failed.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_CloudTasksServicer_to_server(servicer, server):
    rpc_method_handlers = {
        'ListQueues': grpc.unary_unary_rpc_method_handler(
            servicer.ListQueues,
            request_deserializer=ListQueuesRequest.deserialize,
            response_serializer=ListQueuesResponse.serialize,
        ),
        'GetQueue': grpc.unary_unary_rpc_method_handler(
            servicer.GetQueue,
            request_deserializer=GetQueueRequest.deserialize,
            response_serializer=Queue.serialize,
        ),
        'CreateQueue': grpc.unary_unary_rpc_method_handler(
            servicer.CreateQueue,
            request_deserializer=CreateQueueRequest.deserialize,
            response_serializer=Queue.serialize,
        ),
        'UpdateQueue': grpc.unary_unary_rpc_method_handler(
            servicer.UpdateQueue,
            request_deserializer=UpdateQueueRequest.deserialize,
            response_serializer=Queue.serialize,
        ),
        'DeleteQueue': grpc.unary_unary_rpc_method_handler(
            servicer.DeleteQueue,
            request_deserializer=DeleteQueueRequest.deserialize,
            response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
        ),
        'PurgeQueue': grpc.unary_unary_rpc_method_handler(
            servicer.PurgeQueue,
            request_deserializer=PurgeQueueRequest.deserialize,
            response_serializer=Queue.serialize,
        ),
        'PauseQueue': grpc.unary_unary_rpc_method_handler(
            servicer.PauseQueue,
            request_deserializer=PauseQueueRequest.deserialize,
            response_serializer=Queue.serialize,
        ),
        'ResumeQueue': grpc.unary_unary_rpc_method_handler(
            servicer.ResumeQueue,
            request_deserializer=ResumeQueueRequest.deserialize,
            response_serializer=Queue.serialize,
        ),
        'GetIamPolicy': grpc.unary_unary_rpc_method_handler(
            servicer.GetIamPolicy,
            request_deserializer=google_dot_iam_dot_v1_dot_iam__policy__pb2.GetIamPolicyRequest.FromString,
            response_serializer=google_dot_iam_dot_v1_dot_policy__pb2.Policy.SerializeToString,
        ),
        'SetIamPolicy': grpc.unary_unary_rpc_method_handler(
            servicer.SetIamPolicy,
            request_deserializer=google_dot_iam_dot_v1_dot_iam__policy__pb2.SetIamPolicyRequest.FromString,
            response_serializer=google_dot_iam_dot_v1_dot_policy__pb2.Policy.SerializeToString,
        ),
        'TestIamPermissions': grpc.unary_unary_rpc_method_handler(
            servicer.TestIamPermissions,
            request_deserializer=google_dot_iam_dot_v1_dot_iam__policy__pb2.TestIamPermissionsRequest.FromString,
            response_serializer=google_dot_iam_dot_v1_dot_iam__policy__pb2.TestIamPermissionsResponse.SerializeToString,
        ),
        'ListTasks': grpc.unary_unary_rpc_method_handler(
            servicer.ListTasks,
            request_deserializer=ListTasksRequest.deserialize,
            response_serializer=ListTasksResponse.serialize,
        ),
        'GetTask': grpc.unary_unary_rpc_method_handler(
            servicer.GetTask,
            request_deserializer=GetTaskRequest.deserialize,
            response_serializer=Task.serialize,
        ),
        'CreateTask': grpc.unary_unary_rpc_method_handler(
            servicer.CreateTask,
            request_deserializer=CreateTaskRequest.deserialize,
            response_serializer=Task.serialize,
        ),
        'DeleteTask': grpc.unary_unary_rpc_method_handler(
            servicer.DeleteTask,
            request_deserializer=DeleteTaskRequest.deserialize,
            response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
        ),
        'RunTask': grpc.unary_unary_rpc_method_handler(
            servicer.RunTask,
            request_deserializer=RunTaskRequest.deserialize,
            response_serializer=Task.serialize,
        ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
        'google.cloud.tasks.v2.CloudTasks', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


# This class is part of an EXPERIMENTAL API.
class CloudTasks(object):
    """Cloud Tasks allows developers to manage the execution of background
    work in their applications.
    """

    @staticmethod
    def ListQueues(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, '/google.cloud.tasks.v2.CloudTasks/ListQueues',
                                             ListQueuesRequest.serialize,
                                             ListQueuesResponse.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetQueue(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, '/google.cloud.tasks.v2.CloudTasks/GetQueue',
                                             GetQueueRequest.serialize,
                                             Queue.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateQueue(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, '/google.cloud.tasks.v2.CloudTasks/CreateQueue',
                                             CreateQueueRequest.serialize,
                                             Queue.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateQueue(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, '/google.cloud.tasks.v2.CloudTasks/UpdateQueue',
                                             UpdateQueueRequest.serialize,
                                             Queue.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteQueue(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, '/google.cloud.tasks.v2.CloudTasks/DeleteQueue',
                                             DeleteQueueRequest.serialize,
                                             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def PurgeQueue(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, '/google.cloud.tasks.v2.CloudTasks/PurgeQueue',
                                             PurgeQueueRequest.serialize,
                                             Queue.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def PauseQueue(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, '/google.cloud.tasks.v2.CloudTasks/PauseQueue',
                                             PauseQueueRequest.serialize,
                                             Queue.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ResumeQueue(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, '/google.cloud.tasks.v2.CloudTasks/ResumeQueue',
                                             ResumeQueueRequest.serialize,
                                             Queue.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetIamPolicy(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, '/google.cloud.tasks.v2.CloudTasks/GetIamPolicy',
            google_dot_iam_dot_v1_dot_iam__policy__pb2.GetIamPolicyRequest.SerializeToString,
            google_dot_iam_dot_v1_dot_policy__pb2.Policy.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata
        )

    @staticmethod
    def SetIamPolicy(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, '/google.cloud.tasks.v2.CloudTasks/SetIamPolicy',
            google_dot_iam_dot_v1_dot_iam__policy__pb2.SetIamPolicyRequest.SerializeToString,
            google_dot_iam_dot_v1_dot_policy__pb2.Policy.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata
        )

    @staticmethod
    def TestIamPermissions(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, '/google.cloud.tasks.v2.CloudTasks/TestIamPermissions',
            google_dot_iam_dot_v1_dot_iam__policy__pb2.TestIamPermissionsRequest.SerializeToString,
            google_dot_iam_dot_v1_dot_iam__policy__pb2.TestIamPermissionsResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata
        )

    @staticmethod
    def ListTasks(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, '/google.cloud.tasks.v2.CloudTasks/ListTasks',
                                             ListTasksRequest.serialize,
                                             ListTasksResponse.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetTask(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, '/google.cloud.tasks.v2.CloudTasks/GetTask',
                                             GetTaskRequest.serialize,
                                             Task.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateTask(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, '/google.cloud.tasks.v2.CloudTasks/CreateTask',
                                             CreateTaskRequest.serialize,
                                             Task.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteTask(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, '/google.cloud.tasks.v2.CloudTasks/DeleteTask',
                                             DeleteTaskRequest.serialize,
                                             google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def RunTask(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, '/google.cloud.tasks.v2.CloudTasks/RunTask',
                                             RunTaskRequest.serialize,
                                             Task.deserialize,
                                             options, channel_credentials,
                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
