Introduction (start here)

configman is a package that paves over the differences between various configuration methods to achieve a smooth road of cooperation between them.

We use it here at Mozilla to tie together all the different scripts and programs in Socorro.

The modules typically used for configuration in Python applications have inconsistent APIs. You cannot simply swap getopt for argparse and neither of them will do anything at all with configuration files like ini or json. And if applications do work with some configuration file of choice it usually doesn’t support rich types such as classes, functions and Python types that aren’t built in.

For example, it is possible with configman to define configuration in json and then automatically have ini file and command line support. Further, configman enables configuration values to be dynamically loaded Python objects, functions, classes or modules. These dynamically loaded values can, in turn, pull in more configuration definitions and more dynamic loading. This enables configman to offer configurable plugins for nearly any aspect of a Python application.