Commit a1c3d0dc authored by mathieui's avatar mathieui
Browse files

Fix #2151 (cannot reload the OTR plugin)

We were using the deprecated imp methods, now we use importlib
parent ac806cbb
......@@ -5,7 +5,7 @@ the API together. Defines also a bunch of variables related to the
plugin env.
"""
import imp
import importlib
import os
import sys
import logging
......@@ -39,6 +39,7 @@ except OSError:
pass
sys.path.append(plugins_dir)
finder = importlib.machinery.PathFinder()
class PluginManager(object):
"""
......@@ -64,23 +65,16 @@ class PluginManager(object):
self.unload(name)
try:
if name in self.modules:
imp.acquire_lock()
module = imp.reload(self.modules[name])
imp.release_lock()
else:
file, filename, info = imp.find_module(name, [plugins_dir])
imp.acquire_lock()
module = imp.load_module(name, file, filename, info)
imp.release_lock()
loader = finder.find_module(name)
if not loader:
self.core.information('Could not find plugin: %s' % name, 'Error')
return
module = loader.load_module()
except Exception as e:
import traceback
log.debug("Could not load plugin: \n%s", traceback.format_exc())
self.core.information("Could not load plugin: %s" % e, 'Error')
return
finally:
if imp.lock_held():
imp.release_lock()
self.modules[name] = module
self.commands[name] = {}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment