Spaces:
Sleeping
Sleeping
| import io | |
| import os | |
| from importlib.resources import files | |
| from pathlib import Path | |
| import gradio | |
| import huggingface_hub | |
| def deploy_as_space( | |
| title: str, | |
| dataset_id: 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"], | |
| ) | |
| hf_token = huggingface_hub.utils.get_token() | |
| if hf_token is not None: | |
| huggingface_hub.add_space_secret(space_id, "HF_TOKEN", hf_token) | |
| if dataset_id is not None: | |
| huggingface_hub.add_space_variable(space_id, "TRACKIO_DATASET_ID", dataset_id) | |
| # So that the dataset id is available to the sqlite_storage.py file | |
| # if running locally as well. | |
| os.environ["TRACKIO_DATASET_ID"] = dataset_id | |