Skip to content
234 changes: 125 additions & 109 deletions __init__.py
Original file line number Diff line number Diff line change
@@ -1,109 +1,125 @@
import logging
import os

# Get log level from environment variable (default to INFO)
log_level = os.getenv("LOG_LEVEL", "INFO").upper()

# Configure logging
logging.basicConfig(level=getattr(logging, log_level, logging.INFO), format="%(asctime)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__)

logger.info("=" * 40 + " ComfyUI-nunchaku Initialization " + "=" * 40)

from .utils import get_package_version, get_plugin_version, supported_versions

nunchaku_full_version = get_package_version("nunchaku").split("+")[0].strip()

logger.info(f"Nunchaku version: {nunchaku_full_version}")
logger.info(f"ComfyUI-nunchaku version: {get_plugin_version()}")

nunchaku_version = nunchaku_full_version.split("+")[0].strip()
nunchaku_major_minor_patch_version = ".".join(nunchaku_version.split(".")[:3])
if f"v{nunchaku_major_minor_patch_version}" not in supported_versions:
logger.warning(
f"ComfyUI-nunchaku {get_plugin_version()} is not compatible with nunchaku {nunchaku_full_version}. "
f"Please update nunchaku to a supported version in {supported_versions}."
)

NODE_CLASS_MAPPINGS = {}

try:
from .nodes.models.flux import NunchakuFluxDiTLoader

NODE_CLASS_MAPPINGS["NunchakuFluxDiTLoader"] = NunchakuFluxDiTLoader
except ImportError:
logger.exception("Node `NunchakuFluxDiTLoader` import failed:")

try:
from .nodes.models.qwenimage import NunchakuQwenImageDiTLoader

NODE_CLASS_MAPPINGS["NunchakuQwenImageDiTLoader"] = NunchakuQwenImageDiTLoader
except ImportError:
logger.exception("Node `NunchakuQwenImageDiTLoader` import failed:")

try:
from .nodes.lora.flux import NunchakuFluxLoraLoader, NunchakuFluxLoraStack

NODE_CLASS_MAPPINGS["NunchakuFluxLoraLoader"] = NunchakuFluxLoraLoader
NODE_CLASS_MAPPINGS["NunchakuFluxLoraStack"] = NunchakuFluxLoraStack
except ImportError:
logger.exception("Nodes `NunchakuFluxLoraLoader` and `NunchakuFluxLoraStack` import failed:")


try:
from .nodes.models.text_encoder import NunchakuTextEncoderLoader, NunchakuTextEncoderLoaderV2

NODE_CLASS_MAPPINGS["NunchakuTextEncoderLoader"] = NunchakuTextEncoderLoader
NODE_CLASS_MAPPINGS["NunchakuTextEncoderLoaderV2"] = NunchakuTextEncoderLoaderV2
except ImportError:
logger.exception("Nodes `NunchakuTextEncoderLoader` and `NunchakuTextEncoderLoaderV2` import failed:")

try:
from .nodes.preprocessors.depth import FluxDepthPreprocessor

NODE_CLASS_MAPPINGS["NunchakuDepthPreprocessor"] = FluxDepthPreprocessor
except ImportError:
logger.exception("Node `NunchakuDepthPreprocessor` import failed:")

try:
from .nodes.models.pulid import (
NunchakuFluxPuLIDApplyV2,
NunchakuPulidApply,
NunchakuPulidLoader,
NunchakuPuLIDLoaderV2,
)

NODE_CLASS_MAPPINGS["NunchakuPulidApply"] = NunchakuPulidApply
NODE_CLASS_MAPPINGS["NunchakuPulidLoader"] = NunchakuPulidLoader
NODE_CLASS_MAPPINGS["NunchakuPuLIDLoaderV2"] = NunchakuPuLIDLoaderV2
NODE_CLASS_MAPPINGS["NunchakuFluxPuLIDApplyV2"] = NunchakuFluxPuLIDApplyV2
except ImportError:
logger.exception(
"Nodes `NunchakuPulidApply`,`NunchakuPulidLoader`, "
"`NunchakuPuLIDLoaderV2` and `NunchakuFluxPuLIDApplyV2` import failed:"
)
try:
from .nodes.models.ipadapter import NunchakuFluxIPAdapterApply, NunchakuIPAdapterLoader

NODE_CLASS_MAPPINGS["NunchakuFluxIPAdapterApply"] = NunchakuFluxIPAdapterApply
NODE_CLASS_MAPPINGS["NunchakuIPAdapterLoader"] = NunchakuIPAdapterLoader
except ImportError:
logger.exception("Nodes `NunchakuFluxIPAdapterApply` and `NunchakuIPAdapterLoader` import failed:")

try:
from .nodes.tools.merge_safetensors import NunchakuModelMerger

NODE_CLASS_MAPPINGS["NunchakuModelMerger"] = NunchakuModelMerger
except ImportError:
logger.exception("Node `NunchakuModelMerger` import failed:")

try:
from .nodes.tools.installers import NunchakuWheelInstaller

NODE_CLASS_MAPPINGS["NunchakuWheelInstaller"] = NunchakuWheelInstaller
except ImportError:
logger.exception("Node `NunchakuWheelInstaller` import failed:")

NODE_DISPLAY_NAME_MAPPINGS = {k: v.TITLE for k, v in NODE_CLASS_MAPPINGS.items()}
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"]
logger.info("=" * (80 + len(" ComfyUI-nunchaku Initialization ")))
import logging
import os

# Get log level from environment variable (default to INFO)
log_level = os.getenv("LOG_LEVEL", "INFO").upper()

# Configure logging
logging.basicConfig(level=getattr(logging, log_level, logging.INFO), format="%(asctime)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__)

logger.info("=" * 40 + " ComfyUI-nunchaku Initialization " + "=" * 40)

from .utils import get_package_version, get_plugin_version, supported_versions

nunchaku_full_version = get_package_version("nunchaku").split("+")[0].strip()

logger.info(f"Nunchaku version: {nunchaku_full_version}")
logger.info(f"ComfyUI-nunchaku version: {get_plugin_version()}")

nunchaku_version = nunchaku_full_version.split("+")[0].strip()
nunchaku_major_minor_patch_version = ".".join(nunchaku_version.split(".")[:3])
if f"v{nunchaku_major_minor_patch_version}" not in supported_versions:
logger.warning(
f"ComfyUI-nunchaku {get_plugin_version()} is not compatible with nunchaku {nunchaku_full_version}. "
f"Please update nunchaku to a supported version in {supported_versions}."
)

NODE_CLASS_MAPPINGS = {}

try:
from .nodes.models.flux import NunchakuFluxDiTLoader

NODE_CLASS_MAPPINGS["NunchakuFluxDiTLoader"] = NunchakuFluxDiTLoader
except ImportError:
logger.exception("Node `NunchakuFluxDiTLoader` import failed:")

try:
from .nodes.models.qwenimage import NunchakuQwenImageDiTLoader

NODE_CLASS_MAPPINGS["NunchakuQwenImageDiTLoader"] = NunchakuQwenImageDiTLoader
except ImportError:
logger.exception("Node `NunchakuQwenImageDiTLoader` import failed:")

try:
from .nodes.models.sdxl import NunchakuSDXLUNetLoader

NODE_CLASS_MAPPINGS["NunchakuSDXLUNetLoader"] = NunchakuSDXLUNetLoader
except ImportError:
logger.exception("Node `NunchakuSDXLUNetLoader` import failed:")


try:
from .nodes.lora.flux import NunchakuFluxLoraLoader, NunchakuFluxLoraStack

NODE_CLASS_MAPPINGS["NunchakuFluxLoraLoader"] = NunchakuFluxLoraLoader
NODE_CLASS_MAPPINGS["NunchakuFluxLoraStack"] = NunchakuFluxLoraStack
except ImportError:
logger.exception("Nodes `NunchakuFluxLoraLoader` and `NunchakuFluxLoraStack` import failed:")

try:
from .nodes.lora.sdxl import NunchakuSDXLLoraLoader, NunchakuSDXLLoraStack

NODE_CLASS_MAPPINGS["NunchakuSDXLLoraLoader"] = NunchakuSDXLLoraLoader
NODE_CLASS_MAPPINGS["NunchakuSDXLLoraStack"] = NunchakuSDXLLoraStack
except ImportError:
logger.exception("Nodes `NunchakuSDXLLoraLoader` and `NunchakuSDXLLoraStack` import failed:")


try:
from .nodes.models.text_encoder import NunchakuTextEncoderLoader, NunchakuTextEncoderLoaderV2

NODE_CLASS_MAPPINGS["NunchakuTextEncoderLoader"] = NunchakuTextEncoderLoader
NODE_CLASS_MAPPINGS["NunchakuTextEncoderLoaderV2"] = NunchakuTextEncoderLoaderV2
except ImportError:
logger.exception("Nodes `NunchakuTextEncoderLoader` and `NunchakuTextEncoderLoaderV2` import failed:")

try:
from .nodes.preprocessors.depth import FluxDepthPreprocessor

NODE_CLASS_MAPPINGS["NunchakuDepthPreprocessor"] = FluxDepthPreprocessor
except ImportError:
logger.exception("Node `NunchakuDepthPreprocessor` import failed:")

try:
from .nodes.models.pulid import (
NunchakuFluxPuLIDApplyV2,
NunchakuPulidApply,
NunchakuPulidLoader,
NunchakuPuLIDLoaderV2,
)

NODE_CLASS_MAPPINGS["NunchakuPulidApply"] = NunchakuPulidApply
NODE_CLASS_MAPPINGS["NunchakuPulidLoader"] = NunchakuPulidLoader
NODE_CLASS_MAPPINGS["NunchakuPuLIDLoaderV2"] = NunchakuPuLIDLoaderV2
NODE_CLASS_MAPPINGS["NunchakuFluxPuLIDApplyV2"] = NunchakuFluxPuLIDApplyV2
except ImportError:
logger.exception(
"Nodes `NunchakuPulidApply`,`NunchakuPulidLoader`, "
"`NunchakuPuLIDLoaderV2` and `NunchakuFluxPuLIDApplyV2` import failed:"
)
try:
from .nodes.models.ipadapter import NunchakuFluxIPAdapterApply, NunchakuIPAdapterLoader

NODE_CLASS_MAPPINGS["NunchakuFluxIPAdapterApply"] = NunchakuFluxIPAdapterApply
NODE_CLASS_MAPPINGS["NunchakuIPAdapterLoader"] = NunchakuIPAdapterLoader
except ImportError:
logger.exception("Nodes `NunchakuFluxIPAdapterApply` and `NunchakuIPAdapterLoader` import failed:")

try:
from .nodes.tools.merge_safetensors import NunchakuModelMerger

NODE_CLASS_MAPPINGS["NunchakuModelMerger"] = NunchakuModelMerger
except ImportError:
logger.exception("Node `NunchakuModelMerger` import failed:")

try:
from .nodes.tools.installers import NunchakuWheelInstaller

NODE_CLASS_MAPPINGS["NunchakuWheelInstaller"] = NunchakuWheelInstaller
except ImportError:
logger.exception("Node `NunchakuWheelInstaller` import failed:")

NODE_DISPLAY_NAME_MAPPINGS = {k: v.TITLE for k, v in NODE_CLASS_MAPPINGS.items()}
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"]
logger.info("=" * (80 + len(" ComfyUI-nunchaku Initialization ")))
Loading