Skip to content

Add pyproject.toml for Custom Node Registry#1

Open
robinjhuang wants to merge 1 commit intoRunware:mainfrom
ComfyNodePRs:pyproject
Open

Add pyproject.toml for Custom Node Registry#1
robinjhuang wants to merge 1 commit intoRunware:mainfrom
ComfyNodePRs:pyproject

Conversation

@robinjhuang
Copy link
Copy Markdown

@robinjhuang robinjhuang commented Dec 21, 2024

Hey! My name is Robin and I'm from comfy-org! We would love to have you join the Comfy Registry, a public collection of custom nodes which lets authors publish nodes by version and automate testing against existing workflows.

Eventually, the registry will be integrated as a backend for the UI-manager where all nodes will go through a security scan. Nodes that pass these checks will have a verification flag (✅) beside their name on the UI-manager. Feel free to read up more on the registry here

Action Required:

  • Go to the registry. Login and create a publisher id (everything after the @ sign on your registry profile).
  • Add the publisher id into the pyproject.toml file.
  • Merge the separate Github Actions PR, then merge this PR.

If you want to publish the node manually, install the cli by running pip install comfy-cli, then run comfy node publish

Otherwise, if you have any questions, please message me on discord at robinken or join our server!

Summary by CodeRabbit

  • Chores
    • Added a project configuration manifest with name, description, version, license, and repository/documentation/bug-tracker URLs.
    • Declared runtime dependencies for environment variables, compression, audio processing, and image handling.
    • Added UI registry metadata (publisher, display name, icon) and initialized an includes list for integration.

@comfy-pr-bot comfy-pr-bot force-pushed the pyproject branch 11 times, most recently from adf0cb0 to 3f3b9b7 Compare March 7, 2026 14:08
@comfy-pr-bot comfy-pr-bot force-pushed the pyproject branch 11 times, most recently from 2c342da to f199ae1 Compare March 14, 2026 20:35
@comfy-pr-bot comfy-pr-bot force-pushed the pyproject branch 8 times, most recently from bb95926 to 0534b32 Compare March 20, 2026 00:20
@comfy-pr-bot comfy-pr-bot force-pushed the pyproject branch 10 times, most recently from 9273eee to 86aa7bf Compare April 5, 2026 04:25
@comfy-pr-bot comfy-pr-bot force-pushed the pyproject branch 10 times, most recently from 3f7996c to 52198a0 Compare April 12, 2026 11:27
@comfy-pr-bot comfy-pr-bot force-pushed the pyproject branch 7 times, most recently from e9b82fa to 18de987 Compare April 18, 2026 01:27
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 25, 2026

Important

Review skipped

Auto reviews are disabled on this repository. To trigger a review, include review in the PR description. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5918186c-c57e-4d42-b92b-bf778598d1d8

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

Adds a new pyproject.toml manifest for the runware project declaring package metadata, runtime dependencies, project URLs (repository, documentation, bug tracker), and a [tool.comfy] ComfyUI registry block with PublisherId, DisplayName, Icon, and an empty includes array.

Changes

Cohort / File(s) Summary
Project Configuration
pyproject.toml
Adds new project manifest specifying package metadata (name, version, license, description), runtime dependencies (python-dotenv, brotli, zstd, librosa, imageio, etc.), project URLs (Repository, Documentation, Bug Tracker), and a [tool.comfy] registry configuration (PublisherId, DisplayName, Icon, empty includes).

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐇 A tiny file hopped in with cheer,
Fields and deps arranged so clear,
Comfy registry set, includes left bare,
A simple manifest, light as air —
Hooray for packaging handled with care! 🥕📦

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'Add pyproject.toml for Custom Node Registry' directly and concisely describes the main change: adding a pyproject.toml file to support Custom Node Registry integration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
✨ Simplify code
  • Create PR with simplified code

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
pyproject.toml (1)

1-5: Add packaging baseline fields for broader tool compatibility.

The pyproject.toml is missing [build-system] and requires-python. While modern build tools default to setuptools when absent, including explicit [build-system] is strongly recommended per PyPA guidance for reliability and reproducibility. The requires-python field should match the documented requirement of Python 3.10+ from the README.

Proposed metadata completion
+[build-system]
+requires = ["setuptools>=68", "wheel"]
+build-backend = "setuptools.build_meta"
+
 [project]
 name = "runware"
 description = "Runware Inference API Integration for ComfyUI (No GPU Required)."
 version = "1.0.0"
 license = "MIT" 
+requires-python = ">=3.10"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pyproject.toml` around lines 1 - 5, The pyproject.toml is missing explicit
build-system metadata and the project's Python requirement; add a
requires-python field under the [project] table (e.g. requires-python =
">=3.10") and add a [build-system] table with build-backend =
"setuptools.build_meta" and a requires list such as ["setuptools>=61.0","wheel"]
so builds are reproducible and tools recognize the Python baseline; update the
existing [project] block (name/version/license) and add the new [build-system]
block to the file.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pyproject.toml`:
- 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.
- 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.

---

Nitpick comments:
In `@pyproject.toml`:
- Around line 1-5: The pyproject.toml is missing explicit build-system metadata
and the project's Python requirement; add a requires-python field under the
[project] table (e.g. requires-python = ">=3.10") and add a [build-system] table
with build-backend = "setuptools.build_meta" and a requires list such as
["setuptools>=61.0","wheel"] so builds are reproducible and tools recognize the
Python baseline; update the existing [project] block (name/version/license) and
add the new [build-system] block to the file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: b2336968-eaeb-49d2-b2a7-957c1a359cec

📥 Commits

Reviewing files that changed from the base of the PR and between 5b593ce and 0afac75.

📒 Files selected for processing (1)
  • pyproject.toml

Comment thread pyproject.toml
# "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.

Comment thread pyproject.toml
"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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant