in covid19_spread/lib/context_managers.py [0:0]
def env_var(key_vals: tp.Dict[str, tp.Union[str, None]]):
"""
Context manager for manipulating environment variables. Environment is restored
upon exiting the context manager
Params:
key_vals - mapping of environment variables to their values. Of a value is
`None`, then it is deleted from the environment.
"""
old_dict = {k: os.environ.get(k, None) for k in key_vals.keys()}
for k, v in key_vals.items():
if v is None:
if k in os.environ:
del os.environ[k]
else:
os.environ[k] = v
yield
for k, v in old_dict.items():
if v:
os.environ[k] = v
elif k in os.environ:
del os.environ[k]