From 4e38816053a32758e5fb3a41ed2dd88a567bfd4b Mon Sep 17 00:00:00 2001 From: dacert Date: Sun, 19 Jul 2026 16:17:32 +0100 Subject: [PATCH 1/5] Add CI --- .github/workflows/ci.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..c5a24d3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,31 @@ +name: CI + +on: + pull_request: + branches: [master] + +jobs: + ci: + strategy: + matrix: + python-version: ["3.10", "3.12"] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install system deps (PyQt5) + run: sudo apt-get update && sudo apt-get install -y libxcb-cursor0 + - name: Install package + run: pip install -e ".[dev]" + - name: Install ty + run: pip install ty + - name: Lint + run: ruff check . + - name: Format check + run: ruff format --check . + - name: Type check + run: QT_QPA_PLATFORM=offscreen python -m ty check src tests + - name: Test + run: QT_QPA_PLATFORM=offscreen pytest -v From 0f4cbd3cab263f2bbf99e82203198ce28a8c765a Mon Sep 17 00:00:00 2001 From: dacert Date: Sun, 19 Jul 2026 17:12:50 +0100 Subject: [PATCH 2/5] Fix ty --- .gitignore | 1 + AGENTS.md | 10 ++++++++-- pyproject.toml | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index aef3281..e388711 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ MANIFEST # Virtual environments .venv/ +.venv_win venv/ env/ ENV/ diff --git a/AGENTS.md b/AGENTS.md index a02af43..2248ad4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,9 +1,15 @@ # Commands used in this repository +## Environment +```bash +python3 -m venv .venv +source .venv/bin/activate +``` + ## Install (editable + dev deps) ```bash -pip install -e . pip install -e ".[dev]" +pip install ty ``` ## Lint / format @@ -14,7 +20,7 @@ ruff format . ## Type check ```bash -PYTHONPATH=$(python3 -c "import site; print(site.getusersitepackages())") ty check src tests +QT_QPA_PLATFORM=offscreen python -m ty check src tests ``` ## Tests diff --git a/pyproject.toml b/pyproject.toml index d3096b6..c32bd9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,8 @@ dev = [ "pytest-qt>=4", "pytest-mock>=3", "ruff>=0.6", + "ty>=0.0.61", + "PyQt5-stubs>=5.15", ] [tool.setuptools] From 509903329dd26fe3c1dadd6700a008a017cf3ecc Mon Sep 17 00:00:00 2001 From: dacert Date: Sun, 19 Jul 2026 18:41:14 +0100 Subject: [PATCH 3/5] fix issues --- src/comfy_graph_bind/api.py | 2 +- src/comfy_graph_bind/node_item.py | 7 +----- src/comfy_graph_bind/port_item.py | 6 ++--- src/comfy_graph_bind/scene.py | 32 ++++++++++++++++++------- src/comfy_graph_bind/start_node.py | 4 ++-- src/comfy_graph_bind/view.py | 4 ++-- src/comfy_graph_bind/workflow_parser.py | 2 +- tests/test_link_creation.py | 11 ++++----- 8 files changed, 38 insertions(+), 30 deletions(-) diff --git a/src/comfy_graph_bind/api.py b/src/comfy_graph_bind/api.py index 5893444..2f07b05 100644 --- a/src/comfy_graph_bind/api.py +++ b/src/comfy_graph_bind/api.py @@ -115,8 +115,8 @@ def port_filter(self) -> PortFilter: def reset_view(self) -> None: for item in self._scene.node_items(): item.reset_position() - self._view.reset_view() self._scene.setSceneRect(self._scene._compute_scene_rect()) + self._view.reset_view() def get_result(self) -> dict: inputs: dict[str, dict[str, str]] = {} diff --git a/src/comfy_graph_bind/node_item.py b/src/comfy_graph_bind/node_item.py index b42c8c5..a36f828 100644 --- a/src/comfy_graph_bind/node_item.py +++ b/src/comfy_graph_bind/node_item.py @@ -2,8 +2,6 @@ from __future__ import annotations -from collections.abc import Callable - from PyQt5.QtCore import QPointF, QRectF, Qt from PyQt5.QtGui import QBrush, QColor, QFont, QPainter, QPen from PyQt5.QtWidgets import ( @@ -113,7 +111,7 @@ def itemChange(self, change, value): # noqa: N802 - Qt API scene = self.scene() if isinstance(scene, GraphScene): - scene.node_moved(self) + scene.node_moved(self, QPointF(value)) return super().itemChange(change, value) def mousePressEvent(self, event: QGraphicsSceneMouseEvent) -> None: # noqa: N802 - Qt API @@ -245,6 +243,3 @@ def build_node_outputs(node) -> list[tuple[int, str, str, bool]]: continue out.append((i, s.name or "", str(s.type) if s.type is not None else "*", False)) return out - - -CallableType = Callable[[QPointF, QPointF], None] diff --git a/src/comfy_graph_bind/port_item.py b/src/comfy_graph_bind/port_item.py index 95f65b8..c6e4b09 100644 --- a/src/comfy_graph_bind/port_item.py +++ b/src/comfy_graph_bind/port_item.py @@ -15,6 +15,8 @@ from PyQt5.QtGui import QBrush, QColor, QPen from PyQt5.QtWidgets import QGraphicsEllipseItem, QStyleOptionGraphicsItem, QWidget +from .layout import PORT_HOVER_RADIUS + @dataclass(frozen=True) class PortRef: @@ -91,7 +93,3 @@ def paint( # noqa: D401 - Qt API painter.setBrush(QBrush(color)) painter.setPen(QPen(color.darker(160), 1.4)) painter.drawEllipse(QPointF(0, 0), r, r) - - -# Late import to avoid a cycle between PortItem and layout helpers. -from .layout import PORT_HOVER_RADIUS # noqa: E402 diff --git a/src/comfy_graph_bind/scene.py b/src/comfy_graph_bind/scene.py index 31b24ca..907d360 100644 --- a/src/comfy_graph_bind/scene.py +++ b/src/comfy_graph_bind/scene.py @@ -67,12 +67,11 @@ def add_node_item(self, item: GraphNodeItem, data: Any | None = None) -> None: if data is not None: self._node_data[item.node_id] = data self.addItem(item) - for port in item.port_items: - del port - def node_moved(self, _node: GraphNodeItem) -> None: + def node_moved(self, _node: GraphNodeItem, new_scene_pos: QPointF) -> None: for link in self._links.values(): - self._refresh_link(link) + if link.source.node_id == _node.node_id or link.target.node_id == _node.node_id: + self._refresh_link(link, _node, new_scene_pos) def detach_links_for_node(self, node: GraphNodeItem) -> None: for link in list(self._links.values()): @@ -113,7 +112,7 @@ def clear_user_links(self) -> None: self._links.pop(link.link_id, None) def mousePressEvent(self, event: QGraphicsSceneMouseEvent) -> None: - view = self.views()[0] if self.views() else None + view = next(iter(self.views()), None) transform = view.transform() if view is not None else QTransform() item = self.itemAt(event.scenePos(), transform) if isinstance(item, PortItem) and not item.ref.is_input and item.ref.is_start: @@ -131,7 +130,7 @@ def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent) -> None: def mouseReleaseEvent(self, event: QGraphicsSceneMouseEvent) -> None: if self._drag_source is not None and self._temp_link is not None: - view = self.views()[0] if self.views() else None + view = next(iter(self.views()), None) transform = view.transform() if view is not None else QTransform() target_item = self.itemAt(event.scenePos(), transform) if isinstance(target_item, PortItem) and target_item.ref.is_input: @@ -160,12 +159,29 @@ def _end_link_drag(self) -> None: self._temp_link = None self._drag_source = None - def _refresh_link(self, link: LinkItem) -> None: + def _refresh_link( + self, + link: LinkItem, + moved_node: GraphNodeItem | None = None, + moved_node_new_scene_pos: QPointF | None = None, + ) -> None: src_item = self._find_port_item(link.source) dst_item = self._find_port_item(link.target) if src_item is None or dst_item is None: return - link.set_endpoints(src_item.scene_center(), dst_item.scene_center()) + if moved_node is not None and moved_node_new_scene_pos is not None: + if link.source.node_id == moved_node.node_id: + src_center = src_item.pos() + moved_node_new_scene_pos + else: + src_center = src_item.scene_center() + if link.target.node_id == moved_node.node_id: + dst_center = dst_item.pos() + moved_node_new_scene_pos + else: + dst_center = dst_item.scene_center() + else: + src_center = src_item.scene_center() + dst_center = dst_item.scene_center() + link.set_endpoints(src_center, dst_center) def _find_port_item(self, ref: PortRef) -> PortItem | None: if ref.is_start and not ref.is_input: diff --git a/src/comfy_graph_bind/start_node.py b/src/comfy_graph_bind/start_node.py index 0dbb3f1..0c5cd46 100644 --- a/src/comfy_graph_bind/start_node.py +++ b/src/comfy_graph_bind/start_node.py @@ -62,8 +62,8 @@ def rebuild_outputs(self, outputs: Sequence[StartOutputConfig]) -> None: scene.detach_links_for_node(self) old_ports = list(self.output_ports()) for p in old_ports: - if p.parentItem() is self: - scene.removeItem(p) if scene is not None else None + if p.parentItem() is self and scene is not None: + scene.removeItem(p) self._output_names = [o.name for o in outputs] self._inputs = [] from .layout import node_metrics diff --git a/src/comfy_graph_bind/view.py b/src/comfy_graph_bind/view.py index 608cd4d..fb4efaf 100644 --- a/src/comfy_graph_bind/view.py +++ b/src/comfy_graph_bind/view.py @@ -16,7 +16,6 @@ class GraphView(QGraphicsView): def __init__(self, scene) -> None: super().__init__(scene) - self.setRenderHints(self.renderHints() | self.renderHints()) from PyQt5.QtGui import QPainter self.setRenderHint(QPainter.Antialiasing, True) @@ -95,11 +94,12 @@ def mouseReleaseEvent(self, event) -> None: # noqa: N802 - Qt API # ------------------------------------------------------------------ def reset_view(self) -> None: """Restore the default zoom (1.0) and recenter the scene.""" - self.resetTransform() from .scene import GraphScene scene = self.scene() + self.resetTransform() if isinstance(scene, GraphScene) and scene.start_node() is not None: self.centerOn(scene.start_node()) else: self.centerOn(QPointF(0, 0)) + self.viewport().update() diff --git a/src/comfy_graph_bind/workflow_parser.py b/src/comfy_graph_bind/workflow_parser.py index fa61bce..2714d11 100644 --- a/src/comfy_graph_bind/workflow_parser.py +++ b/src/comfy_graph_bind/workflow_parser.py @@ -33,7 +33,7 @@ class WorkflowGraph: def parse_workflow_json(path: str | pathlib.Path) -> WorkflowGraph: - with open(path) as f: + with open(path, encoding="utf-8") as f: data = json.load(f) return _parse_workflow_dict(data) diff --git a/tests/test_link_creation.py b/tests/test_link_creation.py index 972aeb3..15ea191 100644 --- a/tests/test_link_creation.py +++ b/tests/test_link_creation.py @@ -2,8 +2,13 @@ from __future__ import annotations +from PyQt5.QtCore import Qt + from comfy_graph_bind import EditorConfig, GraphEditor, PortFilter, StartOutputConfig +Qt_LeftButton = Qt.LeftButton +Qt_NoModifier = Qt.NoModifier + def _make_editor(qtbot, sample_graph): editor = GraphEditor( @@ -85,9 +90,3 @@ def test_link_to_widget_input(qtbot, sample_graph): link = editor.scene().create_link(prompt.ref, widget_port.ref) assert link is not None assert link.target.is_widget - - -from PyQt5.QtCore import Qt as _Qt # noqa: E402 - -Qt_LeftButton = _Qt.LeftButton -Qt_NoModifier = _Qt.NoModifier From f3420f0fc2bbad531bbe5395b9c192a7d0c5d50a Mon Sep 17 00:00:00 2001 From: dacert Date: Sun, 19 Jul 2026 19:00:11 +0100 Subject: [PATCH 4/5] Fix issues --- src/comfy_graph_bind/api.py | 37 ++++++++++--------------- src/comfy_graph_bind/layout.py | 2 +- src/comfy_graph_bind/port_item.py | 4 --- src/comfy_graph_bind/scene.py | 17 ++++-------- src/comfy_graph_bind/start_node.py | 14 ++++------ src/comfy_graph_bind/view.py | 4 +-- src/comfy_graph_bind/workflow_parser.py | 18 ++++++++---- tests/test_link_creation.py | 9 ++++-- 8 files changed, 47 insertions(+), 58 deletions(-) diff --git a/src/comfy_graph_bind/api.py b/src/comfy_graph_bind/api.py index 2f07b05..251fdaf 100644 --- a/src/comfy_graph_bind/api.py +++ b/src/comfy_graph_bind/api.py @@ -22,8 +22,8 @@ from .scene import GraphScene from .start_node import StartNodeItem, StartOutputConfig from .view import GraphView -from .workflow_parser import WorkflowGraph, WorkflowNode -from .workflow_parser import _is_link as _is_api_link +from .workflow_parser import WorkflowGraph, WorkflowNode, parse_workflow_dict +from .workflow_parser import is_link as _is_api_link @dataclass @@ -46,7 +46,6 @@ def __init__(self, graph: WorkflowGraph, config: EditorConfig) -> None: self._graph = graph self._config = config self._app: QApplication | None = None - self._owns_app = False self._ensure_qapp() self._start_node = StartNodeItem(config.start_outputs, title=config.start_node_title) self._scene = GraphScene([], self._start_node, port_filter=config.port_filter) @@ -60,8 +59,6 @@ def from_api_workflow( raw_api: dict, config: EditorConfig, ) -> GraphEditor: - from .workflow_parser import parse_workflow_dict - graph = parse_workflow_dict(raw_api) return cls(graph, config) @@ -83,8 +80,8 @@ def workflow_name(self) -> str: def set_start_node_title(self, title: str) -> None: self._config.start_node_title = title self._start_node.title = title - self._start_node.rebuild_outputs(self._config.start_outputs) - self._scene.setSceneRect(self._scene._compute_scene_rect()) + self._start_node.update() + self._scene.update_scene_rect() def start_node_title(self) -> str: return self._config.start_node_title @@ -92,10 +89,11 @@ def start_node_title(self) -> str: def set_start_outputs(self, outputs: Sequence[StartOutputConfig]) -> None: self._config.start_outputs = list(outputs) self._start_node.rebuild_outputs(outputs) - self._scene.setSceneRect(self._scene._compute_scene_rect()) + self._scene.update_scene_rect() - def add_output(self, name: str, type: str = "*") -> None: - outputs = list(self._config.start_outputs) + [StartOutputConfig(name=name, type=type)] + def add_output(self, name: str, output_type: str = "*") -> None: + new_output = StartOutputConfig(name=name, type=output_type) + outputs = list(self._config.start_outputs) + [new_output] self.set_start_outputs(outputs) def remove_output(self, name: str) -> None: @@ -115,7 +113,7 @@ def port_filter(self) -> PortFilter: def reset_view(self) -> None: for item in self._scene.node_items(): item.reset_position() - self._scene.setSceneRect(self._scene._compute_scene_rect()) + self._scene.update_scene_rect() self._view.reset_view() def get_result(self) -> dict: @@ -142,7 +140,7 @@ def _build_nodes(self, graph: WorkflowGraph) -> None: self._node_items[node.id] = item self._scene.add_node_item(item, data=node) self._create_existing_links(graph) - self._scene.setSceneRect(self._scene._compute_scene_rect()) + self._scene.update_scene_rect() def _make_node_item(self, node: WorkflowNode, port_filter: PortFilter) -> GraphNodeItem: inputs = build_node_inputs(node, port_filter) @@ -165,10 +163,9 @@ def _create_existing_links(self, graph: WorkflowGraph) -> None: for name, value in node.raw_inputs.items(): if not _is_api_link(value): continue - src_id = value[0] - src_idx = int(value[1]) with contextlib.suppress(ValueError, TypeError): - src_id = int(src_id) + src_id = int(value[0]) + src_idx = int(value[1]) if src_id not in self._node_items: continue @@ -194,11 +191,9 @@ def _create_existing_links(self, graph: WorkflowGraph) -> None: def _ensure_qapp(self) -> None: app = QApplication.instance() if app is None: - self._app = QApplication([]) - self._owns_app = True - else: - assert isinstance(app, QApplication) - self._app = app + app = QApplication([]) + assert isinstance(app, QApplication) + self._app = app class GraphEditorDialog(QDialog): @@ -272,8 +267,6 @@ def from_api_workflow( initial_result: dict | None = None, parent: QWidget | None = None, ) -> GraphEditorDialog: - from .workflow_parser import parse_workflow_dict - graph = parse_workflow_dict(raw_api) return cls(graph, config, initial_result=initial_result, parent=parent) diff --git a/src/comfy_graph_bind/layout.py b/src/comfy_graph_bind/layout.py index 238a2ff..e274242 100644 --- a/src/comfy_graph_bind/layout.py +++ b/src/comfy_graph_bind/layout.py @@ -41,7 +41,7 @@ def _max_label_width(labels: Sequence[str] | None) -> float: try: fm = QFontMetrics(_label_font()) return float(max(fm.horizontalAdvance(s) for s in labels)) - except Exception: + except (RuntimeError, ValueError): return max(len(s) * LABEL_CHAR_PX for s in labels) diff --git a/src/comfy_graph_bind/port_item.py b/src/comfy_graph_bind/port_item.py index c6e4b09..301563c 100644 --- a/src/comfy_graph_bind/port_item.py +++ b/src/comfy_graph_bind/port_item.py @@ -30,10 +30,6 @@ class PortRef: is_widget: bool = False is_start: bool = False - @property - def key(self) -> tuple[int | str, int, bool]: - return (self.node_id, self.slot_index, self.is_input) - def _port_color(is_input: bool, is_start: bool) -> QColor: if is_start and not is_input: diff --git a/src/comfy_graph_bind/scene.py b/src/comfy_graph_bind/scene.py index 907d360..56bf94a 100644 --- a/src/comfy_graph_bind/scene.py +++ b/src/comfy_graph_bind/scene.py @@ -24,7 +24,7 @@ def __init__( self, nodes: Iterable[GraphNodeItem], start_node: StartNodeItem, - port_filter: PortFilter = PortFilter.LINKED_ONLY, + port_filter: PortFilter = PortFilter.ALL_INCLUDE_WIDGETS, ) -> None: super().__init__() self.setBackgroundBrush(QBrush(QColor("#121212"))) @@ -216,15 +216,6 @@ def _find_start_link_for_target(self, target: PortRef) -> LinkItem | None: return link return None - def _find_link_for_target(self, target: PortRef) -> LinkItem | None: - for link in self._links.values(): - if ( - link.target.node_id == target.node_id - and link.target.slot_index == target.slot_index - ): - return link - return None - def _rebuild_node_ports(self) -> None: for node_item in self._node_items.values(): data = self._node_data.get(node_item.node_id) @@ -252,6 +243,8 @@ def _rebuild_node_ports(self) -> None: node_item._build_ports() node_item.update() + def update_scene_rect(self) -> None: + self.setSceneRect(self._compute_scene_rect()) + def _compute_scene_rect(self) -> QRectF: - rect = self.itemsBoundingRect().adjusted(-200, -200, 200, 200) - return QRectF(rect) + return self.itemsBoundingRect().adjusted(-200, -200, 200, 200) diff --git a/src/comfy_graph_bind/start_node.py b/src/comfy_graph_bind/start_node.py index 0c5cd46..90b034e 100644 --- a/src/comfy_graph_bind/start_node.py +++ b/src/comfy_graph_bind/start_node.py @@ -12,7 +12,9 @@ from PyQt5.QtCore import QPointF from PyQt5.QtWidgets import QGraphicsScene -from .node_item import GraphNodeItem +from .layout import node_metrics +from .node_item import GraphNodeItem, build_node_outputs +from .port_item import PortItem, PortRef @dataclass(frozen=True) @@ -60,15 +62,9 @@ def rebuild_outputs(self, outputs: Sequence[StartOutputConfig]) -> None: scene = self.scene() if isinstance(scene, GraphScene): scene.detach_links_for_node(self) - old_ports = list(self.output_ports()) - for p in old_ports: - if p.parentItem() is self and scene is not None: - scene.removeItem(p) + self._port_items.clear() self._output_names = [o.name for o in outputs] self._inputs = [] - from .layout import node_metrics - from .node_item import build_node_outputs # local import to avoid cycle - from .port_item import PortItem, PortRef stub = _StubNode("Start", self.title, outputs) self._outputs = build_node_outputs(stub) @@ -94,7 +90,7 @@ def rebuild_outputs(self, outputs: Sequence[StartOutputConfig]) -> None: port.setPos(QPointF(self._metrics.width, self._metrics.port_y(i))) self._port_items.append(port) self.update() - if scene is not None and isinstance(scene, QGraphicsScene): + if isinstance(scene, QGraphicsScene): scene.update() diff --git a/src/comfy_graph_bind/view.py b/src/comfy_graph_bind/view.py index fb4efaf..7ad4cec 100644 --- a/src/comfy_graph_bind/view.py +++ b/src/comfy_graph_bind/view.py @@ -6,6 +6,8 @@ from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import QGraphicsView, QShortcut +from .scene import GraphScene + class GraphView(QGraphicsView): """A view that supports zooming, panning and resetting the camera.""" @@ -94,8 +96,6 @@ def mouseReleaseEvent(self, event) -> None: # noqa: N802 - Qt API # ------------------------------------------------------------------ def reset_view(self) -> None: """Restore the default zoom (1.0) and recenter the scene.""" - from .scene import GraphScene - scene = self.scene() self.resetTransform() if isinstance(scene, GraphScene) and scene.start_node() is not None: diff --git a/src/comfy_graph_bind/workflow_parser.py b/src/comfy_graph_bind/workflow_parser.py index 2714d11..2304d3f 100644 --- a/src/comfy_graph_bind/workflow_parser.py +++ b/src/comfy_graph_bind/workflow_parser.py @@ -43,6 +43,9 @@ def parse_workflow_dict(data: dict) -> WorkflowGraph: def _parse_workflow_dict(data: dict) -> WorkflowGraph: + if not isinstance(data, dict): + raise TypeError(f"Expected a dict, got {type(data).__name__}") + raw_inputs_map: dict[int | str, dict[str, Any]] = {} for node_id_str, node_data in data.items(): @@ -52,7 +55,7 @@ def _parse_workflow_dict(data: dict) -> WorkflowGraph: output_refs: dict[int | str, set[int]] = defaultdict(set) for _node_id, node_inputs in raw_inputs_map.items(): for value in node_inputs.values(): - if _is_link(value): + if is_link(value): src_id, src_idx = _parse_link(value) if src_id in raw_inputs_map: output_refs[src_id].add(src_idx) @@ -67,7 +70,7 @@ def _parse_workflow_dict(data: dict) -> WorkflowGraph: input_slots: list[Slot] = [] for name, value in node_inputs.items(): - if _is_link(value): + if is_link(value): slot = Slot(name=name, type="*", link=1, widget=None) else: slot = Slot(name=name, type=type(value).__name__, link=None, widget=value) @@ -106,8 +109,13 @@ def _parse_node_id(s: str) -> int | str: return s -def _is_link(value: Any) -> bool: - return isinstance(value, list) and len(value) == 2 +def is_link(value: Any) -> bool: + return ( + isinstance(value, list) + and len(value) == 2 + and isinstance(value[0], (int, str)) + and isinstance(value[1], (int, str)) + ) def _parse_link(value: list) -> tuple[int | str, int]: @@ -130,7 +138,7 @@ def _auto_layout( if nid not in node_ids: continue for value in n_inputs.values(): - if _is_link(value): + if is_link(value): src_id, _ = _parse_link(value) if src_id in node_ids: deps[nid].add(src_id) diff --git a/tests/test_link_creation.py b/tests/test_link_creation.py index 15ea191..15e2c07 100644 --- a/tests/test_link_creation.py +++ b/tests/test_link_creation.py @@ -35,16 +35,17 @@ def test_create_link_via_scene_api(qtbot, sample_graph): def test_start_output_replaces_previous_link(qtbot, sample_graph): editor = _make_editor(qtbot, sample_graph) + initial_count = len(editor.scene().links()) prompt = editor.start_node().output_port(0) target_node = editor.scene().get_node_item(1) port_a = target_node.input_port(1) port_b = target_node.input_port(2) link_a = editor.scene().create_link(prompt.ref, port_a.ref) assert link_a is not None - assert len(editor.scene().links()) == 4 + assert len(editor.scene().links()) == initial_count + 1 link_b = editor.scene().create_link(prompt.ref, port_b.ref) assert link_b is not None - assert len(editor.scene().links()) == 4 + assert len(editor.scene().links()) == initial_count + 1 assert editor.get_result()["inputs"]["prompt"]["property"] == "negative" @@ -67,15 +68,17 @@ def test_drag_from_start_output_creates_link(qtbot, sample_graph): def test_different_start_output_replaces_on_same_target(qtbot, sample_graph): editor = _make_editor(qtbot, sample_graph) + initial_count = len(editor.scene().links()) output_a = editor.start_node().output_port(0) output_b = editor.start_node().output_port(1) target_node = editor.scene().get_node_item(1) target_port = target_node.input_port(1) link_a = editor.scene().create_link(output_a.ref, target_port.ref) assert link_a is not None + assert len(editor.scene().links()) == initial_count + 1 link_b = editor.scene().create_link(output_b.ref, target_port.ref) assert link_b is not None - assert len(editor.scene().links()) == 4 + assert len(editor.scene().links()) == initial_count + 1 result = editor.get_result() assert "prompt" not in result["inputs"] assert "seed" in result["inputs"] From 43b57398182e0c1ad8fd3b8b8d15707eb709531c Mon Sep 17 00:00:00 2001 From: dacert Date: Sun, 19 Jul 2026 19:09:00 +0100 Subject: [PATCH 5/5] Update readme --- README.md | 6 +++++- media/example.png | Bin 0 -> 95562 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 media/example.png diff --git a/README.md b/README.md index ba2b3b3..8861648 100644 --- a/README.md +++ b/README.md @@ -173,4 +173,8 @@ so the user can immediately see the existing wiring. Any entry that does not resolve to a known node/property is silently ignored. A runnable version of this example lives at -[`examples/dialog_demo.py`](examples/dialog_demo.py). \ No newline at end of file +[`examples/dialog_demo.py`](examples/dialog_demo.py). + +Used in the krita_comfyui plugin + +![Select Workflow](media/example.png) \ No newline at end of file diff --git a/media/example.png b/media/example.png new file mode 100644 index 0000000000000000000000000000000000000000..e6540ff900fbec98efc27c11e5dfc09822d20a7a GIT binary patch literal 95562 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�XXhg+qPHT}e*04GP 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 literal 0 HcmV?d00001