aboutsummaryrefslogtreecommitdiffstats
path: root/botcore/utils/extensions.py
diff options
context:
space:
mode:
authorGravatar Chris Lovering <[email protected]>2022-03-23 21:39:43 +0000
committerGravatar Chris Lovering <[email protected]>2022-03-24 08:25:16 +0000
commit8bd3706994843b31900975825e19aec35641e92d (patch)
treea94f618f5cb836c367fb0dd84ac4b4bd05903941 /botcore/utils/extensions.py
parentAdd async_stats subclass of statsd (diff)
Add BotBase that will act as a base for all our bots
This commit also modifies the extensions util, since it's now directly used by bot-core. Co-authored-by: Mark <[email protected]> Co-authored-by: Hassan Abouelela <[email protected]>
Diffstat (limited to 'botcore/utils/extensions.py')
-rw-r--r--botcore/utils/extensions.py52
1 files changed, 0 insertions, 52 deletions
diff --git a/botcore/utils/extensions.py b/botcore/utils/extensions.py
deleted file mode 100644
index 841120c9..00000000
--- a/botcore/utils/extensions.py
+++ /dev/null
@@ -1,52 +0,0 @@
-"""Utilities for loading Discord extensions."""
-
-import importlib
-import inspect
-import pkgutil
-import types
-from typing import NoReturn
-
-
-def unqualify(name: str) -> str:
- """
- Return an unqualified name given a qualified module/package ``name``.
-
- Args:
- name: The module name to unqualify.
-
- Returns:
- The unqualified module name.
- """
- return name.rsplit(".", maxsplit=1)[-1]
-
-
-def walk_extensions(module: types.ModuleType) -> frozenset[str]:
- """
- Yield extension names from the given module.
-
- Args:
- module (types.ModuleType): The module to look for extensions in.
-
- Returns:
- A set of strings that can be passed directly to :obj:`discord.ext.commands.Bot.load_extension`.
- """
-
- def on_error(name: str) -> NoReturn:
- raise ImportError(name=name) # pragma: no cover
-
- modules = set()
-
- for module_info in pkgutil.walk_packages(module.__path__, f"{module.__name__}.", onerror=on_error):
- if unqualify(module_info.name).startswith("_"):
- # Ignore module/package names starting with an underscore.
- continue
-
- if module_info.ispkg:
- imported = importlib.import_module(module_info.name)
- if not inspect.isfunction(getattr(imported, "setup", None)):
- # If it lacks a setup function, it's not an extension.
- continue
-
- modules.add(module_info.name)
-
- return frozenset(modules)