def _load_data_from_spec(self, text): try: return yaml.load(text, Loader=yaml.BaseLoader) except Exception as e: log.warning(f"Failed to load temporary meetings from '{text}'") log.exception(e) return None
def parse_timedelta(config): args = {k: int(v) for (k, v) in config.items()} try: delta = datetime.timedelta(**args) except TypeError as e: log.expected("valid arguments", "time delta", args) log.exception(e) return datetime.timedelta() else: return delta
def _do_apply(self, data): try: self._apply(data) except KeyError as e: log.warning(f"Failed to apply action '{data}'," f" missing attribute '{e}'.") except Exception as e: log.warning(f"Failed to apply action '{data}'.") log.exception(e) finally: return data
def apply_action(self, entry): """Try to apply action and log errors.""" call = self._determine_action(entry) try: call(entry) except KeyError as e: log.warning( f"Failed to apply action '{entry}'," f" missing attribute {e}." ) except Exception as e: log.warning(f"Failed to apply action '{entry}'.") log.exception(e)
def _load_data_from_file(self, filename): """Try to load data from YAML file, return empty dictionary on failure. """ try: with open(filename) as file: return yaml.load(file, Loader=yaml.BaseLoader) except FileNotFoundError as e: self._loaded_paths.fail_on(filename, "does not exist") log.warning(f"Meeting file '{filename}' does not exist.") log.exception(e, warn=False) return None except Exception as e: self._loaded_paths.fail_on(filename, "failed to parse") log.warning(f"Failed to load meetings from '{filename}'") log.exception(e) return None
def _load(self): status = "FAILED" config = {} try: with open(self._path) as cfile: config = yaml.load(cfile, Loader=yaml.BaseLoader) assert isinstance(config, dict) except FileNotFoundError: if self._required: log.warning(f"Cannot find configuration '{self.description}'.") else: log.warning(f"No configuration '{self.description}'.") except Exception as e: log.warning(f"Cannot read {self.description} configuration.") log.exception(e) else: status = "successful" finally: log.info(f"Load configuration '{self.description}': {status}") return config