Skip to content

Commit

Permalink
chore: convert cache returned values to set
Browse files Browse the repository at this point in the history
This might be discarded in some cases (see
redis/hiredis-py#189).
  • Loading branch information
nijel committed Jul 19, 2024
1 parent 5b42434 commit 9e1ba1c
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 11 deletions.
7 changes: 4 additions & 3 deletions weblate/machinery/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
11 changes: 7 additions & 4 deletions weblate/machinery/deepl.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
7 changes: 5 additions & 2 deletions weblate/machinery/openai.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
7 changes: 5 additions & 2 deletions weblate/trans/views/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 9e1ba1c

Please sign in to comment.