Spaces:
Runtime error
Runtime error
File size: 2,223 Bytes
90c2333 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import io
import os
from importlib.resources import files
from pathlib import Path
import gradio
import huggingface_hub
def deploy_as_space(
title: str,
persistent_dataset: str | None = None,
persistent_dataset_dir: str | None = None,
):
if (
os.getenv("SYSTEM") == "spaces"
): # in case a repo with this function is uploaded to spaces
return
trackio_path = files("trackio")
hf_api = huggingface_hub.HfApi()
whoami = None
login = False
try:
whoami = hf_api.whoami()
if whoami["auth"]["accessToken"]["role"] != "write":
login = True
except OSError:
login = True
if login:
print("Need 'write' access token to create a Spaces repo.")
huggingface_hub.login(add_to_git_credential=False)
whoami = hf_api.whoami()
space_id = huggingface_hub.create_repo(
title,
space_sdk="gradio",
repo_type="space",
exist_ok=True,
).repo_id
assert space_id == title # not sure why these would differ
with open(Path(trackio_path, "README.md"), "r") as f:
readme_content = f.read()
readme_content = readme_content.replace("{GRADIO_VERSION}", gradio.__version__)
readme_buffer = io.BytesIO(readme_content.encode("utf-8"))
hf_api.upload_file(
path_or_fileobj=readme_buffer,
path_in_repo="README.md",
repo_id=space_id,
repo_type="space",
)
huggingface_hub.utils.disable_progress_bars()
hf_api.upload_folder(
repo_id=space_id,
repo_type="space",
folder_path=trackio_path,
ignore_patterns=["README.md"],
)
# add HF_TOKEN so we have access to dataset to persist data
HF_TOKEN = os.environ.get("HF_TOKEN")
if HF_TOKEN is not None:
huggingface_hub.add_space_secret(space_id, "HF_TOKEN", HF_TOKEN)
if persistent_dataset is not None:
huggingface_hub.add_space_variable(
space_id, "PERSIST_TO_DATASET", persistent_dataset
)
if persistent_dataset_dir is not None:
huggingface_hub.add_space_variable(
space_id, "PERSIST_TO_DATASET_DIR", persistent_dataset_dir
)
|