<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def delete(consul_url=None, token=None, key=None, **kwargs):
    '''
    Delete values from Consul

    :param consul_url: The Consul server URL.
    :param key: The key to use as the starting point for the list.
    :param recurse: Delete values recursively beginning at the value of key.
    :param cas: This flag is used to turn the DELETE into
                a Check-And-Set operation.
    :return: Boolean & message of success or failure.

    CLI Example:

    .. code-block:: bash

        salt '*' consul.delete key='web'
        salt '*' consul.delete key='web' recurse='True'

    '''
    ret = {}
    if not consul_url:
        consul_url = _get_config()
        if not consul_url:
            log.error('No Consul URL found.')
            ret['message'] = 'No Consul URL found.'
            ret['res'] = False
            return ret

    if not key:
        raise SaltInvocationError('Required argument "key" is missing.')

    query_params = {}

    if 'recurse' in kwargs:
        query_params['recurse'] = True

    if 'cas' in kwargs:
        if kwargs['cas'] > 0:
            query_params['cas'] = kwargs['cas']
        else:
            ret['message'] = ('Check and Set Operation ',
                              'value must be greater than 0.')
            ret['res'] = False
            return ret

    function = 'kv/{0}'.format(key)
    ret = _query(consul_url=consul_url,
                 token=token,
                 function=function,
                 method='DELETE',
                 query_params=query_params)

    if ret['res']:
        ret['res'] = True
        ret['message'] = 'Deleted key {0}.'.format(key)
    else:
        ret['res'] = False
        ret['message'] = 'Unable to delete key {0}.'.format(key)
    return ret