Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[project]
name = "runware"
description = "Runware Inference API Integration for ComfyUI (No GPU Required)."
version = "1.0.0"
license = "MIT"
# classifiers = [
# # For OS-independent nodes (works on all operating systems)
# "Operating System :: OS Independent",
#
# # OR for OS-specific nodes, specify the supported systems:
# "Operating System :: Microsoft :: Windows", # Windows specific
# "Operating System :: POSIX :: Linux", # Linux specific
# "Operating System :: MacOS", # macOS specific
#
# # GPU Accelerator support. Pick the ones that are supported by your extension.
# "Environment :: GPU :: NVIDIA CUDA", # NVIDIA CUDA support
# "Environment :: GPU :: AMD ROCm", # AMD ROCm support
# "Environment :: GPU :: Intel Arc", # Intel Arc support
# "Environment :: NPU :: Huawei Ascend", # Huawei Ascend support
# "Environment :: GPU :: Apple Metal", # Apple Metal support
# ]

dependencies = ["python-dotenv", "brotli", "zstd", "librosa", "imageio"]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify import-to-dependency alignment for compression libs.
# Expected: imports should consistently match chosen dependency package names.
rg -n -C2 --type=py '\bimport\s+zstd\b|\bfrom\s+zstd\b|\bimport\s+zstandard\b|\bfrom\s+zstandard\b'

Repository: Runware/ComfyUI-Runware

Length of output: 49


🏁 Script executed:

# First, read the pyproject.toml to see full context and current versions
head -40 pyproject.toml

Repository: Runware/ComfyUI-Runware

Length of output: 1508


🏁 Script executed:

# Search for imports of all the flagged dependencies
rg -n --type=py '\b(import python_dotenv|from python_dotenv|import dotenv|from dotenv|import brotli|from brotli|import librosa|from librosa|import imageio|from imageio)' || echo "No direct imports found"

Repository: Runware/ComfyUI-Runware

Length of output: 173


🏁 Script executed:

# Check if any dependencies are mentioned elsewhere in the code
rg -n '(python-dotenv|brotli|zstd|librosa|imageio)' --type=toml --type=txt --type=md | head -30

Repository: Runware/ComfyUI-Runware

Length of output: 299


🏁 Script executed:

# Search for any reference to brotli, zstd, imageio in the codebase
rg -n '(brotli|zstd|imageio)' --type=py | head -20

Repository: Runware/ComfyUI-Runware

Length of output: 416


🏁 Script executed:

# Check if there are any conditional imports or usage patterns
rg -n 'brotli|zstandard' --type=py -C3

Repository: Runware/ComfyUI-Runware

Length of output: 49


🏁 Script executed:

# List all Python files to understand the codebase structure
fd --type f -e py | head -20

Repository: Runware/ComfyUI-Runware

Length of output: 670


🏁 Script executed:

# Check if brotli or zstd are imported indirectly through requests or other libraries
rg -n 'import requests|from requests|requests\.' --type=py | head -10

Repository: Runware/ComfyUI-Runware

Length of output: 788


🏁 Script executed:

# Search for all imports to understand dependencies better
rg -n '^import |^from ' --type=py | grep -E '(brotli|zstd|imageio|librosa|dotenv)' || echo "No additional imports of these packages"

Repository: Runware/ComfyUI-Runware

Length of output: 173


🏁 Script executed:

# Check the overall imports and dependencies structure
rg -n 'Accept-Encoding' --type=py -B2 -A2

Repository: Runware/ComfyUI-Runware

Length of output: 1361


🏁 Script executed:

# Verify if imageio is actually used anywhere in the codebase
rg -n 'imageio|image' --type=py | grep -v '^Binary' | head -20

Repository: Runware/ComfyUI-Runware

Length of output: 3667


🏁 Script executed:

# Check if imageio is truly unused - search more comprehensively
rg -n 'imageio' --type=py -i

Repository: Runware/ComfyUI-Runware

Length of output: 49


🏁 Script executed:

# Check requirements.txt to see if it has any version pins
cat requirements.txt

Repository: Runware/ComfyUI-Runware

Length of output: 112


🏁 Script executed:

# Look for any package metadata or setup files that might indicate versions
find . -name "*.txt" -o -name "*.md" -o -name "*.rst" | grep -E '(readme|INSTALL|requirements|DEPENDENCIES)' | head -10

Repository: Runware/ComfyUI-Runware

Length of output: 86


🏁 Script executed:

# Check if there's a lock file or any pinned dependencies elsewhere
find . -name "*.lock" -o -name "poetry.lock" -o -name "pipfile.lock" 2>/dev/null

Repository: Runware/ComfyUI-Runware

Length of output: 49


🏁 Script executed:

