14 Commits
Author SHA1 Message Date
Lerking b763308aa9 Merge pull request 'Added plugin.run() with arguments. /JL' (#29) from 0.2.0 into main
Reviewed-on: https://gitea.com/Lerking/XtendR/pulls/29
2025-03-27 08:57:26 +00:00
Jan Lerking 34ba757bc6 Added plugin.run() with arguments. /JL 2025-03-27 09:35:29 +01:00
Lerking b5d2e1b0be Merge pull request '0.1.3 #26 bug-fix corrected variable name. /JL' (#28) from 0.1.3 into main
Reviewed-on: https://gitea.com/Lerking/XtendR/pulls/28
2025-03-09 14:28:53 +00:00
Lerking d3031952bf 0.1.3 #26 bug-fix corrected variable name. /JL 2025-03-09 15:21:08 +01:00
Lerking 3312f2da28 Merge pull request '0.1.2 #26 Added possibility to choose your own plugins folder. /JL' (#27) from 0.1.2 into main
Reviewed-on: https://gitea.com/Lerking/XtendR/pulls/27
2025-03-09 14:14:37 +00:00
Lerking a21122671d 0.1.2 #26 Added possibility to choose your own plugins folder. /JL 2025-03-09 15:06:32 +01:00
Lerking 9effa4be3e Merge pull request '0.1.1 Updated doctest. /JL' (#25) from 0.1.1 into main
Reviewed-on: https://gitea.com/Lerking/XtendR/pulls/25
2025-03-08 17:34:52 +00:00
Lerking 217038b863 0.1.1 Updated doctest. /JL 2025-03-08 18:34:04 +01:00
Lerking 8c19c4a97b Merge pull request '0.1.0 #23 Added 'Autorun' flag to XtendRSystem Attach() method. Also added a new version() method. /JL' (#24) from 0.1.0 into main
Reviewed-on: https://gitea.com/Lerking/XtendR/pulls/24
2025-03-08 17:28:27 +00:00
Lerking c7662a5d47 0.1.0 #23 Added 'Autorun' flag to XtendRSystem Attach() method. Also added a new version() method. /JL 2025-03-08 18:20:34 +01:00
Lerking 68d3aa3ed2 Merge pull request '0.0.9 build. /JL' (#22) from 0.0.9 into main
Reviewed-on: https://gitea.com/Lerking/XtendR/pulls/22
2025-03-01 20:14:52 +00:00
Lerking 2ea29fe5ea 0.0.9 build. /JL 2025-03-01 21:14:15 +01:00
Lerking 1195d399b6 Merge pull request '0.0.8 update. /JL' (#21) from 0.0.8 into main
Reviewed-on: https://gitea.com/Lerking/XtendR/pulls/21
2025-03-01 12:19:32 +00:00
Lerking b709e4d942 0.0.8 update. /JL 2025-03-01 13:18:10 +01:00
6 changed files with 36 additions and 11 deletions
+8 -3
View File
@@ -1,8 +1,13 @@
dist: dist:
python -m build python -m build
test: test:
twine upload --repository testpypi /dist twine upload --repository testpypi dist/*
publish: publish:
twine upload --repository pypi /dist twine upload --repository pypi dist/*
all:
$(dist)
$(test)
$(publish)
+5 -1
View File
@@ -16,6 +16,10 @@ if __name__ == "__main__":
""" """
system = XtendRSystem() system = XtendRSystem()
system.attach("example_plugin") # Assuming 'example_plugin/plugin_info.json' exists system.attach("example_plugin") # Assuming 'example_plugin/plugin_info.json' exists
system.run("example_plugin") system.run("example_plugin", "Hello!")
system.stop("example_plugin")
system.run("example_plugin", 25)
system.stop("example_plugin")
system.run("example_plugin", "Hello!", 25)
system.stop("example_plugin") system.stop("example_plugin")
system.detach("example_plugin") system.detach("example_plugin")
+9 -2
View File
@@ -5,12 +5,19 @@ class ExamplePlugin(XtendRBase):
Example: Example:
>>> plugin = ExamplePlugin() >>> plugin = ExamplePlugin()
>>> plugin.run() >>> plugin.run("Hello!", 25)
Passed arguments 2:
Argument 0: Hello!
Argument 1: 25
ExamplePlugin is running! ExamplePlugin is running!
>>> plugin.stop() >>> plugin.stop()
ExamplePlugin has stopped! ExamplePlugin has stopped!
""" """
def run(self): def run(self, *args):
print(f"Passed arguments {len(args)}:")
for idx, a in enumerate(args):
print(f"Argument {idx}: {a}")
print("ExamplePlugin is running!") print("ExamplePlugin is running!")
def stop(self): def stop(self):
+1 -1
View File
@@ -3,7 +3,7 @@ if __name__ == "__main__":
setup( setup(
name="XtendR", name="XtendR",
version="0.0.7", version="0.2.0",
packages=find_packages(), packages=find_packages(),
install_requires=[], install_requires=[],
author="Jan Lerking", author="Jan Lerking",
+1 -1
View File
@@ -17,7 +17,7 @@ class XtendRBase(ABC):
Stopping TestPlugin Stopping TestPlugin
""" """
@abstractmethod @abstractmethod
def run(self): def run(self, *args):
pass pass
@abstractmethod @abstractmethod
+12 -3
View File
@@ -4,11 +4,15 @@ import os
import json import json
from xtendr.xtendrbase import XtendRBase from xtendr.xtendrbase import XtendRBase
__version__ = "0.1.3"
class XtendRSystem: class XtendRSystem:
"""Plugin system to manage plugins. """Plugin system to manage plugins.
Example: Example:
>>> system = XtendRSystem() >>> system = XtendRSystem()
>>> system.version()
XtendR v0.1.3
>>> system.attach("example_plugin") # Assuming 'example_plugin/example_plugin.json' exists >>> system.attach("example_plugin") # Assuming 'example_plugin/example_plugin.json' exists
>>> system.run("example_plugin") >>> system.run("example_plugin")
ExamplePlugin is running! ExamplePlugin is running!
@@ -17,16 +21,20 @@ class XtendRSystem:
>>> system.detach("example_plugin") >>> system.detach("example_plugin")
Detached plugin 'example_plugin'. Detached plugin 'example_plugin'.
""" """
def __init__(self): def __init__(self, pluginpath = "plugins"):
self.pluginspath = pluginpath
self.plugins = {} self.plugins = {}
def version(self) -> str:
return "XtendR v" + __version__
def attach(self, name: str) -> None: def attach(self, name: str) -> None:
"""Dynamically load a plugin from its folder.""" """Dynamically load a plugin from its folder."""
if name in self.plugins: if name in self.plugins:
print(f"Plugin '{name}' is already attached.") print(f"Plugin '{name}' is already attached.")
return return
plugin_path = os.path.join(os.getcwd(), "plugins", name) plugin_path = os.path.join(os.getcwd(), self.pluginspath, name)
info_path = os.path.join(plugin_path, name + ".json") info_path = os.path.join(plugin_path, name + ".json")
print(plugin_path + "\n" + info_path) print(plugin_path + "\n" + info_path)
@@ -55,7 +63,8 @@ class XtendRSystem:
self.plugins[name] = { self.plugins[name] = {
'instance': instance, 'instance': instance,
'running': False, 'running': False,
'info': plugin_info 'info': plugin_info,
'autorun': False
} }
print(f"Attached plugin '{name}'.") print(f"Attached plugin '{name}'.")
except (ModuleNotFoundError, json.JSONDecodeError, AttributeError) as e: except (ModuleNotFoundError, json.JSONDecodeError, AttributeError) as e: