Currently, TARDIS uses the pyyaml library to parse the configuration file and a complex, custom-made validator to validate it. The issues with the configuration system in its current form are many:
- Many conversions that should be done in the parsing phase are done in the validator.
- The validator implements many concepts which are already implemented in existing validating libraries.
- The validator comes with a custom schema which adds nothing to already existing well-defined and broadly-used schemas.
- The code which processes different input models for the construction of the final Configuration object is poorly-written.
My project proposal is to improve the way the configuration system works by:
- Taking full advantage of the capabilities of pyyaml, by doing all the required type conversions in the parsing phase.
- Replacing both the validator and the schema with an existing, broadly-used library and format and using the library to the maximum extent in order to cover all the needs.
- Replacing the after-parsing code which processes different input models with a well-defined, easily extensible (with more input model formats) system.
- Documenting and testing all of the above.