[Feature] PEPPER in enviPath (#332)

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#332
This commit is contained in:
2026-03-06 22:11:22 +13:00
parent 6e00926371
commit c6ff97694d
43 changed files with 3793 additions and 371 deletions

View File

@ -45,13 +45,14 @@ def discover_plugins(_cls: Type = None) -> Dict[str, Type]:
plugins = {}
# Load plugins dropped to plugin dir
for entry_point in importlib.metadata.entry_points(group="enviPy_plugins"):
try:
plugin_class = entry_point.load()
if _cls:
if issubclass(plugin_class, _cls):
instance = plugin_class()
plugins[instance.name()] = instance
plugins[instance.identifier()] = instance
else:
if (
issubclass(plugin_class, Classifier)
@ -59,9 +60,17 @@ def discover_plugins(_cls: Type = None) -> Dict[str, Type]:
or issubclass(plugin_class, Property)
):
instance = plugin_class()
plugins[instance.name()] = instance
plugins[instance.identifier()] = plugin_class
except Exception as e:
print(f"Error loading plugin {entry_point.name}: {e}")
# load direct modules
for plugin_module in s.BASE_PLUGINS:
module_path, class_name = plugin_module.rsplit(".", 1)
module = importlib.import_module(module_path)
plugin_class = getattr(module, class_name)
instance = plugin_class()
plugins[instance.identifier()] = plugin_class
return plugins