@@ -28,7 +28,9 @@ from searx.external_bang import get_bang_url
2828from searx.results import ResultContainer
2929from searx import logger
3030from searx.plugins import plugins
31+from searx.search.models import EngineRef, SearchQuery
3132from searx.search.processors import processors, initialize as initialize_processors
33+from searx.search.checker import initialize as initialize_checker
3234
3335
3436logger = logger.getChild('search')
@@ -45,75 +47,11 @@ else:
4547 sys.exit(1)
4648
4749
48−def initialize(settings_engines=None):
50+def initialize(settings_engines=None, enable_checker=False):
4951 settings_engines = settings_engines or settings['engines']
5052 initialize_processors(settings_engines)
51−
52−
53−class EngineRef:
54−
55− __slots__ = 'name', 'category'
56−
57− def __init__(self, name: str, category: str):
58− self.name = name
59− self.category = category
60−
61− def __repr__(self):
62− return "EngineRef({!r}, {!r})".format(self.name, self.category)
63−
64− def __eq__(self, other):
65− return self.name == other.name and self.category == other.category
66−
67− def __hash__(self):
68− return hash((self.name, self.category))
69−
70−
71−class SearchQuery:
72− """container for all the search parameters (query, language, etc...)"""
73−
74− __slots__ = 'query', 'engineref_list', 'lang', 'safesearch', 'pageno', 'time_range',\
75− 'timeout_limit', 'external_bang'
76−
77− def __init__(self,
78− query: str,
79− engineref_list: typing.List[EngineRef],
80− lang: str='all',
81− safesearch: int=0,
82− pageno: int=1,
83− time_range: typing.Optional[str]=None,
84− timeout_limit: typing.Optional[float]=None,
85− external_bang: typing.Optional[str]=None):
86− self.query = query
87− self.engineref_list = engineref_list
88− self.lang = lang
89− self.safesearch = safesearch
90− self.pageno = pageno
91− self.time_range = time_range
92− self.timeout_limit = timeout_limit
93− self.external_bang = external_bang
94−
95− @property
96− def categories(self):
97− return list(set(map(lambda engineref: engineref.category, self.engineref_list)))
98−
99− def __repr__(self):
100− return "SearchQuery({!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r})".\
101− format(self.query, self.engineref_list, self.lang, self.safesearch,
102− self.pageno, self.time_range, self.timeout_limit, self.external_bang)
103−
104− def __eq__(self, other):
105− return self.query == other.query\
106− and self.engineref_list == other.engineref_list\
107− and self.lang == other.lang\
108− and self.safesearch == other.safesearch\
109− and self.pageno == other.pageno\
110− and self.time_range == other.time_range\
111− and self.timeout_limit == other.timeout_limit\
112− and self.external_bang == other.external_bang
113−
114− def __hash__(self):
115− return hash((self.query, tuple(self.engineref_list), self.lang, self.safesearch, self.pageno, self.time_range,
116− self.timeout_limit, self.external_bang))
53+ if enable_checker:
54+ initialize_checker()
11755
11856
11957class Search: