[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

@ -24,7 +24,6 @@ from epdb.models import (
Node,
ParallelRule,
Pathway,
PluginModel,
Reaction,
Rule,
RuleBasedRelativeReasoning,
@ -427,8 +426,6 @@ class PackageExporter:
model_dict["model_type"] = "MLRelativeReasoning"
elif isinstance(model, EnviFormer):
model_dict["model_type"] = "EnviFormer"
elif isinstance(model, PluginModel):
model_dict["model_type"] = "PluginModel"
else:
model_dict["model_type"] = "EPModel"
@ -952,8 +949,6 @@ class PackageImporter:
model = MLRelativeReasoning.objects.create(**common_fields)
elif model_type == "EnviFormer":
model = EnviFormer.objects.create(**common_fields)
elif model_type == "PluginModel":
model = PluginModel.objects.create(**common_fields)
else:
model = EPModel.objects.create(**common_fields)

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