Skip to content

Commit 2e1b758

Browse files
author
coderfromthenorth93
committed
Extract min_version_comfyUI and min_version_comfyUI_frontend to publish node api call
1 parent d23beb4 commit 2e1b758

File tree

4 files changed

+62
-1
lines changed

4 files changed

+62
-1
lines changed

comfy_cli/registry/api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ def publish_node_version(self, node_config: PyProjectConfig, token) -> PublishNo
5555
"license": license_json,
5656
"repository": node_config.project.urls.repository,
5757
"supported_os": node_config.project.supported_os,
58+
"min_version_comfyUI_frontend": node_config.project.min_version_comfyUI_frontend,
59+
"min_version_comfyUI": node_config.project.min_version_comfyUI,
5860
},
5961
"node_version": {
6062
"version": node_config.project.version,

comfy_cli/registry/config_parser.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,18 @@ def extract_node_configuration(
156156
project_data = data.get("project", {})
157157
urls_data = project_data.get("urls", {})
158158
comfy_data = data.get("tool", {}).get("comfy", {})
159+
min_version_comfyUI = data.get("tool", {}).get("requires-comfyui", "")
160+
161+
dependencies = project_data.get("dependencies", [])
162+
min_version_comfyUI_frontend = ""
163+
for dep in dependencies:
164+
if isinstance(dep, str) and dep.startswith("comfyui-frontend-package"):
165+
parts = dep.split(">=")
166+
if len(parts) > 1:
167+
min_version_comfyUI_frontend = parts[1].strip()
168+
break
169+
170+
dependencies = [dep for dep in dependencies if not (isinstance(dep, str) and dep.startswith("comfyui-frontend-package"))]
159171

160172
classifiers = project_data.get("classifiers", [])
161173
supported_os = [c for c in classifiers if c.startswith("Operating System :: ")]
@@ -185,7 +197,7 @@ def extract_node_configuration(
185197
description=project_data.get("description", ""),
186198
version=project_data.get("version", ""),
187199
requires_python=project_data.get("requires-python", ""),
188-
dependencies=project_data.get("dependencies", []),
200+
dependencies=dependencies,
189201
license=license,
190202
urls=URLs(
191203
homepage=urls_data.get("Homepage", ""),
@@ -194,6 +206,8 @@ def extract_node_configuration(
194206
issues=urls_data.get("Issues", ""),
195207
),
196208
supported_os=supported_os, # Add the OS classifiers
209+
min_version_comfyUI_frontend=min_version_comfyUI_frontend, # Add the ComfyUI version
210+
min_version_comfyUI=min_version_comfyUI, # Add the ComfyUI version from tools section
197211
)
198212

199213
comfy = ComfyConfig(

comfy_cli/registry/types.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ class ProjectConfig:
7070
license: License = field(default_factory=License)
7171
urls: URLs = field(default_factory=URLs)
7272
supported_os: List[str] = field(default_factory=list)
73+
min_version_comfyUI_frontend: str = ""
74+
min_version_comfyUI: str = ""
7375

7476

7577
@dataclass

tests/comfy_cli/registry/test_config_parser.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,46 @@ def test_extract_node_configuration_with_os_classifiers():
151151
assert len(result.project.supported_os) == 2
152152
assert "Operating System :: OS Independent" in result.project.supported_os
153153
assert "Operating System :: Microsoft :: Windows" in result.project.supported_os
154+
155+
156+
def test_extract_node_configuration_with_comfyui_version():
157+
mock_data = {
158+
"project": {
159+
"dependencies": [
160+
"requests>=2.0.0",
161+
"comfyui-frontend-package>=1.2.3",
162+
"numpy>=1.0.0"
163+
]
164+
}
165+
}
166+
with (
167+
patch("os.path.isfile", return_value=True),
168+
patch("builtins.open", mock_open()),
169+
patch("tomlkit.load", return_value=mock_data),
170+
):
171+
result = extract_node_configuration("fake_path.toml")
172+
173+
assert result is not None
174+
assert result.project.min_version_comfyUI_frontend == "1.2.3"
175+
assert len(result.project.dependencies) == 2
176+
assert "comfyui-frontend-package>=1.2.3" not in result.project.dependencies
177+
assert "requests>=2.0.0" in result.project.dependencies
178+
assert "numpy>=1.0.0" in result.project.dependencies
179+
180+
181+
def test_extract_node_configuration_with_requires_comfyui():
182+
mock_data = {
183+
"project": {},
184+
"tool": {
185+
"requires-comfyui": "2.0.0"
186+
}
187+
}
188+
with (
189+
patch("os.path.isfile", return_value=True),
190+
patch("builtins.open", mock_open()),
191+
patch("tomlkit.load", return_value=mock_data),
192+
):
193+
result = extract_node_configuration("fake_path.toml")
194+
195+
assert result is not None
196+
assert result.project.min_version_comfyUI == "2.0.0"

0 commit comments

Comments
 (0)