build-small-hackathon/Off-Grid-Field-Repair-Logbook
1
1import os2import sys3from pathlib import Path4from huggingface_hub import snapshot_download5 6def main():7 if len(sys.argv) < 3:8 print("Usage: python download_model.py <repo_id> <local_dir>", file=sys.stderr)9 return 110 11 repo_id = sys.argv[1]12 local_dir = Path(sys.argv[2])13 14 # Check if the local directory exists and contains files (excluding hidden ones like .gitattributes)15 has_files = False16 if local_dir.exists():17 for item in local_dir.iterdir():18 if item.is_file() and not item.name.startswith('.'):19 has_files = True20 break21 elif item.is_dir():22 has_files = True23 break24 25 if has_files:26 print(f"Model {repo_id} is already present at {local_dir}. Skipping download.")27 return 028 29 # Fictional/Mock models check to prevent build failures30 if repo_id.startswith("CoExpressionLabs/coexpression-llm-global-3.3b"):31 print(f"Skipping download for fictional placeholder model: {repo_id}")32 return 033 34 print(f"Model {repo_id} not found at {local_dir}. Downloading from Hugging Face...")35 token = os.environ.get("HF_TOKEN") or None36 37 local_dir.mkdir(parents=True, exist_ok=True)38 try:39 # Enable hf_transfer for fast downloads if available40 os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"41 import hf_transfer42 except ImportError:43 pass44 45 try:46 snapshot_download(47 repo_id=repo_id,48 local_dir=str(local_dir),49 local_dir_use_symlinks=False,50 token=token51 )52 print(f"Successfully downloaded {repo_id} to {local_dir}")53 return 054 except Exception as e:55 print(f"Error downloading {repo_id}: {e}", file=sys.stderr)56 # For this hackathon, we allow downloads of other placeholder/fictional models to fail gracefully57 if "404" in str(e) or "gated" in str(e).lower():58 print(f"Warning: could not download {repo_id} (could be fictional or gated). Continuing build.")59 return 060 return 161 62if __name__ == "__main__":63 sys.exit(main())64 