PhoneticXeus / src /core /utils.py
Shikhar
Deploy PhoneticXeus Gradio demo (CPU)
84f8437
import logging
from huggingface_hub import snapshot_download
from huggingface_hub.utils import LocalEntryNotFoundError
def download_hf_snapshot(
repo_id: str,
work_dir: str,
force_download: bool = False,
**kwargs,
) -> str:
"""Download a snapshot from Hugging Face Hub to `work_dir`.
Args:
repo_id: e.g. "espnet/xeus"
work_dir: path to local directory where to store snapshot
force_download: if True, enforce re-download
**kwargs: other snapshot_download arguments
Returns:
The path to the local snapshot folder
"""
if force_download:
logging.info(
f"Force-downloading snapshot for {repo_id} into {work_dir}..."
)
path = snapshot_download(
repo_id=repo_id,
local_dir=work_dir,
force_download=True,
local_files_only=False,
**kwargs,
)
logging.info(f"Downloaded snapshot for {repo_id} to {path}")
return path
try:
path = snapshot_download(
repo_id=repo_id,
local_dir=work_dir,
local_files_only=True,
**kwargs,
)
logging.info(
f"Using existing local snapshot for {repo_id} at {path}"
)
return path
except LocalEntryNotFoundError:
logging.info(
f"No local snapshot found for {repo_id}. Downloading now..."
)
path = snapshot_download(
repo_id=repo_id,
local_dir=work_dir,
local_files_only=False,
**kwargs,
)
logging.info(f"Downloaded snapshot for {repo_id} to {path}")
return path