diff options
author | 2022-04-20 23:10:08 +0100 | |
---|---|---|
committer | 2022-04-21 20:57:33 +0100 | |
commit | 11df594ae871f6776a4f15cc65aa19285789fa8c (patch) | |
tree | 7a3aaa966212675c16a3d26883289fbb6f74ce7d | |
parent | Merge pull request #2137 from python-discord/dont-use-modlog-for-defcon (diff) |
Use the extensions list & util from bot-core
-rw-r--r-- | bot/converters.py | 10 | ||||
-rw-r--r-- | bot/exts/utils/extensions.py | 7 | ||||
-rw-r--r-- | bot/utils/extensions.py | 34 |
3 files changed, 8 insertions, 43 deletions
diff --git a/bot/converters.py b/bot/converters.py index a3f4630a0..bd0fa373e 100644 --- a/bot/converters.py +++ b/bot/converters.py @@ -9,19 +9,19 @@ import dateutil.parser import discord from aiohttp import ClientConnectorError from botcore.site_api import ResponseCodeError +from botcore.utils._extensions import unqualify from botcore.utils.regex import DISCORD_INVITE from dateutil.relativedelta import relativedelta from discord.ext.commands import BadArgument, Bot, Context, Converter, IDConverter, MemberConverter, UserConverter from discord.utils import escape_markdown, snowflake_time -from bot import exts +from bot import exts, instance as bot_instance from bot.constants import URLs from bot.errors import InvalidInfraction from bot.exts.info.doc import _inventory_parser from bot.exts.info.tags import TagIdentifier from bot.log import get_logger from bot.utils import time -from bot.utils.extensions import EXTENSIONS, unqualify if t.TYPE_CHECKING: from bot.exts.info.source import SourceType @@ -150,13 +150,13 @@ class Extension(Converter): argument = argument.lower() - if argument in EXTENSIONS: + if argument in bot_instance.all_extensions: return argument - elif (qualified_arg := f"{exts.__name__}.{argument}") in EXTENSIONS: + elif (qualified_arg := f"{exts.__name__}.{argument}") in bot_instance.all_extensions: return qualified_arg matches = [] - for ext in EXTENSIONS: + for ext in bot_instance.all_extensions: if argument == unqualify(ext): matches.append(ext) diff --git a/bot/exts/utils/extensions.py b/bot/exts/utils/extensions.py index 95ce94c2c..9862988cb 100644 --- a/bot/exts/utils/extensions.py +++ b/bot/exts/utils/extensions.py @@ -12,7 +12,6 @@ from bot.constants import Emojis, MODERATION_ROLES, Roles, URLs from bot.converters import Extension from bot.log import get_logger from bot.pagination import LinePaginator -from bot.utils.extensions import EXTENSIONS log = get_logger(__name__) @@ -53,7 +52,7 @@ class Extensions(commands.Cog): return if "*" in extensions or "**" in extensions: - extensions = set(EXTENSIONS) - set(self.bot.extensions.keys()) + extensions = set(self.bot.all_extensions) - set(self.bot.extensions.keys()) msg = self.batch_manage(Action.LOAD, *extensions) await ctx.send(msg) @@ -96,7 +95,7 @@ class Extensions(commands.Cog): return if "**" in extensions: - extensions = EXTENSIONS + extensions = self.bot.all_extensions elif "*" in extensions: extensions = set(self.bot.extensions.keys()) | set(extensions) extensions.remove("*") @@ -136,7 +135,7 @@ class Extensions(commands.Cog): """Return a mapping of extension names and statuses to their categories.""" categories = {} - for ext in EXTENSIONS: + for ext in self.bot.all_extensions: if ext in self.bot.extensions: status = Emojis.status_online else: diff --git a/bot/utils/extensions.py b/bot/utils/extensions.py deleted file mode 100644 index 50350ea8d..000000000 --- a/bot/utils/extensions.py +++ /dev/null @@ -1,34 +0,0 @@ -import importlib -import inspect -import pkgutil -from typing import Iterator, NoReturn - -from bot import exts - - -def unqualify(name: str) -> str: - """Return an unqualified name given a qualified module/package `name`.""" - return name.rsplit(".", maxsplit=1)[-1] - - -def walk_extensions() -> Iterator[str]: - """Yield extension names from the bot.exts subpackage.""" - - def on_error(name: str) -> NoReturn: - raise ImportError(name=name) # pragma: no cover - - for module in pkgutil.walk_packages(exts.__path__, f"{exts.__name__}.", onerror=on_error): - if unqualify(module.name).startswith("_"): - # Ignore module/package names starting with an underscore. - continue - - if module.ispkg: - imported = importlib.import_module(module.name) - if not inspect.isfunction(getattr(imported, "setup", None)): - # If it lacks a setup function, it's not an extension. - continue - - yield module.name - - -EXTENSIONS = frozenset(walk_extensions()) |