From 6402fb0b9a725f8f2c78874e537f21144c44f0e4 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Thu, 17 Dec 2020 08:36:40 +0100 Subject: [PATCH 1/3] [enh] CI: use actions/cache@v2 for Python dependencies --- .github/workflows/integration.yml | 7 +++++++ 1 file changed, 7 insertions(+) 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 From eb33ae6893ef9d5081b1ddd1119e7047642a40af Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Thu, 17 Dec 2020 09:57:03 +0100 Subject: [PATCH 2/3] [fix] Python 3.9: use html.unescape instead of HTMLParser.unescape --- searx/engines/ina.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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: From 3f8ebf70b193f4391a01d7412324a10e4faa56a2 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Thu, 17 Dec 2020 09:57:57 +0100 Subject: [PATCH 3/3] [fix] pylint: use "raise ... from ..." --- searx/engines/elasticsearch.py | 12 ++++++------ searx/settings_loader.py | 4 ++-- searx/utils.py | 4 ++-- searx/webadapter.py | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) 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/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: