on master help sign in
Merge pull request #2397 from dalf/update-ci
59217bbAlexandre Flament
.github/workflows/integration.yml+7
@@ -22,7 +22,14 @@ jobs:
22 with:
22 with:
23 python-version: ${{ matrix.python-version }}
23 python-version: ${{ matrix.python-version }}
24 architecture: 'x64'
24 architecture: 'x64'
25+ - name: Cache Python dependencies
26+ id: cache-python
27+ uses: actions/cache@v2
28+ with:
29+ path: ./local
30+ key: python-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('requirements*.txt', 'setup.py') }}
25 - name: Install Python dependencies
31 - name: Install Python dependencies
32+ if: steps.cache-python.outputs.cache-hit != 'true'
26 run: |
33 run: |
27 make V=1 install
34 make V=1 install
28 make V=1 gecko.driver
35 make V=1 gecko.driver
searx/engines/elasticsearch.py+6−6
@@ -46,8 +46,8 @@ def _match_query(query):
46
46
47 try:
47 try:
48 key, value = query.split(':')
48 key, value = query.split(':')
49− except:
49+ except Exception as e:
50− raise ValueError('query format must be "key:value"')
50+ raise ValueError('query format must be "key:value"') from e
51
51
52 return {"query": {"match": {key: {'query': value}}}}
52 return {"query": {"match": {key: {'query': value}}}}
53
53
@@ -71,8 +71,8 @@ def _term_query(query):
71
71
72 try:
72 try:
73 key, value = query.split(':')
73 key, value = query.split(':')
74− except:
74+ except Exception as e:
75− raise ValueError('query format must be key:value')
75+ raise ValueError('query format must be key:value') from e
76
76
77 return {'query': {'term': {key: value}}}
77 return {'query': {'term': {key: value}}}
78
78
@@ -86,8 +86,8 @@ def _terms_query(query):
86
86
87 try:
87 try:
88 key, values = query.split(':')
88 key, values = query.split(':')
89− except:
89+ except Exception as e:
90− raise ValueError('query format must be key:value1,value2')
90+ raise ValueError('query format must be key:value1,value2') from e
91
91
92 return {'query': {'terms': {key: values.split(',')}}}
92 return {'query': {'terms': {key: values.split(',')}}}
93
93
searx/engines/ina.py+2−3
@@ -12,10 +12,10 @@
12# @todo embedded (needs some md5 from video page)
12# @todo embedded (needs some md5 from video page)
13
13
14from json import loads
14from json import loads
15+from html import unescape
15from urllib.parse import urlencode
16from urllib.parse import urlencode
16from lxml import html
17from lxml import html
17from dateutil import parser
18from dateutil import parser
18−from html.parser import HTMLParser
19from searx.utils import extract_text
19from searx.utils import extract_text
20
20
21
21
@@ -55,13 +55,12 @@ def response(resp):
55 if "content" not in response:
55 if "content" not in response:
56 return []
56 return []
57 dom = html.fromstring(response["content"])
57 dom = html.fromstring(response["content"])
58− p = HTMLParser()
59
58
60 # parse results
59 # parse results
61 for result in dom.xpath(results_xpath):
60 for result in dom.xpath(results_xpath):
62 videoid = result.xpath(url_xpath)[0]
61 videoid = result.xpath(url_xpath)[0]
63 url = base_url + videoid
62 url = base_url + videoid
64− title = p.unescape(extract_text(result.xpath(title_xpath)))
63+ title = unescape(extract_text(result.xpath(title_xpath)))
65 try:
64 try:
66 thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
65 thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
67 except:
66 except:
searx/settings_loader.py+2−2
@@ -24,9 +24,9 @@ def load_yaml(file_name):
24 with open(file_name, 'r', encoding='utf-8') as settings_yaml:
24 with open(file_name, 'r', encoding='utf-8') as settings_yaml:
25 return yaml.safe_load(settings_yaml)
25 return yaml.safe_load(settings_yaml)
26 except IOError as e:
26 except IOError as e:
27− raise SearxSettingsException(e, file_name)
27+ raise SearxSettingsException(e, file_name) from e
28 except yaml.YAMLError as e:
28 except yaml.YAMLError as e:
29− raise SearxSettingsException(e, file_name)
29+ raise SearxSettingsException(e, file_name) from e
30
30
31
31
32def get_default_settings_path():
32def get_default_settings_path():
searx/utils.py+2−2
@@ -522,7 +522,7 @@ def get_xpath(xpath_spec):
522 try:
522 try:
523 result = XPath(xpath_spec)
523 result = XPath(xpath_spec)
524 except XPathSyntaxError as e:
524 except XPathSyntaxError as e:
525− raise SearxXPathSyntaxException(xpath_spec, str(e.msg))
525+ raise SearxXPathSyntaxException(xpath_spec, str(e.msg)) from e
526 xpath_cache[xpath_spec] = result
526 xpath_cache[xpath_spec] = result
527 return result
527 return result
528
528
@@ -553,7 +553,7 @@ def eval_xpath(element, xpath_spec):
553 return xpath(element)
553 return xpath(element)
554 except XPathError as e:
554 except XPathError as e:
555 arg = ' '.join([str(i) for i in e.args])
555 arg = ' '.join([str(i) for i in e.args])
556− raise SearxEngineXPathException(xpath_spec, arg)
556+ raise SearxEngineXPathException(xpath_spec, arg) from e
557
557
558
558
559def eval_xpath_list(element, xpath_spec, min_len=None):
559def eval_xpath_list(element, xpath_spec, min_len=None):
searx/webadapter.py+2−2
@@ -105,8 +105,8 @@ def parse_timeout(form: Dict[str, str], raw_text_query: RawTextQuery) -> Optiona
105 return None
105 return None
106 try:
106 try:
107 return float(timeout_limit)
107 return float(timeout_limit)
108− except ValueError:
108+ except ValueError as e:
109− raise SearxParameterException('timeout_limit', timeout_limit)
109+ raise SearxParameterException('timeout_limit', timeout_limit) from e
110
110
111
111
112def parse_category_form(query_categories: List[str], name: str, value: str) -> None:
112def parse_category_form(query_categories: List[str], name: str, value: str) -> None: