Spaces:
Running
on
Zero
Running
on
Zero
| import os | |
| import subprocess | |
| from huggingface_hub import login | |
| def clone_and_initialize_repo(repo_url, target_dir): | |
| """ | |
| Clone a GitHub repository using a personal access token and initialize submodules. | |
| """ | |
| github_token = os.getenv("GITHUB_TOKEN") | |
| if not github_token: | |
| raise ValueError("Error: GITHUB_TOKEN is not set in environment variables.") | |
| # Construct the authenticated repository URL | |
| authenticated_repo_url = repo_url.replace( | |
| "https://", f"https://{github_token}@" | |
| ) | |
| try: | |
| # Clone the repository | |
| print(f"Cloning repository from {repo_url} into {target_dir}...") | |
| subprocess.run( | |
| ["git", "clone", "--recurse-submodules", authenticated_repo_url, target_dir], | |
| check=True | |
| ) | |
| # Navigate to the repository directory | |
| os.chdir(target_dir) | |
| # Initialize and update submodules | |
| print("Initializing and updating submodules...") | |
| subprocess.run(["git", "submodule", "update", "--init", "--recursive"], check=True) | |
| print("Repository cloned and submodules initialized successfully.") | |
| except subprocess.CalledProcessError as e: | |
| print(f"Error during repository cloning or submodule initialization: {e}") | |
| raise | |
| def huggingface_login(): | |
| """ | |
| Log in to Hugging Face using the API token from environment variables. | |
| """ | |
| hf_token = os.getenv("HF_TOKEN") | |
| if not hf_token: | |
| raise ValueError("Error: HF_TOKEN is not set in environment variables.") | |
| try: | |
| print("Logging in to Hugging Face...") | |
| login(token=hf_token, add_to_git_credential=False) | |
| print("Hugging Face login successful.") | |
| except Exception as e: | |
| print(f"Error during Hugging Face login: {e}") | |
| raise | |
| def start_gradio_demo(): | |
| """ | |
| Start the Gradio demo. | |
| """ | |
| try: | |
| print("Starting Gradio demo...") | |
| subprocess.run(["python", "-m", "src.demo.gradio_demo", "--hf", "--downsample"], check=True) | |
| except subprocess.CalledProcessError as e: | |
| print(f"Error starting Gradio demo: {e}") | |
| raise | |
| def modify_file(file_path): | |
| """ | |
| Modify specific lines in a file. | |
| Replace lines 107 and 108 with a valid `raise ImportError` statement. | |
| """ | |
| try: | |
| # Read the file contents | |
| with open(file_path, "r") as file: | |
| lines = file.readlines() | |
| # Modify the specified lines | |
| lines[106] = " raise ImportError(\"Custom import error message\")\n" # Line 107 (index starts at 0) | |
| lines[107] = "" # Line 108, replace with an empty line or remove it | |
| # Write the modified lines back to the file | |
| with open(file_path, "w") as file: | |
| file.writelines(lines) | |
| print(f"File {file_path} modified successfully: lines 107 and 108 replaced.") | |
| except FileNotFoundError: | |
| print(f"Error: File {file_path} not found.") | |
| raise | |
| except Exception as e: | |
| print(f"Error modifying file {file_path}: {e}") | |
| raise | |
| def main(): | |
| """ | |
| Main function to perform all operations. | |
| """ | |
| # Define the repository URL and target directory | |
| repo_url = "https://github.com/dadwadw233/BoxDreamer.git" | |
| target_dir = "./BoxDreamer" | |
| # Define the file to be modified | |
| file_to_modify = "./three/dust3r/croco/models/pos_embed.py" | |
| try: | |
| # Clone the repository and initialize submodules | |
| clone_and_initialize_repo(repo_url, target_dir) | |
| # Modify the specified file | |
| # modify_file(file_to_modify) | |
| # Log in to Hugging Face | |
| huggingface_login() | |
| # Start the Gradio demo | |
| start_gradio_demo() | |
| print("All operations completed successfully.") | |
| except Exception as e: | |
| print(f"An error occurred: {e}") | |
| if __name__ == "__main__": | |
| main() |