diff --git a/weblate/machinery/base.py b/weblate/machinery/base.py index cac38776a9b7..71efba4a1489 100644 --- a/weblate/machinery/base.py +++ b/weblate/machinery/base.py @@ -243,9 +243,10 @@ def report_error( def supported_languages(self): """Return list of supported languages.""" # Try using list from cache - languages = cache.get(self.languages_cache) - if languages is not None: - return languages + languages_cache = cache.get(self.languages_cache) + if languages_cache is not None: + # hiredis-py 3 makes list from set + return set(languages_cache) if self.is_rate_limited(): return set() diff --git a/weblate/machinery/deepl.py b/weblate/machinery/deepl.py index 370b37bdb553..d28878037375 100644 --- a/weblate/machinery/deepl.py +++ b/weblate/machinery/deepl.py @@ -148,13 +148,16 @@ def format_replacement( def is_glossary_supported(self, source_language: str, target_language: str) -> bool: cache_key = self.get_cache_key("glossary_languages") - languages = cache.get(cache_key) - if languages is None: + languages_cache = cache.get(cache_key) + if languages_cache is not None: + # hiredis-py 3 makes list from set + languages = set(languages_cache) + else: response = self.request("get", self.get_api_url("glossary-language-pairs")) - languages = [ + languages = { (support["source_lang"].upper(), support["target_lang"].upper()) for support in response.json()["supported_languages"] - ] + } cache.set(cache_key, languages, 24 * 3600) diff --git a/weblate/machinery/openai.py b/weblate/machinery/openai.py index 89944a0ef054..9f4b41b6e195 100644 --- a/weblate/machinery/openai.py +++ b/weblate/machinery/openai.py @@ -79,8 +79,11 @@ def is_supported(self, source, language) -> bool: def get_model(self) -> str: if self._models is None: cache_key = self.get_cache_key("models") - self._models = cache.get(cache_key) - if self._models is None: + models_cache = cache.get(cache_key) + if models_cache is not None: + # hiredis-py 3 makes list from set + self._models = set(models_cache) + else: self._models = {model.id for model in self.client.models.list()} cache.set(cache_key, self._models, 3600) diff --git a/weblate/trans/views/dashboard.py b/weblate/trans/views/dashboard.py index 325090a3c3ce..90600294fd68 100644 --- a/weblate/trans/views/dashboard.py +++ b/weblate/trans/views/dashboard.py @@ -293,8 +293,11 @@ def dashboard_user(request: AuthenticatedHttpRequest): def dashboard_anonymous(request: AuthenticatedHttpRequest): """Home page of Weblate showing list of projects for anonymous user.""" - top_project_ids = cache.get("dashboard-anonymous-projects") - if top_project_ids is None: + top_project_ids_cache = cache.get("dashboard-anonymous-projects") + if top_project_ids_cache is not None: + # hiredis-py 3 makes list from set + top_project_ids = set(top_project_ids_cache) + else: top_projects = sorted( prefetch_stats(request.user.allowed_projects), key=lambda prj: -prj.stats.monthly_changes,