docs: def collect_plugins(self,
                          entry_points=None,
                          verify_requirements=False,
                          return_dict=False):
  
          """
          collects the plugins from the `entry_points`. If `entry_points` is not
          explicitly defined, this method will pull from the internal state
          defined using the add/set entry points methods.
  
          `entry_points` can be a single object or an iterable, but must be
          either a string or an iterable of strings.
  
          returns a list of plugins or an empty list.
          """
  
          if entry_points is None:
              entry_points = self.entry_point_names
          else:
              entry_points = util.return_set(entry_points)
  
          plugins = []
          plugin_names = []
          for name in entry_points:
              for entry_point in pkg_resources.iter_entry_points(name):
                  if (hasattr(entry_point, 'resolve') and
                          hasattr(entry_point, 'require')):
  
                      if verify_requirements:
                          entry_point.require()
  
                      plugin = entry_point.resolve()
                  else:
                      plugin = entry_point.load()
  
                  plugins.append(plugin)
                  plugin_names.append(entry_point.name)
  
          if return_dict:
              return {n: v for n, v in zip(plugin_names, plugins)}
  
          return plugins, plugin_names