Revamp configuration management
This MR switches the INI files for configuration for TOML, which has a similar feel to INI files but has a well-defined specification, allows proper nesting (namespaces) and has types and data structures. This mitigates a lot of the fragile nature of processing config options and in particular removes the need for using eval()
at all, which is a big plus.
Configuration is now handled through a Config
class within configparser.py
which will allow us to define dataclasses with well-defined defaults for many of our configuration options, providing a path to make configuration management much simpler in various workflows (batch/stream). Just switching over has simplified much of the handling of specific variables (no casting and no need to jump through various hoops to run evalkwargs()
throughout).