Allows value setting to work when checking if setting variable is within
a list, i.e: settings.database in ['default', 'other']
Signed-off-by: Jannis Leidel <jannis@leidel.info>
When assigning False to a BooleanValue and reusing it was raising a
ValueError exception because BooleanValue was evaluating False as None.
Thanks to @abbottc for catching this error.
- this enables a value to load from environment if the env variable name is given at construction time
- cache value of environment value now in property value
- add __new__ to allow a construction of a given type from environment directly. In this case now Value instance is constructed but an instance of the desired type that is covered by the Value implementation. For Value it is str, for DictValue it is dict etc.
- extend tests for this new behavior
- extend test coverage for some other places