Skip to content

Commit

Permalink
Merge pull request #363 from arturponinski/support-prefix-in-environ-env
Browse files Browse the repository at this point in the history
Support prefix in environ.Env
  • Loading branch information
sergeyklay committed Jun 13, 2022
2 parents df11c28 + a99b54c commit f12fc94
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 8 deletions.
8 changes: 5 additions & 3 deletions environ/environ.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ class Env:
def __init__(self, **scheme):
self.smart_cast = True
self.escape_proxy = False
self.prefix = ""
self.scheme = scheme

def __call__(self, var, cast=None, default=NOTSET, parse_default=False):
Expand Down Expand Up @@ -344,8 +345,9 @@ def get_value(self, var, cast=None, default=NOTSET, parse_default=False):
var, cast, default
))

if var in self.scheme:
var_info = self.scheme[var]
var_name = "{}{}".format(self.prefix, var)
if var_name in self.scheme:
var_info = self.scheme[var_name]

try:
has_default = len(var_info) == 2
Expand All @@ -366,7 +368,7 @@ def get_value(self, var, cast=None, default=NOTSET, parse_default=False):
cast = var_info

try:
value = self.ENVIRON[var]
value = self.ENVIRON[var_name]
except KeyError as exc:
if default is self.NOTSET:
error_msg = "Set the {} environment variable".format(var)
Expand Down
12 changes: 7 additions & 5 deletions tests/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ class FakeEnv:
PATH = '/home/dev'
EXPORTED = 'exported var'
SAML_ATTRIBUTE_MAPPING = dict(
uid=('username', ),
mail=('email', ),
cn=('first_name', ),
sn=('last_name', )
uid=('username',),
mail=('email',),
cn=('first_name',),
sn=('last_name',)
)

@classmethod
Expand Down Expand Up @@ -82,4 +82,6 @@ def generate_data(cls):
JSON_VAR=json.dumps(cls.JSON),
PATH_VAR=cls.PATH,
EXPORTED_VAR=cls.EXPORTED,
SAML_ATTRIBUTE_MAPPING='uid=username;mail=email;cn=first_name;sn=last_name;')
SAML_ATTRIBUTE_MAPPING='uid=username;mail=email;cn=first_name;sn=last_name;',
PREFIX_TEST='foo',
)
4 changes: 4 additions & 0 deletions tests/test_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,10 @@ def test_smart_cast(self):
def test_exported(self):
assert self.env('EXPORTED_VAR') == FakeEnv.EXPORTED

def test_prefix(self):
self.env.prefix = 'PREFIX_'
assert self.env('TEST') == 'foo'


class TestFileEnv(TestEnv):
def setup_method(self, method):
Expand Down
3 changes: 3 additions & 0 deletions tests/test_env.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,6 @@ SAML_ATTRIBUTE_MAPPING="uid=username;mail=email;cn=first_name;sn=last_name;"

# Exports
export EXPORTED_VAR="exported var"

# Prefixed
PREFIX_TEST='foo'

0 comments on commit f12fc94

Please sign in to comment.