Better validation for loaded YAML
Currently we have very good validation for the YAML that we do load, but no validation on the YAML that we don't load.
For the YAML that we do load, if ever the reported data is an incorrect type, or if a mandatory member is missing; we raise an exception with the filename and line, column information of where things went wrong, and this is nicely reported to the user.
What we should additionally be doing is have a method for validating dictionary nodes and ensuring that no unexpected members are encountered, it should take a list of strings to check for loaded dictionary keys and raise an exception with the filename, line and column information for where any unexpected dictionary members were declared.
This should have a base implementation in _yaml.py
which the _loader.py
can use for validation of the base format; additionally an API should be exposed in plugin.py
for Element and Source plugins to use at plugin->configure()
time to assert a correct configuration.