71 lines
3.2 KiB
Python
71 lines
3.2 KiB
Python
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
import pathlib
|
|
import sys
|
|
from types import ModuleType
|
|
from typing import Any, Dict
|
|
|
|
|
|
def _load_module_from_path(module_name: str, path: pathlib.Path) -> ModuleType:
|
|
spec = importlib.util.spec_from_file_location(module_name, path)
|
|
if spec is None or spec.loader is None: # pragma: no cover - defensive
|
|
raise ImportError(f"Unable to load module '{module_name}' from '{path}'.")
|
|
module = importlib.util.module_from_spec(spec)
|
|
sys.modules[module_name] = module
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
if __package__:
|
|
from .src.dype_qwen_image import ( # type: ignore[attr-defined] # noqa: F401
|
|
NODE_CLASS_MAPPINGS as DYPE_NODE_CLASS_MAPPINGS,
|
|
NODE_DISPLAY_NAME_MAPPINGS as DYPE_DISPLAY_NAME_MAPPINGS,
|
|
)
|
|
from .src.dype_flux2 import ( # type: ignore[attr-defined] # noqa: F401
|
|
NODE_CLASS_MAPPINGS as DYPE_FLUX2_NODE_CLASS_MAPPINGS,
|
|
NODE_DISPLAY_NAME_MAPPINGS as DYPE_FLUX2_DISPLAY_NAME_MAPPINGS,
|
|
)
|
|
from .src.flow_matching_upscaler import ( # type: ignore[attr-defined] # noqa: F401
|
|
NODE_CLASS_MAPPINGS as FM_NODE_CLASS_MAPPINGS,
|
|
NODE_DISPLAY_NAME_MAPPINGS as FM_DISPLAY_NAME_MAPPINGS,
|
|
)
|
|
from .src.latent_upscale_advanced import ( # type: ignore[attr-defined] # noqa: F401
|
|
NODE_CLASS_MAPPINGS as LUA_NODE_CLASS_MAPPINGS,
|
|
NODE_DISPLAY_NAME_MAPPINGS as LUA_DISPLAY_NAME_MAPPINGS,
|
|
)
|
|
else: # pragma: no cover - direct execution fallback
|
|
_ROOT_DIR = pathlib.Path(__file__).resolve().parent
|
|
_load_module_from_path("rope", _ROOT_DIR / "src" / "rope.py")
|
|
_load_module_from_path("qwen_spatial", _ROOT_DIR / "src" / "qwen_spatial.py")
|
|
flow_module = _load_module_from_path("flow_matching_upscaler", _ROOT_DIR / "src" / "flow_matching_upscaler.py")
|
|
dype_module = _load_module_from_path("dype_qwen_image", _ROOT_DIR / "src" / "dype_qwen_image.py")
|
|
dype_flux2_module = _load_module_from_path("dype_flux2", _ROOT_DIR / "src" / "dype_flux2.py")
|
|
latent_module = _load_module_from_path("latent_upscale_advanced", _ROOT_DIR / "src" / "latent_upscale_advanced.py")
|
|
|
|
FM_NODE_CLASS_MAPPINGS = getattr(flow_module, "NODE_CLASS_MAPPINGS")
|
|
FM_DISPLAY_NAME_MAPPINGS = getattr(flow_module, "NODE_DISPLAY_NAME_MAPPINGS")
|
|
DYPE_NODE_CLASS_MAPPINGS = getattr(dype_module, "NODE_CLASS_MAPPINGS")
|
|
DYPE_DISPLAY_NAME_MAPPINGS = getattr(dype_module, "NODE_DISPLAY_NAME_MAPPINGS")
|
|
DYPE_FLUX2_NODE_CLASS_MAPPINGS = getattr(dype_flux2_module, "NODE_CLASS_MAPPINGS")
|
|
DYPE_FLUX2_DISPLAY_NAME_MAPPINGS = getattr(dype_flux2_module, "NODE_DISPLAY_NAME_MAPPINGS")
|
|
LUA_NODE_CLASS_MAPPINGS = getattr(latent_module, "NODE_CLASS_MAPPINGS")
|
|
LUA_DISPLAY_NAME_MAPPINGS = getattr(latent_module, "NODE_DISPLAY_NAME_MAPPINGS")
|
|
|
|
NODE_CLASS_MAPPINGS: Dict[str, Any] = {
|
|
**FM_NODE_CLASS_MAPPINGS,
|
|
**DYPE_NODE_CLASS_MAPPINGS,
|
|
**DYPE_FLUX2_NODE_CLASS_MAPPINGS,
|
|
**LUA_NODE_CLASS_MAPPINGS,
|
|
}
|
|
NODE_DISPLAY_NAME_MAPPINGS: Dict[str, str] = {
|
|
**FM_DISPLAY_NAME_MAPPINGS,
|
|
**DYPE_DISPLAY_NAME_MAPPINGS,
|
|
**DYPE_FLUX2_DISPLAY_NAME_MAPPINGS,
|
|
**LUA_DISPLAY_NAME_MAPPINGS,
|
|
}
|
|
|
|
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"]
|
|
|
|
WEB_DIRECTORY = "./web"
|