Plugins¶
Nodes come from plugins. noodlelab ships with its own (units, uncertainty, maths, science, engineering, geo, machine learning…), and anyone can write more and publish them from a git repository, without asking anyone.
A plugin is an ordinary Python package with:
a
noodlelab.nodesentry point, whose name prefixes its node ids (thermo.rankine_cycle);a manifest,
noodlelab-plugin.toml, that names it, states the plugin API it was written for, the other plugins it needs and what it does besides computing;code that uses noodlelab only through
noodlelab.plugin, the public API.
Plugins are versioned as a whole, with git tags (v1.4.2, semantic
versioning). A plugin can require others (requires = { maths = ">=1.2,<2" }):
adding it adds them. Every run’s provenance records each plugin’s version and
the git commit it was built from, and every saved graph records the plugins it
needs, so it can be opened elsewhere with the same code.
Installing plugins: in the admin portal, on the command line, in Python and from agents
Writing a plugin: the standard, the manifest and the public API
Publishing a plugin: versions, signed releases and indexes
Security: what protects you from a harmful plugin, and what does not