diff --git a/example.py b/example.py index 883885f..8625ffb 100644 --- a/example.py +++ b/example.py @@ -1,4 +1,4 @@ -from xtendr.xtendr import XtendR +from xtendr.xtendrsystem import XtendRSystem if __name__ == "__main__": """Example usage of the PluginSystem. @@ -14,7 +14,7 @@ if __name__ == "__main__": >>> system.detach("example_plugin") Detached plugin 'example_plugin'. """ - system = XtendR() + system = XtendRSystem() system.attach("example_plugin") # Assuming 'example_plugin/plugin_info.json' exists system.run("example_plugin") system.stop("example_plugin") diff --git a/test_plugin/example_plugin.json b/plugins/example_plugin/example_plugin.json similarity index 83% rename from test_plugin/example_plugin.json rename to plugins/example_plugin/example_plugin.json index cb07c03..44ee67f 100644 --- a/test_plugin/example_plugin.json +++ b/plugins/example_plugin/example_plugin.json @@ -2,5 +2,6 @@ "name": "Example Plugin", "version": "1.0", "module": "example_plugin", + "class": "ExamplePlugin", "description": "An example plugin that prints a message." } diff --git a/test_plugin/example_plugin.py b/plugins/example_plugin/example_plugin.py similarity index 89% rename from test_plugin/example_plugin.py rename to plugins/example_plugin/example_plugin.py index 69da42c..227a0c7 100644 --- a/test_plugin/example_plugin.py +++ b/plugins/example_plugin/example_plugin.py @@ -1,4 +1,4 @@ -from xtendr import XtendRBase +from xtendr.xtendrbase import XtendRBase class ExamplePlugin(XtendRBase): """Example plugin implementation. diff --git a/setup.py b/setup.py index 43ff109..63e315e 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ if __name__ == "__main__": setup( name="XtendR", - version="0.0.1", + version="0.0.3", packages=find_packages(), install_requires=[], author="Jan Lerking", diff --git a/xtendr/__init__.py b/xtendr/__init__.py index dbb9a62..e596061 100644 --- a/xtendr/__init__.py +++ b/xtendr/__init__.py @@ -1 +1,2 @@ -import xtendr \ No newline at end of file +from . import xtendrbase +from . import xtendrsystem \ No newline at end of file diff --git a/xtendr/xtendrbase.py b/xtendr/xtendrbase.py new file mode 100644 index 0000000..19b7fb8 --- /dev/null +++ b/xtendr/xtendrbase.py @@ -0,0 +1,29 @@ +import importlib +import sys +import os +import json +from abc import ABC, abstractmethod + +class XtendRBase(ABC): + """Abstract base class for all plugins. + + Example: + >>> class TestPlugin(XtendRBase): + ... def run(self): + ... print("Running TestPlugin") + ... def stop(self): + ... print("Stopping TestPlugin") + + >>> plugin = TestPlugin() + >>> plugin.run() + Running TestPlugin + >>> plugin.stop() + Stopping TestPlugin + """ + @abstractmethod + def run(self): + pass + + @abstractmethod + def stop(self): + pass diff --git a/xtendr/xtendr.py b/xtendr/xtendrsystem.py similarity index 82% rename from xtendr/xtendr.py rename to xtendr/xtendrsystem.py index 96f6843..8a0b6f9 100644 --- a/xtendr/xtendr.py +++ b/xtendr/xtendrsystem.py @@ -3,32 +3,9 @@ import sys import os import json from abc import ABC, abstractmethod +from xtendr.xtendrbase import XtendRBase -class XtendRBase(ABC): - """Abstract base class for all plugins. - - Example: - >>> class TestPlugin(XtendRBase): - ... def run(self): - ... print("Running TestPlugin") - ... def stop(self): - ... print("Stopping TestPlugin") - - >>> plugin = TestPlugin() - >>> plugin.run() - Running TestPlugin - >>> plugin.stop() - Stopping TestPlugin - """ - @abstractmethod - def run(self): - pass - - @abstractmethod - def stop(self): - pass - -class XtendR: +class XtendRSystem: """Plugin system to manage plugins. Example: @@ -50,8 +27,9 @@ class XtendR: print(f"Plugin '{name}' is already attached.") return - plugin_path = os.path.join(os.getcwd(), name) - info_path = os.path.join(plugin_path, "plugin_info.json") + plugin_path = os.path.join(os.getcwd(), "plugins", name) + info_path = os.path.join(plugin_path, name + ".json") + print(plugin_path + "\n" + info_path) if not os.path.isdir(plugin_path) or not os.path.isfile(info_path): print(f"Failed to attach plugin '{name}', folder or info file not found.")