Features:
- Internal class with (hopefully) reasonable defaults. Stored in config_defaults.py
- Support for config profiles - development (default), production and testing. Testing profile is automatically set up when running the test suite and doesn't touch the disk. You can change the profile either in the config file, or using an envvar TASKOTRON_PROFILE (having preference).
- External config file in YAML syntax. Everything is commented out by default, and if you uncomment it, it overrides the default values (regardless of chosen profile). The config file documentation reflects default _production_ values, the default development values are to be seen in config_defaults.py. The config file is searched for in /etc/taskotron and local checkout dir. All option values are checked for type correctness on parsing.
- Config instance is not created on import, only on get_config() function call. This allows to import the module without any disk access and simplifies testing.
Bring on your critique!
I wonder if we shouldn't have reporting disabled by default since that'll be the config that people are using to poke at taskotron