'Find plugins using setuptools entry points.'

@classmethod
def find_all(cls):

    plugins = {}
    entry_points = itertools.chain(pkg_resources.iter_entry_points(constants.SETUPTOOLS_PLUGINS_ENTRY_POINT), pkg_resources.iter_entry_points(constants.OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT))
    for entry_point in entry_points:
        plugin_ep = PluginEntryPoint(entry_point)
        assert (plugin_ep.name not in plugins), 'PREFIX_FREE_DISTRIBUTIONS    messed    up'
        if interfaces.IPluginFactory.providedBy(plugin_ep.plugin_cls):
            plugins[plugin_ep.name] = plugin_ep
        else:
            logger.warning('%r    does    not    provide    IPluginFactory,    skipping', plugin_ep)
    return cls(plugins)
