Browse Source

[commands] update sys.modules in load_extension again

6f71552c50 introduced a regression: loading a module that is not in a package
does not add it to sys.modules. Updating sys.modules is required after all.
pull/2277/head
Benjamin Mintz 6 years ago
committed by Rapptz
parent
commit
042a234eac
  1. 6
      discord/ext/commands/bot.py

6
discord/ext/commands/bot.py

@ -590,19 +590,23 @@ class BotBase(GroupMixin):
def _load_from_module_spec(self, spec, key):
# precondition: key not in self.__extensions
lib = importlib.util.module_from_spec(spec)
sys.modules[key] = lib
try:
spec.loader.exec_module(lib)
except Exception as e:
del sys.modules[key]
raise errors.ExtensionFailed(key, e) from e
try:
setup = getattr(lib, 'setup')
except AttributeError:
del sys.modules[key]
raise errors.NoEntryPointError(key)
try:
setup(self)
except Exception as e:
del sys.modules[key]
self._remove_module_references(lib.__name__)
self._call_module_finalizers(lib, key)
raise errors.ExtensionFailed(key, e) from e
@ -635,7 +639,7 @@ class BotBase(GroupMixin):
NoEntryPointError
The extension does not have a setup function.
ExtensionFailed
The extension setup function had an execution error.
The extension or its setup function had an execution error.
"""
if name in self.__extensions:

Loading…
Cancel
Save