haybale-comfyui 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- haybale_comfyui-0.0.1/.gitignore +42 -0
- haybale_comfyui-0.0.1/PKG-INFO +13 -0
- haybale_comfyui-0.0.1/README.md +27 -0
- haybale_comfyui-0.0.1/haybale_comfyui/OVERVIEW.md +13 -0
- haybale_comfyui-0.0.1/haybale_comfyui/QUICKREF.md +10 -0
- haybale_comfyui-0.0.1/haybale_comfyui/__init__.py +103 -0
- haybale_comfyui-0.0.1/haybale_comfyui/adapters/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/docs/haybale-comfyui.node.ComfyUIWorkflowNode.md +41 -0
- haybale_comfyui-0.0.1/haybale_comfyui/docs/haybale-comfyui.panel.ComfyUISettingsPanel.md +14 -0
- haybale_comfyui-0.0.1/haybale_comfyui/docs/haybale-comfyui.setting.ComfyUISettings.md +9 -0
- haybale_comfyui-0.0.1/haybale_comfyui/editors/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/haybale.toml +48 -0
- haybale_comfyui-0.0.1/haybale_comfyui/macros/.gitkeep +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/nodes/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/nodes/comfyui_workflow.py +372 -0
- haybale_comfyui-0.0.1/haybale_comfyui/panels/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/panels/comfyui_settings_panel.py +32 -0
- haybale_comfyui-0.0.1/haybale_comfyui/runtime/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/runtime/client.py +250 -0
- haybale_comfyui-0.0.1/haybale_comfyui/runtime/directory.py +146 -0
- haybale_comfyui-0.0.1/haybale_comfyui/runtime/images.py +27 -0
- haybale_comfyui-0.0.1/haybale_comfyui/runtime/placeholders.py +279 -0
- haybale_comfyui-0.0.1/haybale_comfyui/runtime/tracker.py +169 -0
- haybale_comfyui-0.0.1/haybale_comfyui/settings/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/settings/comfyui_settings.py +53 -0
- haybale_comfyui-0.0.1/haybale_comfyui/skins/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/states/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/themes/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/types/__init__.py +0 -0
- haybale_comfyui-0.0.1/haybale_comfyui/widgets/__init__.py +0 -0
- haybale_comfyui-0.0.1/pyproject.toml +37 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Patterns below are anchored with a leading slash (/build/) so they match only
|
|
2
|
+
# at the repo root. An unanchored pattern (build/) matches at EVERY depth —
|
|
3
|
+
# including inside barn/, where it would silently exclude your library's own
|
|
4
|
+
# files. See the note at the end of this file before adding patterns.
|
|
5
|
+
|
|
6
|
+
# Byte-compiled / optimized / DLL files
|
|
7
|
+
__pycache__/
|
|
8
|
+
*.py[cod]
|
|
9
|
+
*$py.class
|
|
10
|
+
|
|
11
|
+
# Distribution / packaging (root only)
|
|
12
|
+
/build/
|
|
13
|
+
/dist/
|
|
14
|
+
*.egg-info/
|
|
15
|
+
*.egg
|
|
16
|
+
|
|
17
|
+
# Virtual environments (root only)
|
|
18
|
+
/.venv/
|
|
19
|
+
/venv/
|
|
20
|
+
/env/
|
|
21
|
+
|
|
22
|
+
# Test / type-check caches
|
|
23
|
+
.pytest_cache/
|
|
24
|
+
.ruff_cache/
|
|
25
|
+
.mypy_cache/
|
|
26
|
+
.tox/
|
|
27
|
+
.coverage
|
|
28
|
+
htmlcov/
|
|
29
|
+
|
|
30
|
+
# Editor / OS
|
|
31
|
+
.DS_Store
|
|
32
|
+
.idea/
|
|
33
|
+
.vscode/
|
|
34
|
+
|
|
35
|
+
# Haywire per-session UI state (open graph, pan/zoom) — not project state
|
|
36
|
+
.haywire/workspace_state.json
|
|
37
|
+
|
|
38
|
+
# ── Before you add a pattern ────────────────────────────────────────────────
|
|
39
|
+
# Anything ignored inside barn/<your-library>/ will be MISSING for everyone who
|
|
40
|
+
# installs your library — haywire share publishes by git URL, so consumers get
|
|
41
|
+
# a clone of this repo, not a built package. If a pattern is only meant for the
|
|
42
|
+
# repo root, anchor it with a leading slash: /build/ not build/.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: haybale-comfyui
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Run ComfyUI workflows on a ComfyUI server
|
|
5
|
+
License: MIT
|
|
6
|
+
Keywords: comfyui,diffusion,image,remote
|
|
7
|
+
Requires-Python: >=3.12
|
|
8
|
+
Requires-Dist: haybale-image>=0.3.4
|
|
9
|
+
Requires-Dist: haywire-core>=0.3.4
|
|
10
|
+
Requires-Dist: httpx>=0.27
|
|
11
|
+
Requires-Dist: numpy
|
|
12
|
+
Requires-Dist: pillow
|
|
13
|
+
Requires-Dist: websockets>=13
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# ComfyUI
|
|
2
|
+
|
|
3
|
+
<!-- marketstall:share-url:start -->
|
|
4
|
+
Always the latest (tracks the current branch):
|
|
5
|
+
|
|
6
|
+
```sh
|
|
7
|
+
https://github.com/going-haywire/haybale-comfyui/blob/master/marketstall.toml
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Frozen to this version:
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
https://github.com/going-haywire/haybale-comfyui/blob/v0.0.1/marketstall.toml
|
|
14
|
+
```
|
|
15
|
+
<!-- marketstall:share-url:end -->
|
|
16
|
+
|
|
17
|
+
Run ComfyUI workflows on a ComfyUI server
|
|
18
|
+
|
|
19
|
+
## Nodes
|
|
20
|
+
### Image
|
|
21
|
+
- **ComfyUI Workflow** — Runs a workflow on a ComfyUI server and returns its images
|
|
22
|
+
|
|
23
|
+
## Settings
|
|
24
|
+
- **ComfyUI** — Server address, authentication and timeout
|
|
25
|
+
|
|
26
|
+
## Panels
|
|
27
|
+
- **ComfyUI** — Server address, authentication and timeout for ComfyUI workflows.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# ComfyUI
|
|
2
|
+
|
|
3
|
+
Run ComfyUI workflows on a ComfyUI server
|
|
4
|
+
|
|
5
|
+
## Nodes
|
|
6
|
+
### Image
|
|
7
|
+
- **ComfyUI Workflow** — Runs a workflow on a ComfyUI server and returns its images
|
|
8
|
+
|
|
9
|
+
## Settings
|
|
10
|
+
- **ComfyUI** — Server address, authentication and timeout
|
|
11
|
+
|
|
12
|
+
## Panels
|
|
13
|
+
- **ComfyUI** — Server address, authentication and timeout for ComfyUI workflows.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# haybale-comfyui — component index (v0.0.1)
|
|
2
|
+
|
|
3
|
+
## node
|
|
4
|
+
- `haybale-comfyui:node:ComfyUIWorkflowNode` — ComfyUI Workflow — Runs a workflow on a ComfyUI server and returns its images _tags: comfyui, comfy, workflow, diffusion, stable diffusion, generate, remote_
|
|
5
|
+
|
|
6
|
+
## setting
|
|
7
|
+
- `haybale-comfyui:setting:ComfyUISettings` — ComfyUI — Server address, authentication and timeout
|
|
8
|
+
|
|
9
|
+
## panel
|
|
10
|
+
- `haybale-comfyui:panel:ComfyUISettingsPanel` — ComfyUI — Server address, authentication and timeout for ComfyUI workflows.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Local haybale library for the haybale-comfyui project.
|
|
3
|
+
|
|
4
|
+
Add your custom components in the corresponding folders:
|
|
5
|
+
- nodes/ — node definitions
|
|
6
|
+
- macros/ — macro documents (.hwm)
|
|
7
|
+
- types/ — custom data types
|
|
8
|
+
- widgets/ — UI widgets for data types
|
|
9
|
+
- skins/ — custom node skins
|
|
10
|
+
- adapters/ — type-to-type conversion adapters
|
|
11
|
+
- settings/ — library settings definitions
|
|
12
|
+
- states/ — library app and session states
|
|
13
|
+
- themes/ — workbench and node themes
|
|
14
|
+
- panels/ — custom UI panels
|
|
15
|
+
- editors/ — custom UI editors
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
|
|
20
|
+
from haywire.core.library.base import BaseLibrary
|
|
21
|
+
from haywire.core.library.decorator import library
|
|
22
|
+
from haywire.core.adapter.registry import AdapterRegistry
|
|
23
|
+
from haywire.core.macro.registry import MacroRegistry
|
|
24
|
+
from haywire.core.node.registry import NodeRegistry
|
|
25
|
+
from haywire.core.settings.registry import SettingsRegistry
|
|
26
|
+
from haywire.core.types.registry import TypeRegistry
|
|
27
|
+
from haywire.core.state import LibraryStateRegistry
|
|
28
|
+
|
|
29
|
+
from haywire.ui.editor.registry import EditorTypeRegistry
|
|
30
|
+
from haywire.ui.panel.registry import PanelRegistry
|
|
31
|
+
from haywire.ui.skin.registry import SkinRegistry
|
|
32
|
+
from haywire.ui.themes.registry import ThemeRegistry
|
|
33
|
+
from haywire.ui.widget.registry import WidgetRegistry
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@library(
|
|
37
|
+
file_watcher=True,
|
|
38
|
+
)
|
|
39
|
+
class Library(BaseLibrary):
|
|
40
|
+
"""Local project library — add your components in the subfolders."""
|
|
41
|
+
|
|
42
|
+
def register_components(self):
|
|
43
|
+
"""Register all components with the global registries."""
|
|
44
|
+
base_path = Path(__file__).parent
|
|
45
|
+
|
|
46
|
+
self.add_folder_to_registry(
|
|
47
|
+
folder_path=str(base_path / "settings"),
|
|
48
|
+
registry_cls=SettingsRegistry,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
self.add_folder_to_registry(
|
|
52
|
+
folder_path=str(base_path / "states"),
|
|
53
|
+
registry_cls=LibraryStateRegistry,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
self.add_folder_to_registry(
|
|
57
|
+
folder_path=str(base_path / "themes"),
|
|
58
|
+
registry_cls=ThemeRegistry,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
self.add_folder_to_registry(
|
|
62
|
+
folder_path=str(base_path / "types"),
|
|
63
|
+
registry_cls=TypeRegistry,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
self.add_folder_to_registry(
|
|
67
|
+
folder_path=str(base_path / "adapters"),
|
|
68
|
+
registry_cls=AdapterRegistry,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
self.add_folder_to_registry(
|
|
72
|
+
folder_path=str(base_path / "widgets"),
|
|
73
|
+
registry_cls=WidgetRegistry,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
self.add_folder_to_registry(
|
|
77
|
+
folder_path=str(base_path / "skins"),
|
|
78
|
+
registry_cls=SkinRegistry,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
self.add_folder_to_registry(
|
|
82
|
+
folder_path=str(base_path / "nodes"),
|
|
83
|
+
registry_cls=NodeRegistry,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
self.add_folder_to_registry(
|
|
87
|
+
folder_path=str(base_path / "macros"),
|
|
88
|
+
registry_cls=MacroRegistry,
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
self.add_folder_to_registry(
|
|
92
|
+
folder_path=str(base_path / "panels"),
|
|
93
|
+
registry_cls=PanelRegistry,
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
self.add_folder_to_registry(
|
|
97
|
+
folder_path=str(base_path / "editors"),
|
|
98
|
+
registry_cls=EditorTypeRegistry,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
def validate(self) -> bool:
|
|
102
|
+
"""Validate library structure."""
|
|
103
|
+
return True
|
|
File without changes
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# ComfyUI Workflow
|
|
2
|
+
|
|
3
|
+
`haybale-comfyui:node:ComfyUIWorkflowNode` · kind: node
|
|
4
|
+
|
|
5
|
+
Runs a workflow on a ComfyUI server and returns its images
|
|
6
|
+
|
|
7
|
+
## Ports
|
|
8
|
+
|
|
9
|
+
| id | direction | type | description |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| `source.workflow` | config | `haywire-core:type:CHOICES` | A workflow open in ComfyUI that holds a Haywire Output, by its file name. Picking one rebuilds the node's inlets and outlets from its Haywire nodes |
|
|
12
|
+
| `source.reload` | config | `haywire-core:type:BOOL` | Take the workflow's latest version from ComfyUI |
|
|
13
|
+
| `progress.main` | config | `haywire-core:type:PROGRESS` | |
|
|
14
|
+
| `out_image` | outlet | `haybale-image:type:IMAGE` | Haywire Output 'Image' |
|
|
15
|
+
|
|
16
|
+
## Settings
|
|
17
|
+
|
|
18
|
+
| name | bag | default | description |
|
|
19
|
+
|---|---|---|---|
|
|
20
|
+
| `workflow` | source | `''` | A workflow open in ComfyUI that holds a Haywire Output, by its file name. Picking one rebuilds the node's inlets and outlets from its Haywire nodes |
|
|
21
|
+
| `reload` | source | `False` | Take the workflow's latest version from ComfyUI |
|
|
22
|
+
| `main` | progress | `PROGRESS(active=False, fraction=None, label='')` | |
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
Runs a workflow on a ComfyUI server and returns its images.
|
|
27
|
+
|
|
28
|
+
Build the workflow in ComfyUI (server address: *ComfyUI* library settings) with the
|
|
29
|
+
comfyui-haywire nodes installed, and mark what haywire controls:
|
|
30
|
+
|
|
31
|
+
- *Haywire Parameter* becomes an inlet (number, integer, toggle, text, prompt, choice).
|
|
32
|
+
- *Haywire Image* becomes an IMAGE inlet.
|
|
33
|
+
- *Haywire Output* becomes an IMAGE outlet.
|
|
34
|
+
|
|
35
|
+
While the workflow is open in ComfyUI it appears under `Workflow` by its file name.
|
|
36
|
+
Picking it copies it into this node, so the graph runs later without ComfyUI's page
|
|
37
|
+
open. When the workflow changes in ComfyUI the card says so; press `Reload` to take
|
|
38
|
+
the new version.
|
|
39
|
+
|
|
40
|
+
The node runs again when an inlet changes. To get a new image from the same inputs,
|
|
41
|
+
expose the seed as a Haywire Parameter and change it.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# ComfyUI
|
|
2
|
+
|
|
3
|
+
`haybale-comfyui:panel:ComfyUISettingsPanel` · kind: panel
|
|
4
|
+
|
|
5
|
+
Server address, authentication and timeout for ComfyUI workflows.
|
|
6
|
+
|
|
7
|
+
## Details
|
|
8
|
+
|
|
9
|
+
- **surface**: `barns`
|
|
10
|
+
- **order**: `20`
|
|
11
|
+
|
|
12
|
+
## Notes
|
|
13
|
+
|
|
14
|
+
Server address, authentication and timeout for ComfyUI workflows.
|
|
File without changes
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Library metadata. Canon for everything descriptive about this haybale; ships
|
|
2
|
+
# in the wheel beside __init__.py and is read from disk at runtime. Full field
|
|
3
|
+
# reference: docs/reference/files/haybale-toml.md
|
|
4
|
+
|
|
5
|
+
# ── identity — immutable ──────────────────────────────────────────────────
|
|
6
|
+
name = "haybale-comfyui" # pip distribution name; also prefixes every
|
|
7
|
+
# component's registry key, e.g. haybale-comfyui:node:Add
|
|
8
|
+
|
|
9
|
+
# ── written by scripts/bump_version.py / the share wizard, not by hand ──────
|
|
10
|
+
version = "0.0.1" # PEP 440, no "v" — canon here; pyproject.toml carries the synced copy
|
|
11
|
+
|
|
12
|
+
# ── display ───────────────────────────────────────────────────────────────
|
|
13
|
+
label = "ComfyUI" # human display name
|
|
14
|
+
description = "Run ComfyUI workflows on a ComfyUI server" # one line
|
|
15
|
+
tags = ["image", "comfyui", "diffusion", "remote"] # filter tags in the library browser
|
|
16
|
+
|
|
17
|
+
# ── behaviour ─────────────────────────────────────────────────────────────
|
|
18
|
+
# os = ["macos", "linux"] # macos/linux/windows; empty/absent = every platform
|
|
19
|
+
# on_reload = "none" # none (default) / refresh (reload tab) / restart (restart studio)
|
|
20
|
+
|
|
21
|
+
# Sibling haybales this library subscribes to, as MODULE names (not
|
|
22
|
+
# distribution names). Required for hot-reload scope tracking.
|
|
23
|
+
linked_libraries = ["haybale_image"]
|
|
24
|
+
|
|
25
|
+
# ── declared paths, relative to the project root ────────────────────────────
|
|
26
|
+
# examples_path = "examples/"
|
|
27
|
+
# tests_path = "tests/"
|
|
28
|
+
|
|
29
|
+
# One supplementary human-readable page: a bare filename in this directory.
|
|
30
|
+
# notes = "NOTES.md"
|
|
31
|
+
|
|
32
|
+
# ── absolute URLs, used verbatim ─────────────────────────────────────────────
|
|
33
|
+
# homepage_url = "https://example.com"
|
|
34
|
+
# documentation_url = "https://example.com/docs/"
|
|
35
|
+
# issues_url = "https://example.com/issues"
|
|
36
|
+
|
|
37
|
+
# Repeatable; url is optional. Written by the studio's library overview edit modal.
|
|
38
|
+
# [[authors]]
|
|
39
|
+
# name = "Your Name"
|
|
40
|
+
# url = "https://your.site"
|
|
41
|
+
|
|
42
|
+
# Omitted unless the library is being retired — hand-edited, no edit-modal field.
|
|
43
|
+
# [deprecated]
|
|
44
|
+
# since = "0.1.0"
|
|
45
|
+
# reason = "Superseded by haybale-successor."
|
|
46
|
+
# successor = "haybale-successor"
|
|
47
|
+
origin = "https://github.com/going-haywire/haybale-comfyui"
|
|
48
|
+
origin_provider = "github"
|
|
File without changes
|
|
File without changes
|