code: def reload(self):
          
          logger.debug("Reloading Plugins...")
  
          deleted_modules = set(self.loaded_modules.keys())
  
          for plugin_file in self._get_plugin_files(self.plugin_dirs):
              if plugin_file not in self.loaded_modules:
                  logger.debug("New Plugin Module found. Loading: %s", plugin_file)
                  self._load_plugin(plugin_file)
              elif _md5sum(plugin_file) != self.loaded_modules[plugin_file].md5:
                  deleted_modules.remove(plugin_file)
                  logger.debug("Plugin Module changed. Reloading: %s", plugin_file)
                  self._load_plugin(plugin_file)
              else:
                  deleted_modules.remove(plugin_file)
  
          for plugin_file in deleted_modules:
              logger.debug("Plugin Module deleted. Removing: %s", plugin_file)
              del self.loaded_modules[plugin_file]
docs: Reloads modules from the current plugin_dirs.
  
          This method will search the plugin_dirs attribute finding new plugin modules,
          updating plugin modules that have changed, and unloading plugin modules that
          no longer exist.