Source code for daisy.context

import copy
import logging
import os

logger = logging.getLogger(__name__)


[docs]class Context(): ENV_VARIABLE = 'DAISY_CONTEXT' def __init__(self, **kwargs): self.__dict = dict(**kwargs) def copy(self): return copy.deepcopy(self) def to_env(self): return ':'.join('%s=%s' % (k, v) for k, v in self.__dict.items()) def __setitem__(self, k, v): k = str(k) v = str(v) if '=' in k or ':' in k: raise RuntimeError("Context variables must not contain = or :.") if '=' in v or ':' in v: raise RuntimeError("Context values must not contain = or :.") self.__dict[k] = v def __getitem__(self, k): return self.__dict[k] def get(self, k, v=None): return self.__dict.get(k, v) def __repr__(self): return self.to_env() @staticmethod def from_env(): try: tokens = os.environ[Context.ENV_VARIABLE].split(':') except KeyError: logger.error( "%s environment variable not found!", Context.ENV_VARIABLE) raise context = Context() for token in tokens: k, v = token.split('=') context[k] = v return context