summaryrefslogtreecommitdiff
path: root/searxng_extra/update/update_languages.py
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2022-01-05 19:46:00 +0100
committerGitHub <noreply@github.com>2022-01-05 19:46:00 +0100
commit160f3e022e1774f3a25a9f5e0cf36ec34976cdad (patch)
tree1f935d47da7f89298dc4882cfd875d0dea3e433e /searxng_extra/update/update_languages.py
parent9004e84b6e33c0a64fc6f4413734c9bdfdb118f6 (diff)
parent295876abaa93b8dea44dc0beaf8eb2596da69aed (diff)
Merge pull request #683 from return42/fix-doc
Document & Pylint scripts in searxng_extra/update
Diffstat (limited to 'searxng_extra/update/update_languages.py')
-rwxr-xr-xsearxng_extra/update/update_languages.py39
1 files changed, 24 insertions, 15 deletions
diff --git a/searxng_extra/update/update_languages.py b/searxng_extra/update/update_languages.py
index f37345808..754180c47 100755
--- a/searxng_extra/update/update_languages.py
+++ b/searxng_extra/update/update_languages.py
@@ -1,9 +1,17 @@
#!/usr/bin/env python
+# lint: pylint
+
# SPDX-License-Identifier: AGPL-3.0-or-later
+"""This script generates languages.py from intersecting each engine's supported
+languages.
+
+Output files: :origin:`searx/data/engines_languages.json` and
+:origin:`searx/languages.py` (:origin:`CI Update data ...
+<.github/workflows/data-update.yml>`).
+
+"""
-# This script generates languages.py from intersecting each engine's supported languages.
-#
-# Output files: searx/data/engines_languages.json and searx/languages.py
+# pylint: disable=invalid-name
import json
from pathlib import Path
@@ -24,7 +32,7 @@ languages_file = Path(searx_dir) / 'languages.py'
def fetch_supported_languages():
set_timeout_for_thread(10.0)
- engines_languages = dict()
+ engines_languages = {}
names = list(engines)
names.sort()
@@ -32,7 +40,7 @@ def fetch_supported_languages():
if hasattr(engines[engine_name], 'fetch_supported_languages'):
engines_languages[engine_name] = engines[engine_name].fetch_supported_languages()
print("fetched %s languages from engine %s" % (len(engines_languages[engine_name]), engine_name))
- if type(engines_languages[engine_name]) == list:
+ if type(engines_languages[engine_name]) == list: # pylint: disable=unidiomatic-typecheck
engines_languages[engine_name] = sorted(engines_languages[engine_name])
print("fetched languages from %s engines" % len(engines_languages))
@@ -55,7 +63,7 @@ def get_locale(lang_code):
# Join all language lists.
def join_language_lists(engines_languages):
- language_list = dict()
+ language_list = {}
for engine_name in engines_languages:
for lang_code in engines_languages[engine_name]:
@@ -91,7 +99,7 @@ def join_language_lists(engines_languages):
'name': language_name,
'english_name': english_name,
'counter': set(),
- 'countries': dict(),
+ 'countries': {},
}
# add language with country if not in list
@@ -119,6 +127,7 @@ def join_language_lists(engines_languages):
def filter_language_list(all_languages):
min_engines_per_lang = 13
min_engines_per_country = 7
+ # pylint: disable=consider-using-dict-items, consider-iterating-dictionary
main_engines = [
engine_name
for engine_name in engines.keys()
@@ -138,7 +147,7 @@ def filter_language_list(all_languages):
}
def _copy_lang_data(lang, country_name=None):
- new_dict = dict()
+ new_dict = {}
new_dict['name'] = all_languages[lang]['name']
new_dict['english_name'] = all_languages[lang]['english_name']
if country_name:
@@ -146,10 +155,10 @@ def filter_language_list(all_languages):
return new_dict
# for each language get country codes supported by most engines or at least one country code
- filtered_languages_with_countries = dict()
+ filtered_languages_with_countries = {}
for lang, lang_data in filtered_languages.items():
countries = lang_data['countries']
- filtered_countries = dict()
+ filtered_countries = {}
# get language's country codes with enough supported engines
for lang_country, country_data in countries.items():
@@ -211,7 +220,7 @@ def write_languages_file(languages):
language_codes = tuple(language_codes)
- with open(languages_file, 'w') as new_file:
+ with open(languages_file, 'w', encoding='utf-8') as new_file:
file_content = "{file_headers} {language_codes},\n)\n".format(
# fmt: off
file_headers = '\n'.join(file_headers),
@@ -224,7 +233,7 @@ def write_languages_file(languages):
if __name__ == "__main__":
load_engines(settings['engines'])
- engines_languages = fetch_supported_languages()
- all_languages = join_language_lists(engines_languages)
- filtered_languages = filter_language_list(all_languages)
- write_languages_file(filtered_languages)
+ _engines_languages = fetch_supported_languages()
+ _all_languages = join_language_lists(_engines_languages)
+ _filtered_languages = filter_language_list(_all_languages)
+ write_languages_file(_filtered_languages)