| import json | |
| import logging | |
| import os | |
| logger = logging.getLogger(__name__) | |
| def _load() -> frozenset: | |
| sa_json = os.environ.get("GOOGLE_SERVICE_ACCOUNT_JSON", "") | |
| sheet_id = os.environ.get("GOOGLE_SHEET_ID", "") | |
| if not sa_json or not sheet_id: | |
| logger.warning("inventory: env vars missing β inventory disabled") | |
| return frozenset() | |
| try: | |
| import gspread | |
| gc = gspread.service_account_from_dict(json.loads(sa_json)) | |
| ws = gc.open_by_key(sheet_id).sheet1 | |
| rows = ws.get_all_values() | |
| codes = {row[0].strip().upper().replace("-", "") for row in rows[1:] if row and row[0].strip()} | |
| logger.info("inventory: loaded %d codes", len(codes)) | |
| return frozenset(codes) | |
| except Exception as exc: | |
| logger.warning("inventory: failed to load (%s) β inventory disabled", exc) | |
| return frozenset() | |
| OWNED: frozenset = _load() | |