saik0s's picture
Add files using upload-large-folder tool
8d5e143 verified
Raw
History Blame Contribute Delete
4.93 kB
# ================================================
# File: __init__.py
# ================================================
import os
# Define paths relative to this __init__.py file
EXTENSION_ROOT = os.path.dirname(os.path.realpath(__file__))
WEB_PATH = os.path.join(EXTENSION_ROOT, "web")
JS_PATH = os.path.join(WEB_PATH, "js")
# CSS_PATH definition removed as it was unused and pointed to a non-existent directory.
JS_FILENAME = "huggingfaceDownloader.js"
CSS_FILENAME = "huggingfaceDownloader.css"
JS_FILE_PATH = os.path.join(JS_PATH, JS_FILENAME)
CSS_FILE_PATH = os.path.join(JS_PATH, CSS_FILENAME)
# --- Import Core Components ---
# Import configurations and utility functions first
# Ensure config and helpers don't have side effects unsuitable for just checking files
try:
from .config import WEB_DIRECTORY as config_WEB_DIRECTORY
# Import downloader manager (creates the instance)
from .downloader import manager as download_manager
# Import server routes (registers the routes)
from .server import routes
imports_successful = True
print("[HuggingFace] Core modules imported successfully.")
except ImportError as e:
imports_successful = False
print("*"*80)
print(f"[HuggingFace] ERROR: Failed to import core modules: {e}")
print("Please ensure the file structure is correct and all required files exist.")
print("Extension will likely not function correctly.")
print("*"*80)
except Exception as e:
imports_successful = False
# Catch other potential init errors during import
import traceback
print("*"*80)
print(f"[HuggingFace] ERROR: An unexpected error occurred during module import:")
traceback.print_exc()
print("Extension will likely not function correctly.")
print("*"*80)
# --- Check for Frontend Files ---
frontend_files_ok = True
if not os.path.exists(CSS_FILE_PATH):
print("*"*80)
print(f"[HuggingFace] WARNING: Frontend CSS file not found!")
print(f" Expected at: {CSS_FILE_PATH}")
print(" The downloader UI may not display correctly.")
print(f" Please ensure '{CSS_FILENAME}' is placed in the '{os.path.basename(JS_PATH)}' directory inside 'web'.") # Corrected path hint
print("*"*80)
frontend_files_ok = False
if not os.path.exists(JS_FILE_PATH):
print("*"*80)
print(f"[HuggingFace] WARNING: Frontend JavaScript file not found!")
print(f" Expected at: {JS_FILE_PATH}")
print(" The downloader UI functionality will be missing.")
print(f" Please ensure '{JS_FILENAME}' is placed in the '{os.path.basename(JS_PATH)}' directory inside 'web'.") # Corrected path hint
print("*"*80)
frontend_files_ok = False
# --- ComfyUI Registration ---
if imports_successful:
# Standard ComfyUI extension variables
# No custom nodes defined in this extension
NODE_CLASS_MAPPINGS = {}
NODE_DISPLAY_NAME_MAPPINGS = {}
# Define the web directory for ComfyUI to serve
# The key is the path component in the URL: /extensions/ComfyUI-HuggingFace/...
# The value is the directory path relative to this __init__.py file
WEB_DIRECTORY = "./web" # This tells ComfyUI to serve the ./web folder relative to this file
# --- Startup Messages ---
print("-" * 30)
print("--- HuggingFace Custom Extension Loaded ---")
print(f"- Serving frontend files from: {os.path.abspath(WEB_PATH)} (Relative: {WEB_DIRECTORY})")
# Download manager and routes are initialized/registered upon import
print(f"- Download Manager Initialized: {'Yes' if 'download_manager' in locals() else 'No! Import failed.'}")
print(f"- API Endpoints Registered: {'Yes' if 'routes' in locals() else 'No! Import failed.'}")
if frontend_files_ok:
print("- Frontend files found.")
else:
print("- WARNING: Frontend files missing (see warnings above). UI may not work.")
print("- Look for 'HuggingFace' button in the ComfyUI menu.")
print("-" * 30)
# Ensure default model-type directories exist at startup
try:
from .utils.helpers import get_model_dir
from .config import MODEL_TYPE_DIRS
created = []
for key in MODEL_TYPE_DIRS.keys():
path = get_model_dir(key)
created.append((key, path))
print("[HuggingFace] Verified model type directories:")
for k, p in created:
print(f" - {k}: {p}")
except Exception as e:
print(f"[HuggingFace] Warning: Failed ensuring model directories at startup: {e}")
else:
# If imports failed, don't register anything with ComfyUI
print("[HuggingFace] Initialization failed due to import errors. Extension inactive.")
NODE_CLASS_MAPPINGS = {}
NODE_DISPLAY_NAME_MAPPINGS = {}
WEB_DIRECTORY = None # Do not serve web directory if backend failed