From 8f8343dc0d78bb57215afc3e99fd9000fce6e0cf Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Thu, 11 Sep 2025 19:10:27 +0200 Subject: [mod] addition of various type hints / engine processors Continuation of #5147 .. typification of the engine processors. BTW: - removed obsolete engine property https_support - fixed & improved currency_convert - engine instances can now implement a engine.setup method [#5147] https://github.com/searxng/searxng/pull/5147 Signed-off-by: Markus Heiser --- searx/data/currencies.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'searx/data/currencies.py') diff --git a/searx/data/currencies.py b/searx/data/currencies.py index 3378a5022..a328789e3 100644 --- a/searx/data/currencies.py +++ b/searx/data/currencies.py @@ -1,22 +1,23 @@ # SPDX-License-Identifier: AGPL-3.0-or-later """Simple implementation to store currencies data in a SQL database.""" - __all__ = ["CurrenciesDB"] +import typing as t import json import pathlib from .core import get_cache, log +@t.final class CurrenciesDB: # pylint: disable=missing-class-docstring - ctx_names = "data_currencies_names" - ctx_iso4217 = "data_currencies_iso4217" + ctx_names: str = "data_currencies_names" + ctx_iso4217: str = "data_currencies_iso4217" - json_file = pathlib.Path(__file__).parent / "currencies.json" + json_file: pathlib.Path = pathlib.Path(__file__).parent / "currencies.json" def __init__(self): self.cache = get_cache() @@ -33,23 +34,27 @@ class CurrenciesDB: def load(self): log.debug("init searx.data.CURRENCIES") with open(self.json_file, encoding="utf-8") as f: - data_dict = json.load(f) + data_dict: dict[str, dict[str, str]] = json.load(f) for key, value in data_dict["names"].items(): self.cache.set(key=key, value=value, ctx=self.ctx_names, expire=None) for key, value in data_dict["iso4217"].items(): self.cache.set(key=key, value=value, ctx=self.ctx_iso4217, expire=None) - def name_to_iso4217(self, name): + def name_to_iso4217(self, name: str) -> str | None: self.init() - ret_val = self.cache.get(key=name, default=name, ctx=self.ctx_names) + ret_val: str | list[str] | None = self.cache.get(key=name, default=None, ctx=self.ctx_names) if isinstance(ret_val, list): # if more alternatives, use the last in the list ret_val = ret_val[-1] return ret_val - def iso4217_to_name(self, iso4217, language): + def iso4217_to_name(self, iso4217: str, language: str) -> str | None: self.init() - iso4217_languages: dict = self.cache.get(key=iso4217, default={}, ctx=self.ctx_iso4217) - return iso4217_languages.get(language, iso4217) + iso4217_languages: dict[str, str] = self.cache.get(key=iso4217, default={}, ctx=self.ctx_iso4217) + return iso4217_languages.get(language) + + def is_iso4217(self, iso4217: str) -> bool: + item = self.cache.get(key=iso4217, default={}, ctx=self.ctx_iso4217) + return bool(item) -- cgit v1.2.3