67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
# SimpleSyrup - workflow-focused ComfyUI extensions for image generation
|
|
# Copyright (C) 2026 Artificial Sweetener and contributors
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
"""Build one public upstream MODEL modifier without conditioning policy."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from tools.anima_attention_coupling_workflow import ModifiedAnimaModel
|
|
from tools.anima_workflow_graph import AnimaWorkflowGraph, NodeReference
|
|
|
|
from .matrix import PatchInteropModifier
|
|
|
|
|
|
class RegionalPatchModifierWorkflow:
|
|
"""Apply the exact public modifier declared by one matrix case."""
|
|
|
|
def __init__(self, modifier: PatchInteropModifier) -> None:
|
|
"""Retain one immutable modifier identity."""
|
|
|
|
if not isinstance(modifier, PatchInteropModifier):
|
|
raise TypeError("P9.7 modifier workflow requires a modifier value.")
|
|
self._modifier = modifier
|
|
|
|
def add(
|
|
self,
|
|
graph: AnimaWorkflowGraph,
|
|
*,
|
|
model: NodeReference,
|
|
clip: NodeReference,
|
|
) -> ModifiedAnimaModel:
|
|
"""Return explicit MODEL/CLIP links from one public modifier node."""
|
|
|
|
if self._modifier is PatchInteropModifier.NONE:
|
|
return ModifiedAnimaModel(model, clip)
|
|
if self._modifier is PatchInteropModifier.EASYCACHE:
|
|
node = graph.add(
|
|
"EasyCache",
|
|
model=model,
|
|
reuse_threshold=0.2,
|
|
start_percent=0.15,
|
|
end_percent=0.95,
|
|
verbose=True,
|
|
)
|
|
return ModifiedAnimaModel([node, 0], clip)
|
|
if self._modifier is PatchInteropModifier.LAZYCACHE:
|
|
node = graph.add(
|
|
"LazyCache",
|
|
model=model,
|
|
reuse_threshold=0.2,
|
|
start_percent=0.15,
|
|
end_percent=0.95,
|
|
verbose=True,
|
|
)
|
|
return ModifiedAnimaModel([node, 0], clip)
|
|
if self._modifier is PatchInteropModifier.OPTIMIZED_ATTENTION:
|
|
node = graph.add(
|
|
"ModelAttentionSelector",
|
|
model=model,
|
|
attention="optimized",
|
|
)
|
|
return ModifiedAnimaModel([node, 0], clip)
|
|
if self._modifier is PatchInteropModifier.NEGPIP:
|
|
node = graph.add("CLIPNegPip", model=model, clip=clip)
|
|
return ModifiedAnimaModel([node, 0], [node, 1])
|
|
raise AssertionError(f"Unhandled P9.7 modifier: {self._modifier.value}.")
|