Files
iddaai-be/ai-engine/utils/top_leagues.py
T
fahricansecer 2f0b85a0c7
Deploy Iddaai Backend / build-and-deploy (push) Failing after 18s
first (part 2: other directories)
2026-04-16 15:11:25 +03:00

63 lines
1.5 KiB
Python
Executable File

"""
Top leagues loader utility.
Loads league IDs from top_leagues.json with light validation and caching.
"""
from __future__ import annotations
import json
from functools import lru_cache
from pathlib import Path
from typing import Any, Set
def _candidate_paths() -> list[Path]:
here = Path(__file__).resolve()
# .../ai-engine/utils/top_leagues.py
repo_root = here.parents[2]
ai_engine_root = here.parents[1]
return [
repo_root / "top_leagues.json",
ai_engine_root / "top_leagues.json",
]
def _extract_ids(payload: Any) -> Set[str]:
ids: Set[str] = set()
if not isinstance(payload, list):
return ids
for item in payload:
if isinstance(item, str):
val = item.strip()
if val:
ids.add(val)
continue
if isinstance(item, dict):
for key in ("id", "league_id", "leagueId"):
raw = item.get(key)
if raw is not None:
val = str(raw).strip()
if val:
ids.add(val)
break
return ids
@lru_cache(maxsize=1)
def load_top_league_ids() -> Set[str]:
for path in _candidate_paths():
if not path.exists():
continue
try:
with path.open("r", encoding="utf-8") as f:
payload = json.load(f)
return _extract_ids(payload)
except Exception:
continue
return set()