# Double-check for imageio - search more broadly including comments
rg -n 'imageio' --type=py --type=toml --type=txt -i -C2

Repository: Runware/ComfyUI-Runware

Length of output: 334


🏁 Script executed:

# Check git history to understand why imageio was added
git log --oneline --all --grep="imageio" || echo "No git history found"

Repository: Runware/ComfyUI-Runware

Length of output: 49


🏁 Script executed:

# Verify the actual usage context of brotli and zstd through requests library
rg -n 'requests\.' --type=py | grep -i 'session\|adapter\|mount' | head -10

Repository: Runware/ComfyUI-Runware

Length of output: 203


🏁 Script executed:

# Get more context on how brotli/zstd are used - check HTTPAdapter configuration
rg -n 'HTTPAdapter' --type=py -A5 -B5

Repository: Runware/ComfyUI-Runware

Length of output: 1200


🏁 Script executed:

# Final verification: search for any commented-out or future imageio usage
rg -n 'imageio' . --type=py --type=md --type=txt -i

Repository: Runware/ComfyUI-Runware

Length of output: 96


🏁 Script executed:

# Check git to see if imageio was recently removed or if there are feature branches
git log --oneline --all | grep -i 'imageio\|image' | head -5 || echo "No git history available"

Repository: Runware/ComfyUI-Runware

Length of output: 386


Add version constraints to dependencies and remove unused imageio package.

The dependencies in pyproject.toml (line 23) are unbounded, which can lead to non-reproducible builds when upstream packages release new versions. Additionally, imageio does not appear to be used anywhere in the codebase and should be removed.

Of the remaining dependencies:

  • python-dotenv and librosa are directly imported
  • brotli and zstd are indirectly used by the requests library for compression support (referenced in Accept-Encoding headers)

Apply version constraints to pin major versions:

Proposed dependency update
-dependencies = ["python-dotenv", "brotli", "zstd", "librosa", "imageio"]
+dependencies = [
+  "python-dotenv>=1.0,<2",
+  "brotli>=1.1,<2",
+  "zstd>=1.5,<2",
+  "librosa>=0.10,<1",
+]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
dependencies = ["python-dotenv", "brotli", "zstd", "librosa", "imageio"]
dependencies = [
"python-dotenv>=1.0,<2",
"brotli>=1.1,<2",
"zstd>=1.5,<2",
"librosa>=0.10,<1",
]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pyproject.toml` at line 23, Update the dependencies list in pyproject.toml to
remove the unused "imageio" entry and add explicit major-version constraints for
each remaining package (e.g., use ranges like ">=1,<2" to pin to a major
version). Specifically, replace the current dependencies = ["python-dotenv",
"brotli", "zstd", "librosa", "imageio"] with a list that removes "imageio" and
constrains "python-dotenv", "brotli", "zstd", and "librosa" to a major-version
range (for example "python-dotenv >=1,<2", "brotli >=1,<2", "zstd >=1,<2",
"librosa >=0,<1" or other appropriate major ranges), ensuring reproducible
installs.


[project.urls]
Repository = "https://github.com/Runware/ComfyUI-Runware"
# Used by Comfy Registry https://registry.comfy.org
Documentation = "https://github.com/Runware/ComfyUI-Runware/wiki"
"Bug Tracker" = "https://github.com/Runware/ComfyUI-Runware/issues"

[tool.comfy]
PublisherId = ""
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

Comfy Registry pyproject.toml requirements: Is [tool.comfy].PublisherId required and must it be non-empty for publishing?

💡 Result:

Yes, [tool.comfy].PublisherId is required in pyproject.toml for publishing to Comfy Registry, and it must be non-empty. The official documentation explicitly states it as "PublisherId (required)" and describes it as "Your unique publisher identifier, typically matching your GitHub username." Publishing guides require creating a publisher account on registry.comfy.org to obtain this ID (after the @ on your profile) and adding it to pyproject.toml. Examples from repos like ComfyUI-Manager use non-empty values like "drltdata". CLI tools parse it, and PRs emphasize adding it for registry inclusion.

Citations:


PublisherId is empty and required for Comfy Registry publishing.

Line 32 sets PublisherId = "". According to Comfy Registry specifications, PublisherId is a required field that must contain your non-empty publisher identifier (typically your GitHub username). Register on registry.comfy.org to obtain your publisher ID and add it here.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pyproject.toml` at line 32, The PublisherId field is currently empty; set
PublisherId to your registered Comfy Registry publisher identifier (e.g., your
GitHub username) instead of ""; obtain/register the ID at registry.comfy.org if
you don't have one and update the PublisherId value in pyproject.toml so it is a
non-empty string.

DisplayName = "ComfyUI-Runware"
Icon = ""
includes = []
# "requires-comfyui" = ">=1.0.0" # ComfyUI version compatibility