code: def find_plugins(self, path):
          
          ext = os.extsep+'py'
          files = []
          for (dirpath, dirnames, filenames) in os.walk(path):
              files.extend([os.path.join(dirpath, x) for x in filenames if x.endswith(ext)])
          plugins = []
          for f in files:
              try:
                  mod = self.__import_file(f)
              except Exception:
                  tb = traceback.format_exc()
                  log.debug("Importing plugin from %s failed!\n%s" % (f, tb))
                  continue
              # get all classes in the imported file
              members = inspect.getmembers(mod, lambda x: inspect.isclass(x))
              # only get classes which are defined, not imported, in mod
              classes = [m[1] for m in members if m[1].__module__ == mod.__name__]
              for c in classes:
                  # if the class is derived from a supported type append it
                  # we test if it is a subclass of a supported type but not a supported type itself
                  # because that might be the abstract class
                  if any(issubclass(c, supported) for supported in self.supportedTypes)\
                     and c not in self.supportedTypes:
                      plugins.append(c)
          return plugins
docs: Return a list with all plugins found in path
  
          :param path: the directory with plugins
          :type path: str
          :returns: list of JB_Plugin subclasses
          :rtype: list
          :raises: None