code: def reload_extension(self, name):
          
  
          lib = self.__extensions.get(name)
          if lib is None:
              raise errors.ExtensionNotLoaded(name)
  
          # get the previous module states from sys modules
          modules = {
              name: module
              for name, module in sys.modules.items()
              if _is_submodule(lib.__name__, name)
          }
  
          try:
              # Unload and then load the module...
              self._remove_module_references(lib.__name__)
              self._call_module_finalizers(lib, name)
              self.load_extension(name)
          except Exception as e:
              # if the load failed, the remnants should have been
              # cleaned from the load_extension function call
              # so let's load it from our old compiled library.
              self._load_from_module_spec(lib, name)
  
              # revert sys.modules back to normal and raise back to caller
              sys.modules.update(modules)
              raise
docs: Atomically reloads an extension.
  
          This replaces the extension with the same extension, only refreshed. This is
          equivalent to a :meth:`unload_extension` followed by a :meth:`load_extension`
          except done in an atomic way. That is, if an operation fails mid-reload then
          the bot will roll-back to the prior working state.
  
          Parameters
          ------------
          name: :class:`str`
              The extension name to reload. It must be dot separated like
              regular Python imports if accessing a sub-module. e.g.
              ``foo.test`` if you want to import ``foo/test.py``.
  
          Raises
          -------
          ExtensionNotLoaded
              The extension was not loaded.
          ExtensionNotFound
              The extension could not be imported.
          NoEntryPointError
              The extension does not have a setup function.
          ExtensionFailed
              The extension setup function had an execution error.