3_optimization-design-ptn/03_prompt-optimization/promptwizard/glue/common/utils/download.py (27 lines of code) (raw):
import os
import requests
from pathlib import Path
from urllib.parse import urlparse
from glue.common.constants.str_literals import DirNames
from glue.common.utils.logging import get_glue_logger
logger = get_glue_logger(__name__)
def download_model(url):
cwd = os.getcwd()
dirs = Path(cwd).parts
idx = 0
if DirNames.PACKAGE_BASE_DIR in dirs:
idx = dir.index(DirNames.PACKAGE_BASE_DIR)
download_path = os.path.join(*dir[:idx+1], DirNames.MODEL_DIR)
os.makedirs(download_path, exist_ok=True)
parsed_url = urlparse(url)
model_filename = os.path.basename(parsed_url.path)
model_path = os.path.join(download_path, model_filename)
if not os.path.exists(model_path):
r = requests.get(url, stream=True)
if r.ok:
with os.open(model_path, 'wb') as f:
for chunk in r.iter_content(chunk_size=1024 * 8):
if chunk:
f.write(chunk)
f.flush()
return model_path