from ruamel.yaml import YAML import logging class YParams(): """ Yaml file parser """ def __init__(self, yaml_filename, config_name, print_params=False): self._yaml_filename = yaml_filename self._config_name = config_name self.params = {} if print_params: print("------------------ Configuration ------------------") with open(yaml_filename) as _file: for key, val in YAML().load(_file)[config_name].items(): if print_params: print(key, val) if val =='None': val = None self.params[key] = val self.__setattr__(key, val) if print_params: print("---------------------------------------------------") def __getitem__(self, key): return self.params[key] def __setitem__(self, key, val): self.params[key] = val self.__setattr__(key, val) def __contains__(self, key): return (key in self.params) def update_params(self, config): for key, val in config.items(): self.params[key] = val self.__setattr__(key, val) def log(self): logging.info("------------------ Configuration ------------------") logging.info("Configuration file: "+str(self._yaml_filename)) logging.info("Configuration name: "+str(self._config_name)) for key, val in self.params.items(): logging.info(str(key) + ' ' + str(val)) logging.info("---------------------------------------------------")