'Run the setup method of a particular plugin
@param name: the name of the plugin
@param force: enforce the plugin to be reloaded and its
setup method to be re-run regardless of the
previous status'

@classmethod
def load(cls, name, force=False):

    log = current.log
    registry = cls._registry()
    if (name not in registry):
        cls.detect()
    if (name not in registry):
        raise NameError(("plugin    '%s'    not    found" % name))
    plugin_info = registry[name]
    if (force or (not isinstance(plugin_info, tuple))):
        (version, status) = (None, None)
    else:
        (version, status) = plugin_info
    if (status is None):
        new = True
        if (not cls._reload(name)):
            (version, status) = ('unknown', False)
        else:
            (version, status) = (None, True)
    else:
        new = False
    if (status is False):
        registry[name] = (version, status)
        return False
    status = True
    setup = None
    package = ('%s.%s' % (PLUGINS, name))
    try:
        setup = getattr(__import__(package, fromlist=[SETUP]), SETUP)
    except (ImportError, AttributeError):
        if new:
            log.debug(("Plugin    '%s'    not    found" % name))
        registry.pop(name, None)
        return False
    except SyntaxError:
        if new:
            log.error(("Skipping    invalid    plugin    '%s'" % name))
        if current.response.s3.debug:
            raise
        (version, status) = ('invalid', False)
    if (version is None):
        try:
            version = getattr(__import__(package, fromlist=[VERSION]), VERSION)
        except (ImportError, AttributeError):
            version = 'unknown'
    if (status and (not callable(setup))):
        try:
            setup = setup.setup
        except AttributeError:
            if new:
                log.debug(("No    setup    function    found    for    plugin    '%s'" % name))
            status = False
    if status:
        if new:
            log.info(("Setting    up    plugin    '%s'" % name))
        try:
            setup()
        except Exception:
            log.error(("Plugin    '%s'    setup    failed" % name))
            if current.response.s3.debug:
                raise
            status = False
    registry[name] = (version, status)
    return status
