Download src/db.py from JMullings/LLM-XRay: direct link, hf CLI and curl.
- Browser
- Download file 3.86 kB
-
https://huggingface.co/spaces/JMullings/LLM-XRay/resolve/main/src/db.py
- Command line
-
hf download hf://spaces/JMullings/LLM-XRay/src/db.py
-
curl -L -o db.py https://huggingface.co/spaces/JMullings/LLM-XRay/resolve/main/src/db.py
3.86 kB
| import os | |
| import re | |
| import time | |
| from typing import Dict, List, Optional | |
| try: | |
| import pymongo | |
| HAS_PYMONGO = True | |
| except ImportError: | |
| HAS_PYMONGO = False | |
| # Read connection string strictly from Hugging Face Space Secrets | |
| MONGODB_URI = os.environ.get("MONGODB_URI", "").strip() | |
| DB_NAME = os.environ.get("MONGODB_DB_NAME", "llm_xray_db") | |
| COLLECTION_NAME = "audit_certificates" | |
| _mongo_client = None | |
| def get_db_collection(retries: int = 3, delay: float = 2.0): | |
| """Initializes and returns the MongoDB collection using HF Secrets. | |
| Retries the initial connection — HF Space cold starts often need a | |
| few extra seconds for DNS/TLS to Atlas before serverSelection succeeds. | |
| """ | |
| global _mongo_client | |
| if not HAS_PYMONGO: | |
| return None | |
| if not MONGODB_URI: | |
| return None | |
| for attempt in range(1, retries + 1): | |
| try: | |
| if _mongo_client is None: | |
| _mongo_client = pymongo.MongoClient( | |
| MONGODB_URI, | |
| serverSelectionTimeoutMS=8000, | |
| connectTimeoutMS=8000, | |
| ) | |
| # Force a real round-trip here (pymongo is lazy otherwise), | |
| # so a slow cold-start connection is retried at this single | |
| # choke point rather than surfacing as "0 certificates". | |
| _mongo_client.admin.command("ping") | |
| return _mongo_client[DB_NAME][COLLECTION_NAME] | |
| except Exception as e: | |
| print(f"[MongoDB] Connection attempt {attempt}/{retries} warning: {e}", flush=True) | |
| _mongo_client = None | |
| if attempt < retries: | |
| time.sleep(delay) | |
| return None | |
| def mongo_save_certificate(cert: Dict) -> bool: | |
| """Persists an audit certificate permanently to MongoDB Atlas.""" | |
| col = get_db_collection() | |
| if col is None: | |
| return False | |
| try: | |
| config = cert.get("config", {}) | |
| model_name = config.get("model_name", "unknown").strip() | |
| model_sha = str(config.get("model_sha", "main")).strip() | |
| doc_id = f"{model_name}__{model_sha}".replace("/", "__").lower() | |
| doc = dict(cert) | |
| doc["_id"] = doc_id | |
| doc["model_name"] = model_name | |
| doc["model_sha"] = model_sha | |
| doc["updated_at"] = cert.get("audited_at", "") | |
| col.replace_one({"_id": doc_id}, doc, upsert=True) | |
| print(f"[MongoDB] ✅ Successfully persisted '{model_name}' to Atlas collection", flush=True) | |
| return True | |
| except Exception as e: | |
| print(f"[MongoDB] ⚠️ Error saving certificate: {e}", flush=True) | |
| return False | |
| def mongo_get_certificate(clean_model_name: str) -> Optional[Dict]: | |
| """Retrieves an audit certificate by model name from MongoDB.""" | |
| col = get_db_collection() | |
| if col is None or not clean_model_name: | |
| return None | |
| try: | |
| norm = clean_model_name.strip() | |
| doc_id = norm.replace("/", "__").lower() | |
| doc = col.find_one({ | |
| "$or": [ | |
| {"_id": {"$regex": f"^{doc_id}", "$options": "i"}}, | |
| {"config.model_name": {"$regex": f"^{re.escape(norm)}$", "$options": "i"}}, | |
| {"model_name": {"$regex": f"^{re.escape(norm)}$", "$options": "i"}} | |
| ] | |
| }) | |
| if doc: | |
| doc.pop("_id", None) | |
| return doc | |
| except Exception as e: | |
| print(f"[MongoDB] ⚠️ Error retrieving '{clean_model_name}': {e}", flush=True) | |
| return None | |
| def mongo_get_all_certificates() -> List[Dict]: | |
| """Recalls all saved certificates.""" | |
| col = get_db_collection() | |
| if col is None: | |
| return [] | |
| try: | |
| docs = list(col.find({})) | |
| for d in docs: | |
| d.pop("_id", None) | |
| return docs | |
| except Exception as e: | |
| print(f"[MongoDB] ⚠️ Error loading certificates: {e}", flush=True) | |
| return [] |