mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-22 13:42:12 -03:00
- Import and register two new nodes: LoraDemoNode and LoraRandomizerNode - Update import exception handling for better readability with multi-line formatting - Add comprehensive documentation file `docs/custom-node-ui-output.md` for UI output usage in custom nodes - Ensure proper node registration in NODE_CLASS_MAPPINGS for ComfyUI integration - Maintain backward compatibility with existing node structure and import fallbacks
93 lines
3.8 KiB
Python
93 lines
3.8 KiB
Python
try: # pragma: no cover - import fallback for pytest collection
|
|
from .py.lora_manager import LoraManager
|
|
from .py.nodes.lora_loader import LoraManagerLoader, LoraManagerTextLoader
|
|
from .py.nodes.trigger_word_toggle import TriggerWordToggle
|
|
from .py.nodes.prompt import PromptLoraManager
|
|
from .py.nodes.lora_stacker import LoraStacker
|
|
from .py.nodes.save_image import SaveImageLM
|
|
from .py.nodes.debug_metadata import DebugMetadata
|
|
from .py.nodes.wanvideo_lora_select import WanVideoLoraSelectLM
|
|
from .py.nodes.wanvideo_lora_select_from_text import WanVideoLoraSelectFromText
|
|
from .py.nodes.lora_pool import LoraPoolNode
|
|
from .py.nodes.lora_demo import LoraDemoNode
|
|
from .py.nodes.lora_randomizer import LoraRandomizerNode
|
|
from .py.metadata_collector import init as init_metadata_collector
|
|
except (
|
|
ImportError
|
|
): # pragma: no cover - allows running under pytest without package install
|
|
import importlib
|
|
import pathlib
|
|
import sys
|
|
|
|
package_root = pathlib.Path(__file__).resolve().parent
|
|
if str(package_root) not in sys.path:
|
|
sys.path.append(str(package_root))
|
|
|
|
PromptLoraManager = importlib.import_module("py.nodes.prompt").PromptLoraManager
|
|
LoraManager = importlib.import_module("py.lora_manager").LoraManager
|
|
LoraManagerLoader = importlib.import_module(
|
|
"py.nodes.lora_loader"
|
|
).LoraManagerLoader
|
|
LoraManagerTextLoader = importlib.import_module(
|
|
"py.nodes.lora_loader"
|
|
).LoraManagerTextLoader
|
|
TriggerWordToggle = importlib.import_module(
|
|
"py.nodes.trigger_word_toggle"
|
|
).TriggerWordToggle
|
|
LoraStacker = importlib.import_module("py.nodes.lora_stacker").LoraStacker
|
|
SaveImageLM = importlib.import_module("py.nodes.save_image").SaveImageLM
|
|
DebugMetadata = importlib.import_module("py.nodes.debug_metadata").DebugMetadata
|
|
WanVideoLoraSelectLM = importlib.import_module(
|
|
"py.nodes.wanvideo_lora_select"
|
|
).WanVideoLoraSelectLM
|
|
WanVideoLoraSelectFromText = importlib.import_module(
|
|
"py.nodes.wanvideo_lora_select_from_text"
|
|
).WanVideoLoraSelectFromText
|
|
LoraPoolNode = importlib.import_module("py.nodes.lora_pool").LoraPoolNode
|
|
LoraDemoNode = importlib.import_module("py.nodes.lora_demo").LoraDemoNode
|
|
LoraRandomizerNode = importlib.import_module("py.nodes.lora_randomizer").LoraRandomizerNode
|
|
init_metadata_collector = importlib.import_module("py.metadata_collector").init
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
PromptLoraManager.NAME: PromptLoraManager,
|
|
LoraManagerLoader.NAME: LoraManagerLoader,
|
|
LoraManagerTextLoader.NAME: LoraManagerTextLoader,
|
|
TriggerWordToggle.NAME: TriggerWordToggle,
|
|
LoraStacker.NAME: LoraStacker,
|
|
SaveImageLM.NAME: SaveImageLM,
|
|
DebugMetadata.NAME: DebugMetadata,
|
|
WanVideoLoraSelectLM.NAME: WanVideoLoraSelectLM,
|
|
WanVideoLoraSelectFromText.NAME: WanVideoLoraSelectFromText,
|
|
LoraPoolNode.NAME: LoraPoolNode,
|
|
LoraDemoNode.NAME: LoraDemoNode,
|
|
LoraRandomizerNode.NAME: LoraRandomizerNode,
|
|
}
|
|
|
|
WEB_DIRECTORY = "./web/comfyui"
|
|
|
|
# Check and build Vue widgets if needed (development mode)
|
|
try:
|
|
from .py.vue_widget_builder import check_and_build_vue_widgets
|
|
|
|
# Auto-build in development, warn only if fails
|
|
check_and_build_vue_widgets(auto_build=True, warn_only=True)
|
|
except ImportError:
|
|
# Fallback for pytest
|
|
import importlib
|
|
|
|
check_and_build_vue_widgets = importlib.import_module(
|
|
"py.vue_widget_builder"
|
|
).check_and_build_vue_widgets
|
|
check_and_build_vue_widgets(auto_build=True, warn_only=True)
|
|
except Exception as e:
|
|
import logging
|
|
|
|
logging.warning(f"[LoRA Manager] Vue widget build check skipped: {e}")
|
|
|
|
# Initialize metadata collector
|
|
init_metadata_collector()
|
|
|
|
# Register routes on import
|
|
LoraManager.add_routes()
|
|
__all__ = ["NODE_CLASS_MAPPINGS", "WEB_DIRECTORY"]
|