The lsst.pipe.base.ConfigOverrides class provides a centralized location for config-handling functionality that was previously integrated into the Gen 2 CmdLineTask. However, it provides much poorer diagnostics than the code it replaces. In particular:
- errors in config files are propagated upward as the original error from executing the config code; information about which file is the problem is lost.
- errors in field-value pairs give different messages depending on whether the field name has a ".". These messages are not equally informative:
- errors in field-value pairs report the config field under most circumstances, but not on the branch that uses literal_eval
- I can't test the Python override, but like the config file, it seems to only report the exception and not the code that triggered it.
- errors in instrument config files, like those in user-specified config files, do not report which file contained the error.
Add exception handling to lsst.pipe.base.ConfigOverrides and lsst.obs.base.Instrument that gives the user enough information to figure out what is causing config problems.