Plugins¶
CADDForge tools are discovered as plugins. The core package defines the interfaces; tool packages register implementations.
Plugin packages typically provide:
- a validated config class
- a workflow class
- a
Toolimplementation - Python entry points under
caddforge.tools - optional GUI extensions
- optional pipeline input and output ports
Example entry point group:
The core CLI uses these entry points to resolve commands such as:
Python automation should use the same plugin contract instead of importing tool-internal config and workflow classes directly:
from caddforge.core.execution import load_result_for_job, submit_workflow
from caddforge.plugins import get_tool
spec = get_tool("docking", "unidock")
cfg = spec.config_cls.from_yaml("unidock.yaml")
workflow = spec.workflow_cls(cfg)
job = submit_workflow(
workflow, cfg, backend_name=cfg.backend,
input_ports=tuple(getattr(spec.plugin, "input_ports", ())),
)
result = load_result_for_job(job)
Forward spec.plugin.input_ports to submission so core can stage declared compressed
inputs before the scientific workflow runs. The CLI and pipeline executor already
forward these contracts. Keep original compressed paths in the submitted configuration;
core manages temporary expanded files.
Core code must not hardcode specific tool names.