diff options
| author | 2019-10-14 11:37:04 +0100 | |
|---|---|---|
| committer | 2019-10-14 11:37:04 +0100 | |
| commit | 4940aff877d26961a352c8264cec92eca32f0cdd (patch) | |
| tree | 949332b0c3ac5bc28e9dd36bf42365cf5ef85002 | |
| parent | actually explicitly strip "unknown" html tags from fedi notes (diff) | |
| signature | ||
refactor out chosing loadable modules in to _list_valid_modules()
| -rw-r--r-- | src/ModuleManager.py | 58 |
1 files changed, 35 insertions, 23 deletions
diff --git a/src/ModuleManager.py b/src/ModuleManager.py index 76a3e8ee..bbfcc618 100644 --- a/src/ModuleManager.py +++ b/src/ModuleManager.py @@ -319,34 +319,24 @@ class ModuleManager(object): fail = [] success = [] - module_definitions = self.list_modules() + loadable, nonloadable = self._list_valid_modules(bot, whitelist, blacklist) - loadable_definitions = [] - for definition in module_definitions: + for definition in nonloadable: + self.log.warn("Not loading module '%s'", [definition.name]) + + for definition in loadable: try: - self._check_hashflags(bot, definition) - except ModuleNotLoadableWarning: - self.log.warn("Could not load '%s'" % definition.name) + self.load_module(bot, definition) + except ModuleWarning: + fail.append(definition.name) continue - loadable_definitions.append(definition) - - loadable_definitions = self._dependency_sort(loadable_definitions) - - for definition in loadable_definitions: - if definition.name in whitelist or ( - not whitelist and not definition.name in blacklist): - try: - self.load_module(bot, definition) - except ModuleWarning: + except Exception as e: + if safe: fail.append(definition.name) continue - except Exception as e: - if safe: - fail.append(definition.name) - continue - else: - raise - success.append(definition.name) + else: + raise + success.append(definition.name) return success, fail def unload_module(self, name: str): @@ -387,3 +377,25 @@ class ModuleManager(object): self.log.debug("References left for '%s': %s", [loaded_module.name, ", ".join([str(referrer) for referrer in referrers])]) + + def _list_valid_modules(self, bot: "IRCBot.Bot", + whitelist: typing.List[str], blacklist: typing.List[str]): + module_definitions = self.list_modules() + + loadable_definitions = [] + nonloadable_definitions = [] + for definition in module_definitions: + if definition.name in whitelist or ( + not whitelist and not definition.name in blacklist): + try: + self._check_hashflags(bot, definition) + except ModuleNotLoadableWarning: + nonloadable_definitions.append(definition) + continue + loadable_definitions.append(definition) + else: + nonloadable_definitions.append(definition) + + + return (self._dependency_sort(loadable_definitions), + nonloadable_definitions) |
