From 611216b5d60faef53adb237bd9865ee795ac4348 Mon Sep 17 00:00:00 2001 From: Fulgen301 Date: Sun, 19 Mar 2017 12:40:53 +0100 Subject: Rename plugins.py to plugin.py to prevent conficts with supybot.plugins --- pycrctrl/plugin.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ pycrctrl/plugins.py | 48 ------------------------------------------------ pycrctrl/pycrctrl.py | 2 +- 3 files changed, 49 insertions(+), 49 deletions(-) create mode 100644 pycrctrl/plugin.py delete mode 100644 pycrctrl/plugins.py diff --git a/pycrctrl/plugin.py b/pycrctrl/plugin.py new file mode 100644 index 0000000..d6a43c2 --- /dev/null +++ b/pycrctrl/plugin.py @@ -0,0 +1,48 @@ +import sys +import os +import os.path +import re + +import importlib.util + +if sys.version_info < (3,6): + class ModuleNotFoundError(ImportError): + pass + +class PluginError(Exception): + """There is an error when loading a PyCRCtrl plugin.""" + pass + +def loadPlugin(name : str, directories : list): + """Loads a plugin.""" + + if not isinstance(directories, list): + directories = [directories] + + found = None + for dir in directories: + if found == None: + if os.path.isdir(os.path.join(dir, name)) or os.path.isfile(os.path.join(dir, ("{}.py".format(name) if name[-3:] != ".py" else name))): + found = dir + else: + raise ImportError("Multiple modules named {} found!".format(name)) + + if found == None: + raise ModuleNotFoundError("Cannot find module {}".format(name)) from None + + spec = importlib.util.spec_from_file_location(name, os.path.join(dir, name)) + + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + sys.modules[module.__name__] = module + return module + +def loadPluginClass(module): + try: + c = module.Class() + + except AttributeError: + raise PluginError("The plugin \"{}\" does not have a Class attribute".format(module.__name__)) from None + + return c \ No newline at end of file diff --git a/pycrctrl/plugins.py b/pycrctrl/plugins.py deleted file mode 100644 index d6a43c2..0000000 --- a/pycrctrl/plugins.py +++ /dev/null @@ -1,48 +0,0 @@ -import sys -import os -import os.path -import re - -import importlib.util - -if sys.version_info < (3,6): - class ModuleNotFoundError(ImportError): - pass - -class PluginError(Exception): - """There is an error when loading a PyCRCtrl plugin.""" - pass - -def loadPlugin(name : str, directories : list): - """Loads a plugin.""" - - if not isinstance(directories, list): - directories = [directories] - - found = None - for dir in directories: - if found == None: - if os.path.isdir(os.path.join(dir, name)) or os.path.isfile(os.path.join(dir, ("{}.py".format(name) if name[-3:] != ".py" else name))): - found = dir - else: - raise ImportError("Multiple modules named {} found!".format(name)) - - if found == None: - raise ModuleNotFoundError("Cannot find module {}".format(name)) from None - - spec = importlib.util.spec_from_file_location(name, os.path.join(dir, name)) - - module = importlib.util.module_from_spec(spec) - spec.loader.exec_module(module) - - sys.modules[module.__name__] = module - return module - -def loadPluginClass(module): - try: - c = module.Class() - - except AttributeError: - raise PluginError("The plugin \"{}\" does not have a Class attribute".format(module.__name__)) from None - - return c \ No newline at end of file diff --git a/pycrctrl/pycrctrl.py b/pycrctrl/pycrctrl.py index ab8db4b..70a87a8 100644 --- a/pycrctrl/pycrctrl.py +++ b/pycrctrl/pycrctrl.py @@ -31,7 +31,7 @@ import json import base64 import supybot.log import supybot.ircmsgs as ircmsgs -from . import plugins +from . import plugin from pickle import Pickler, Unpickler from PyQt5.QtCore import * -- cgit v1.2.3-54-g00ecf