pypa-hatch/hatch/utils/structures.py

35 lines
967 B
Python

import os
from fnmatch import fnmatch
class EnvVars(dict):
def __init__(self, env_vars=None, include=None, exclude=None):
super(EnvVars, self).__init__(os.environ)
self.old_env = dict(self)
if include:
self.clear()
for env_var, value in self.old_env.items():
for pattern in include:
if fnmatch(env_var, pattern):
self[env_var] = value
break
if exclude:
for env_var in list(self):
for pattern in exclude:
if fnmatch(env_var, pattern):
self.pop(env_var)
break
if env_vars:
self.update(env_vars)
def __enter__(self):
os.environ.clear()
os.environ.update(self)
def __exit__(self, exc_type, exc_value, traceback):
os.environ.clear()
os.environ.update(self.old_env)