From 96655cbd4ecc061eaf592f948ae2cac4192850fc Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Mon, 17 Jan 2022 11:16:11 +0100 Subject: [PATCH] [typing] add type hints to webapp.py --- searx/webapp.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index 196bfb0d..f509fea2 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -18,6 +18,7 @@ import typing from typing import List, Dict, Iterable import urllib +import urllib.parse from urllib.parse import urlencode import httpx @@ -338,7 +339,7 @@ def code_highlighter(codelines, language=None): return html_code -def get_current_theme_name(override=None): +def get_current_theme_name(override: str = None) -> str: """Returns theme name. Checks in this order: @@ -354,14 +355,14 @@ def get_current_theme_name(override=None): return theme_name -def get_result_template(theme_name, template_name): +def get_result_template(theme_name: str, template_name: str): themed_path = theme_name + '/result_templates/' + template_name if themed_path in result_templates: return themed_path return 'result_templates/' + template_name -def url_for_theme(endpoint, override_theme=None, **values): +def url_for_theme(endpoint: str, override_theme: str = None, **values): if endpoint == 'static' and values.get('filename'): theme_name = get_current_theme_name(override=override_theme) filename_with_theme = "themes/{}/{}".format(theme_name, values['filename']) @@ -371,7 +372,7 @@ def url_for_theme(endpoint, override_theme=None, **values): return url -def proxify(url): +def proxify(url: str): if url.startswith('//'): url = 'https:' + url @@ -386,7 +387,7 @@ def proxify(url): return '{0}?{1}'.format(settings['result_proxy']['url'], urlencode(url_params)) -def image_proxify(url): +def image_proxify(url: str): if url.startswith('//'): url = 'https:' + url @@ -422,7 +423,7 @@ def get_translations(): } -def _get_enable_categories(all_categories): +def _get_enable_categories(all_categories: Iterable[str]): disabled_engines = request.preferences.engines.get_disabled() enabled_categories = set( # pylint: disable=consider-using-dict-items @@ -434,14 +435,14 @@ def _get_enable_categories(all_categories): return [x for x in all_categories if x in enabled_categories] -def get_pretty_url(parsed_url): +def get_pretty_url(parsed_url: urllib.parse.ParseResult): path = parsed_url.path path = path[:-1] if len(path) > 0 and path[-1] == '/' else path path = path.replace("/", " › ") return [parsed_url.scheme + "://" + parsed_url.netloc, path] -def render(template_name, override_theme=None, **kwargs): +def render(template_name: str, override_theme: str = None, **kwargs): # values from the HTTP requests kwargs['endpoint'] = 'results' if 'q' in kwargs else request.endpoint kwargs['cookies'] = request.cookies @@ -569,7 +570,7 @@ def pre_request(): @app.after_request -def add_default_headers(response): +def add_default_headers(response: flask.Response): # set default http headers for header, value in settings['server']['default_http_headers'].items(): if header in response.headers: @@ -579,7 +580,7 @@ def add_default_headers(response): @app.after_request -def post_request(response): +def post_request(response: flask.Response): total_time = default_timer() - request.start_time timings_all = [ 'total;dur=' + str(round(total_time * 1000, 3)), @@ -600,7 +601,7 @@ def post_request(response): return response -def index_error(output_format, error_message): +def index_error(output_format: str, error_message: str): if output_format == 'json': return Response(json.dumps({'error': error_message}), mimetype='application/json') if output_format == 'csv': @@ -1074,7 +1075,7 @@ def preferences(): ) -def _is_selected_language_supported(engine, preferences): # pylint: disable=redefined-outer-name +def _is_selected_language_supported(engine, preferences: Preferences): # pylint: disable=redefined-outer-name language = preferences.get_value('language') if language == 'all': return True