129 for k, v
in user_settings.items():
130 if k
not in (
'use_default_settings',
'engines'):
131 if k
in default_settings
and isinstance(v, Mapping):
134 default_settings[k] = v
136 categories_as_tabs = user_settings.get(
'categories_as_tabs')
137 if categories_as_tabs:
138 default_settings[
'categories_as_tabs'] = categories_as_tabs
140 plugins = user_settings.get(
'plugins')
141 if plugins
is not None:
142 default_settings[
'plugins'] = plugins
145 remove_engines =
None
146 keep_only_engines =
None
147 use_default_settings = user_settings.get(
'use_default_settings')
148 if isinstance(use_default_settings, dict):
149 remove_engines = use_default_settings.get(
'engines', {}).get(
'remove')
150 keep_only_engines = use_default_settings.get(
'engines', {}).get(
'keep_only')
152 if 'engines' in user_settings
or remove_engines
is not None or keep_only_engines
is not None:
153 engines = default_settings[
'engines']
156 if remove_engines
is not None:
157 engines = list(filterfalse(
lambda engine: (engine.get(
'name'))
in remove_engines, engines))
160 if keep_only_engines
is not None:
161 engines = list(filter(
lambda engine: (engine.get(
'name'))
in keep_only_engines, engines))
164 user_engines = user_settings.get(
'engines')
166 engines_dict = dict((definition[
'name'], definition)
for definition
in engines)
167 for user_engine
in user_engines:
168 default_engine = engines_dict.get(user_engine[
'name'])
172 engines.append(user_engine)
175 default_settings[
'engines'] = engines
177 return default_settings
193 """Function for loading the settings of the SearXNG application
194 (:ref:`settings.yml <searxng settings.yml>`)."""
196 msg = f
"load the default settings from {DEFAULT_SETTINGS_FILE}"
200 if not load_user_settings
or not cfg_folder:
203 settings_yml = os.environ.get(
"SEARXNG_SETTINGS_PATH")
204 if settings_yml
and Path(settings_yml).is_file():
206 settings_yml = Path(settings_yml).name
209 settings_yml = SETTINGS_YAML
211 cfg_file = cfg_folder / settings_yml
212 if not cfg_file.exists():
215 msg = f
"load the user settings from {cfg_file}"
220 msg = f
"merge the default settings ( {DEFAULT_SETTINGS_FILE} ) and the user settings ( {cfg_file} )"