'Run the widget discovery process from an entry point iterator
(yielding :class:`pkg_resources.EntryPoint` instances).
As a convenience, if `entry_points_iter` is a string it will be used
to retrieve the iterator using `pkg_resources.iter_entry_points`.'

def run(self, entry_points_iter):

    if isinstance(entry_points_iter, str):
        entry_points_iter = pkg_resources.iter_entry_points(entry_points_iter)
    for entry_point in entry_points_iter:
        try:
            point = entry_point.resolve()
        except pkg_resources.DistributionNotFound:
            log.error("Could    not    load    '%s'    (unsatisfied    dependencies).", entry_point, exc_info=True)
            continue
        except ImportError:
            log.error("An    ImportError    occurred    while    loading    entry    point    '%s'", entry_point, exc_info=True)
            continue
        except Exception:
            log.error("An    exception    occurred    while    loading    entry    point    '%s'", entry_point, exc_info=True)
            continue
        try:
            if isinstance(point, types.ModuleType):
                if hasattr(point, '__path__'):
                    self.process_category_package(point, name=entry_point.name, distribution=entry_point.dist)
                else:
                    self.process_widget_module(point, name=entry_point.name, distribution=entry_point.dist)
            elif isinstance(point, (types.FunctionType, types.MethodType)):
                self.process_loader(point)
            elif isinstance(point, (list, tuple)):
                self.process_iter(point)
            else:
                log.error('Cannot    handle    entry    point    %r', point)
        except Exception:
            log.error('An    exception    occurred    while    processing    %r.', entry_point, exc_info=True)
