summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2020-12-20 09:51:24 +0100
committerGitHub <noreply@github.com>2020-12-20 09:51:24 +0100
commit59217bb5bed86926b2bbd84f406ed022b0762c6e (patch)
treed65eb74cbe46be6813afdf9907de5941cbbb9a4d
parent04447f8c1a32aa2d1a2209d0a120ce04435c1346 (diff)
parent3f8ebf70b193f4391a01d7412324a10e4faa56a2 (diff)
downloadsearxng-59217bb5bed86926b2bbd84f406ed022b0762c6e.tar.gz
searxng-59217bb5bed86926b2bbd84f406ed022b0762c6e.zip
Merge pull request #2397 from dalf/update-ci
updates for Python 3.9 / update CI
-rw-r--r--.github/workflows/integration.yml7
-rw-r--r--searx/engines/elasticsearch.py12
-rw-r--r--searx/engines/ina.py5
-rw-r--r--searx/settings_loader.py4
-rw-r--r--searx/utils.py4
-rw-r--r--searx/webadapter.py4
6 files changed, 21 insertions, 15 deletions
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
index 1ba077ad3..cff8854b9 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -22,7 +22,14 @@ jobs:
with:
python-version: ${{ matrix.python-version }}
architecture: 'x64'
+ - name: Cache Python dependencies
+ id: cache-python
+ uses: actions/cache@v2
+ with:
+ path: ./local
+ key: python-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('requirements*.txt', 'setup.py') }}
- name: Install Python dependencies
+ if: steps.cache-python.outputs.cache-hit != 'true'
run: |
make V=1 install
make V=1 gecko.driver
diff --git a/searx/engines/elasticsearch.py b/searx/engines/elasticsearch.py
index 081736c1c..0e2d35756 100644
--- a/searx/engines/elasticsearch.py
+++ b/searx/engines/elasticsearch.py
@@ -46,8 +46,8 @@ def _match_query(query):
try:
key, value = query.split(':')
- except:
- raise ValueError('query format must be "key:value"')
+ except Exception as e:
+ raise ValueError('query format must be "key:value"') from e
return {"query": {"match": {key: {'query': value}}}}
@@ -71,8 +71,8 @@ def _term_query(query):
try:
key, value = query.split(':')
- except:
- raise ValueError('query format must be key:value')
+ except Exception as e:
+ raise ValueError('query format must be key:value') from e
return {'query': {'term': {key: value}}}
@@ -86,8 +86,8 @@ def _terms_query(query):
try:
key, values = query.split(':')
- except:
- raise ValueError('query format must be key:value1,value2')
+ except Exception as e:
+ raise ValueError('query format must be key:value1,value2') from e
return {'query': {'terms': {key: values.split(',')}}}
diff --git a/searx/engines/ina.py b/searx/engines/ina.py
index 52c939498..ce241d409 100644
--- a/searx/engines/ina.py
+++ b/searx/engines/ina.py
@@ -12,10 +12,10 @@
# @todo embedded (needs some md5 from video page)
from json import loads
+from html import unescape
from urllib.parse import urlencode
from lxml import html
from dateutil import parser
-from html.parser import HTMLParser
from searx.utils import extract_text
@@ -55,13 +55,12 @@ def response(resp):
if "content" not in response:
return []
dom = html.fromstring(response["content"])
- p = HTMLParser()
# parse results
for result in dom.xpath(results_xpath):
videoid = result.xpath(url_xpath)[0]
url = base_url + videoid
- title = p.unescape(extract_text(result.xpath(title_xpath)))
+ title = unescape(extract_text(result.xpath(title_xpath)))
try:
thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
except:
diff --git a/searx/settings_loader.py b/searx/settings_loader.py
index 5dbeb4a9a..e7126aa89 100644
--- a/searx/settings_loader.py
+++ b/searx/settings_loader.py
@@ -24,9 +24,9 @@ def load_yaml(file_name):
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)
+ raise SearxSettingsException(e, file_name) from e
except yaml.YAMLError as e:
- raise SearxSettingsException(e, file_name)
+ raise SearxSettingsException(e, file_name) from e
def get_default_settings_path():
diff --git a/searx/utils.py b/searx/utils.py
index 057e9d004..3172ad8f3 100644
--- a/searx/utils.py
+++ b/searx/utils.py
@@ -522,7 +522,7 @@ def get_xpath(xpath_spec):
try:
result = XPath(xpath_spec)
except XPathSyntaxError as e:
- raise SearxXPathSyntaxException(xpath_spec, str(e.msg))
+ raise SearxXPathSyntaxException(xpath_spec, str(e.msg)) from e
xpath_cache[xpath_spec] = result
return result
@@ -553,7 +553,7 @@ def eval_xpath(element, xpath_spec):
return xpath(element)
except XPathError as e:
arg = ' '.join([str(i) for i in e.args])
- raise SearxEngineXPathException(xpath_spec, arg)
+ raise SearxEngineXPathException(xpath_spec, arg) from e
def eval_xpath_list(element, xpath_spec, min_len=None):
diff --git a/searx/webadapter.py b/searx/webadapter.py
index 0ad82c62c..ca2604c3e 100644
--- a/searx/webadapter.py
+++ b/searx/webadapter.py
@@ -105,8 +105,8 @@ def parse_timeout(form: Dict[str, str], raw_text_query: RawTextQuery) -> Optiona
return None
try:
return float(timeout_limit)
- except ValueError:
- raise SearxParameterException('timeout_limit', timeout_limit)
+ except ValueError as e:
+ raise SearxParameterException('timeout_limit', timeout_limit) from e
def parse_category_form(query_categories: List[str], name: str, value: str) -> None: