aboutsummaryrefslogtreecommitdiffstats
path: root/botcore/utils/_extensions.py
diff options
context:
space:
mode:
authorGravatar Chris Lovering <[email protected]>2022-11-05 13:39:52 +0000
committerGravatar Chris Lovering <[email protected]>2022-11-05 14:05:00 +0000
commit962968fecedca3bef33ba9524d87ffedf815f16d (patch)
tree3dd7b6c6cae4f01c8a5aae3e2371bd3a5e9dd0e7 /botcore/utils/_extensions.py
parentUpdate pyproject.toml module meta data (diff)
Rename package due to naming conflict
Diffstat (limited to 'botcore/utils/_extensions.py')
-rw-r--r--botcore/utils/_extensions.py57
1 files changed, 0 insertions, 57 deletions
diff --git a/botcore/utils/_extensions.py b/botcore/utils/_extensions.py
deleted file mode 100644
index 536a0715..00000000
--- a/botcore/utils/_extensions.py
+++ /dev/null
@@ -1,57 +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 ignore_module(module: pkgutil.ModuleInfo) -> bool:
- """Return whether the module with name `name` should be ignored."""
- return any(name.startswith("_") for name in module.name.split("."))
-
-
-def walk_extensions(module: types.ModuleType) -> frozenset[str]:
- """
- Return all 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 ignore_module(module_info):
- # Ignore modules/packages that have a name starting with an underscore anywhere in their trees.
- 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)