Plugin interface improvements: load config schemas from plugins
This allows config schemas to use a special URI schema called dnadna-plugin:
to reference config schemas provided by plugins.
This also allows customization of the schemas used to check a whole class of plugins. For example, you can see in training.yml
it now references {"$ref": "dnadna-plugin:network"}
.
This loads a schema generated by the Network
interface which checks that network_name
is one of the known Networks (including those loaded from plugins), and that its net_params
conform to the configuration schema for that network (if any; it can still be omitted as before).
This provides a powerful mechanism by which plugins can extend the configuration system and config file formats.
It will be useful for #48 since it will allow the configuration wizard to take the user through the correct options depending on what network they want to use, for example.
This MR is built on top of !66 (merged) which should be merged first.