mozilla/configman — pull request #67 by twobraids (2013-02-14 15:25:17+00:00)
Title: gutted and restuffed

This PR is an experiment that went very very well, but for now is just proof of concept.

remember all those recursive overlays and expansions that happened three times during the instantiation of a ConfigurationManager? Well, they're gone - replaced with a single function that does iteratively does overlays and expansions on only precisely the Options that need it. There is no more of instantiation of objects only to have them thrown away as a new overlay is added.

What prompted this change. In my work with Raspberry Pi, I realized the burden of loading unnecessary dependencies. For example, Raspberry Pi didn't use Postgres, but it had to still be in the code base because it was a default in Socorro. Even if specified as a string, Configman would load it and then not use it.

This new version doesn't apply the `from_string_converter` to any option until after the overlaying of values from value sources is done. Only then are the Option values created by applying the `from_string_converter`.

This makes configman startup in less than half the time of the previous codebase. It simplifies the code to make it easier to understand.