Skip to content

Commit

Permalink
move set_environ to its own function to allow customization in subcla…
Browse files Browse the repository at this point in the history
…sses
  • Loading branch information
markddavidoff authored Aug 27, 2024
1 parent df301b6 commit d1ee35e
Showing 1 changed file with 22 additions and 12 deletions.
34 changes: 22 additions & 12 deletions environ/environ.py
Original file line number Diff line number Diff line change
Expand Up @@ -950,19 +950,29 @@ def _keep_escaped_format_characters(match):
else:
logger.warning('Invalid line: %s', line)

def set_environ(envval):
"""Return lambda to set environ.
Use setdefault unless overwrite is specified.
"""
if overwrite:
return lambda k, v: envval.update({k: str(v)})
return lambda k, v: envval.setdefault(k, str(v))

setenv = set_environ(cls.ENVIRON)

for key, value in overrides.items():
setenv(key, value)
self.set_environ(envval=cls.ENVIRON, key=key, value=value, overwrite=overwrite)

@staticmethod
def set_environ(envval, key, value, overwrite):
"""
set a the value for a key on envval
Use setdefault unless overwrite is specified.
:param envval:
dict of environment var data, such as an os.environ refrerence
:param str key:
enrionment var name
:param str value:
environment var value
:param bool overwrite:
default False
if true, overwrites existing environment variable values
if false, only sets evironment variable if not already set
:return: None
"""
if overwrite:
return envval.update({k: str(v)}
return envval.setdefault(k, str(v)


class FileAwareEnv(Env):
Expand Down

0 comments on commit d1ee35e

Please sign in to comment.