aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Chris Lovering <[email protected]>2022-04-20 23:10:08 +0100
committerGravatar Chris Lovering <[email protected]>2022-04-21 20:57:33 +0100
commit11df594ae871f6776a4f15cc65aa19285789fa8c (patch)
tree7a3aaa966212675c16a3d26883289fbb6f74ce7d
parentMerge 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.py10
-rw-r--r--bot/exts/utils/extensions.py7
-rw-r--r--bot/utils/extensions.py34
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())