From 8d2d613f95433dcc41d4a29ebf725d179546d75c Mon Sep 17 00:00:00 2001 From: doctorpangloss <@hiddenswitch.com> Date: Wed, 5 Mar 2025 10:39:31 -0800 Subject: [PATCH] Move language extensions in order to support packagized frontend --- comfy/node_helpers.py | 13 +++++++++++++ comfy/nodes/package.py | 4 +++- comfy_extras/language_web/__init__.py | 0 .../language_web}/language.js | 0 .../language_web}/textExtraOutput.js | 0 comfy_extras/nodes/nodes_language.py | 3 ++- 6 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 comfy_extras/language_web/__init__.py rename {comfy/web/extensions/javascript => comfy_extras/language_web}/language.js (100%) rename {comfy/web/extensions/javascript => comfy_extras/language_web}/textExtraOutput.js (100%) diff --git a/comfy/node_helpers.py b/comfy/node_helpers.py index b527e87c7..7db1ca03a 100644 --- a/comfy/node_helpers.py +++ b/comfy/node_helpers.py @@ -3,6 +3,7 @@ import hashlib from PIL import ImageFile, UnidentifiedImageError from .cli_args import args +from .component_model.files import get_package_as_path def conditioning_set_values(conditioning, values: dict = None): @@ -75,6 +76,18 @@ def export_custom_nodes(): return custom_nodes +def export_package_as_web_directory(package:str): + import inspect + + # Get the calling module + frame = inspect.currentframe() + try: + module = inspect.getmodule(frame.f_back) + setattr(module, 'WEB_DIRECTORY', get_package_as_path(package)) + + finally: + # Clean up circular reference + del frame def string_to_torch_dtype(string): import torch diff --git a/comfy/nodes/package.py b/comfy/nodes/package.py index 8cd7c9f73..89cb946aa 100644 --- a/comfy/nodes/package.py +++ b/comfy/nodes/package.py @@ -28,7 +28,9 @@ def _import_nodes_in_module(exported_nodes: ExportedNodes, module: types.ModuleT exported_nodes.NODE_DISPLAY_NAME_MAPPINGS.update(node_display_names) if web_directory: # load the extension resources path - abs_web_directory = os.path.abspath(get_package_as_path(module.__name__, web_directory)) + abs_web_directory = web_directory + if not os.path.isdir(abs_web_directory): + abs_web_directory = os.path.abspath(get_package_as_path(module.__name__, web_directory)) if not os.path.isdir(abs_web_directory): abs_web_directory = os.path.abspath(os.path.join(os.path.dirname(module.__file__), web_directory)) if not os.path.isdir(abs_web_directory): diff --git a/comfy_extras/language_web/__init__.py b/comfy_extras/language_web/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/comfy/web/extensions/javascript/language.js b/comfy_extras/language_web/language.js similarity index 100% rename from comfy/web/extensions/javascript/language.js rename to comfy_extras/language_web/language.js diff --git a/comfy/web/extensions/javascript/textExtraOutput.js b/comfy_extras/language_web/textExtraOutput.js similarity index 100% rename from comfy/web/extensions/javascript/textExtraOutput.js rename to comfy_extras/language_web/textExtraOutput.js diff --git a/comfy_extras/nodes/nodes_language.py b/comfy_extras/nodes/nodes_language.py index 6e8309a4b..e8cb36138 100644 --- a/comfy_extras/nodes/nodes_language.py +++ b/comfy_extras/nodes/nodes_language.py @@ -21,7 +21,7 @@ from comfy.language.language_types import GENERATION_KWARGS_TYPE, GENERATION_KWA from comfy.language.transformers_model_management import TransformersManagedModel from comfy.model_downloader import get_huggingface_repo_list, get_or_download_huggingface_repo from comfy.model_management import get_torch_device_name, unet_dtype, unet_offload_device -from comfy.node_helpers import export_custom_nodes +from comfy.node_helpers import export_custom_nodes, export_package_as_web_directory from comfy.nodes.package_typing import CustomNode, InputTypes, ValidatedNodeResult, Seed _AUTO_CHAT_TEMPLATE = "default" @@ -422,3 +422,4 @@ class SaveString(CustomNode): export_custom_nodes() +export_package_as_web_directory("comfy_extras.language_web")