6from os.path
import dirname, join, abspath, isfile
71 for k, v
in user_settings.items():
72 if k
not in (
'use_default_settings',
'engines'):
73 if k
in default_settings
and isinstance(v, Mapping):
76 default_settings[k] = v
78 categories_as_tabs = user_settings.get(
'categories_as_tabs')
79 if categories_as_tabs:
80 default_settings[
'categories_as_tabs'] = categories_as_tabs
84 keep_only_engines =
None
85 use_default_settings = user_settings.get(
'use_default_settings')
86 if isinstance(use_default_settings, dict):
87 remove_engines = use_default_settings.get(
'engines', {}).get(
'remove')
88 keep_only_engines = use_default_settings.get(
'engines', {}).get(
'keep_only')
90 if 'engines' in user_settings
or remove_engines
is not None or keep_only_engines
is not None:
91 engines = default_settings[
'engines']
94 if remove_engines
is not None:
95 engines = list(filterfalse(
lambda engine: (engine.get(
'name'))
in remove_engines, engines))
98 if keep_only_engines
is not None:
99 engines = list(filter(
lambda engine: (engine.get(
'name'))
in keep_only_engines, engines))
102 user_engines = user_settings.get(
'engines')
104 engines_dict = dict((definition[
'name'], definition)
for definition
in engines)
105 for user_engine
in user_engines:
106 default_engine = engines_dict.get(user_engine[
'name'])
110 engines.append(user_engine)
113 default_settings[
'engines'] = engines
115 return default_settings