def load_yaml(file_name): try: with open(file_name, 'r', encoding='utf-8') as settings_yaml: return yaml.safe_load(settings_yaml) except IOError as e: raise SearxSettingsException(e, file_name) except yaml.YAMLError as e: raise SearxSettingsException(e, file_name)
def load_settings(load_user_setttings=True): default_settings_path = get_default_settings_path() user_settings_path = get_user_settings_path() # no user settings if user_settings_path is None or not load_user_setttings: if default_settings_path is None: raise SearxSettingsException( 'missing default settings.yml file and there is no user configured file.\n' 'Please create a configuration file and put it under the root of searx or in /etc/searx or' 'configure the path in SEARX_SETTINGS_PATH.', None, ) return ( load_yaml(default_settings_path), 'load the default settings from {}'.format(default_settings_path)) # user settings user_settings = load_yaml(user_settings_path) if is_use_default_settings(user_settings): # the user settings are merged with the default configuration default_settings = load_yaml(default_settings_path) update_settings(default_settings, user_settings) return ( default_settings, 'merge the default settings ( {} ) and the user setttings ( {} )'. format(default_settings_path, user_settings_path)) # the user settings, fully replace the default configuration return (user_settings, 'load the user settings from {}'.format(user_settings_path))
def _get_interval(every, error_msg): if isinstance(every, int): every = (every, every) if not isinstance(every, (tuple, list))\ or len(every) != 2\ or not isinstance(every[0], int)\ or not isinstance(every[1], int): raise SearxSettingsException(error_msg, None) return every