--- a/envconfig2.py Mon Sep 19 23:30:35 2016 -0500
+++ b/envconfig2.py Wed Sep 21 21:21:12 2016 -0500
@@ -24,51 +24,69 @@
-def use_default(name, required):
- if name not in os.environ:
- msg = 'required environmnet variable {} not set'.format(name)
+def find_variable(name, required): + names.append('{}_{}'.format(prefix, name))
+ if not prefix_required:
+ msg = 'required environment variable {} not set'.format(name)
def boolean(name, default=None, required=False):
- if use_default(name, required):
+ var = find_variable(name, required) - val = os.environ[name].lower().strip()
+ val = os.environ[var].lower().strip() return val in ['1', 't', 'true', 'y', 'yes']
def integer(name, default=None, required=False):
- if use_default(name, required):
+ var = find_variable(name, required) - return int(os.environ[name])
+ return int(os.environ[var]) def string(name, default=None, required=False):
- if use_default(name, required):
+ var = find_variable(name, required) - return os.environ[name]
def list(name, separator=',', default=None, required=False):
- if use_default(name, required):
+ var = find_variable(name, required) - return [item.strip() for item in os.environ[name].split(separator)]
+ return [item.strip() for item in os.environ[var].split(separator)] def json(name, default=None, required=False):
- if use_default(name, required):
+ var = find_variable(name, required) - return realjson.loads(os.environ[name])
+ return realjson.loads(os.environ[var]) --- a/tests/test_envconfig2.py Mon Sep 19 23:30:35 2016 -0500
+++ b/tests/test_envconfig2.py Wed Sep 21 21:21:12 2016 -0500
@@ -184,3 +184,63 @@
assert envconfig2.json('JSON') == {'foo': 'bar'}
+ envconfig2.prefix = 'TEST' + assert envconfig2.string('FOO') == 'ABC' + envconfig2.prefix = None +def test_prefix_required_not_set(): + envconfig2.prefix = 'TEST' + envconfig2.prefix_required = True + assert envconfig2.string('BAR') is None + assert envconfig2.string('FOO') is None + envconfig2.prefix = None + envconfig2.prefix_required = False +def test_prefix_required_set(): + envconfig2.prefix = 'TEST' + envconfig2.prefix_required = True + assert envconfig2.string('FOO') == 'ABC' + assert envconfig2.string('BAR') == '123' + envconfig2.prefix = None + envconfig2.prefix_required = False +def test_prefix_prefered(): + envconfig2.prefix = 'TEST' + assert envconfig2.string('FOO') == '123' + envconfig2.prefix = None