We want to move the definition of the config classes closer to the class that will use these configs.
To achieve this we simply get rid of configuration.py and move the classes into the files, where the classes are defined that use them. From a software-design perspective this is no problem (in fact is even benefitial as it increases the cohesion between the classes and their config-classes).
But from a user-perspective this is very bad, because it becomes virtually impossible for someone writing a config json to get an overview about which configurations are available.
But since all configurations are registered (with the @register decorator) this is no problem: We can create a helper script for the user, which lists all available configurations.
Todo:
[ ] decide on a name for this config-documation module
[ ] reference the config-script in the help-text of train.py (or add a CLI-Parameter to trian.py which prints the config-documentation
[ ] implement the config-documentation module
[ ] move config classes around and remove configuration.py
optional follow up issue:
[ ] prettify output of config-documation module
[ ] add comments in config-definition to output of the config-documentation module (similarly how TAP does it already)
[ ] add a script, which creates a config.json by asking the user which value to use for each parameter
We want to move the definition of the config classes closer to the class that will use these configs.
To achieve this we simply get rid of
configuration.py
and move the classes into the files, where the classes are defined that use them. From a software-design perspective this is no problem (in fact is even benefitial as it increases the cohesion between the classes and their config-classes).But from a user-perspective this is very bad, because it becomes virtually impossible for someone writing a config json to get an overview about which configurations are available.
But since all configurations are registered (with the
@register
decorator) this is no problem: We can create a helper script for the user, which lists all available configurations.Todo:
configuration.py
optional follow up issue: