Introduce an optional Pipe architecture to streamline metadata management and reduce wire clutter in complex, multi-stage workflows. This new system utilizes deferred execution (lazy evaluation), passing metadata and configuration state as raw dictionaries through the pipe. Expensive operations, such as checkpoint hashing and Civitai API lookups, are now deferred until the final image save execution. This approach prevents premature data mutation and significantly reduces execution overhead during workflow design and routing. To maintain architectural cleanliness and follow existing module patterns, these nodes are housed in a dedicated `nodes_pipe.py` file. The pipe configuration uses dynamic dictionary composition to inherit UI definitions safely without inheriting incorrect base execution logic. Key additions: - `MakeImageSaverSimpleConfig` & `MakeImageSaverMetadataConfig`: Provide standalone input configurations. - `MakeImageSaverPipe`: Bundles configurations into a single connection. - `EditImageSaverPipe`: Enables non-destructive branching and overrides. - `ReadImageSaverPipe`: Allows extraction of pipe data for external use. - `ImageSaverFromPipe`: Triggers disk/network actions.
45 lines
2.4 KiB
Python
45 lines
2.4 KiB
Python
from typing import Any
|
|
|
|
from .nodes import ImageSaver, ImageSaverSimple, ImageSaverMetadata
|
|
from .nodes_pipe import MakeImageSaverPipe, EditImageSaverPipe, ReadImageSaverPipe, ImageSaverFromPipe, MakeImageSaverSimpleConfig, MakeImageSaverMetadataConfig
|
|
from .nodes_literals import SeedGenerator, StringLiteral, SizeLiteral, IntLiteral, FloatLiteral, CfgLiteral, ConditioningConcatOptional, RandomShapeGenerator
|
|
from .nodes_loaders import CheckpointLoaderWithName, UNETLoaderWithName
|
|
from .nodes_selectors import SamplerSelector, SchedulerSelector, SchedulerSelectorInspire, SchedulerSelectorEfficiency, InputParameters, AnyToString, WorkflowInputValue
|
|
from .civitai_nodes import CivitaiHashFetcher
|
|
from .random_tag_picker import RandomTagPicker
|
|
|
|
NODE_CLASS_MAPPINGS: dict[str, Any] = {
|
|
"Checkpoint Loader with Name (Image Saver)": CheckpointLoaderWithName,
|
|
"UNet loader with Name (Image Saver)": UNETLoaderWithName,
|
|
"Image Saver": ImageSaver,
|
|
"Image Saver Simple": ImageSaverSimple,
|
|
"Image Saver Metadata": ImageSaverMetadata,
|
|
"Make Image Saver Simple Config": MakeImageSaverSimpleConfig,
|
|
"Make Image Saver Metadata Config": MakeImageSaverMetadataConfig,
|
|
"Make Image Saver Pipe": MakeImageSaverPipe,
|
|
"Edit Image Saver Pipe": EditImageSaverPipe,
|
|
"Read Image Saver Pipe": ReadImageSaverPipe,
|
|
"Image Saver (From Pipe)": ImageSaverFromPipe,
|
|
"Sampler Selector (Image Saver)": SamplerSelector,
|
|
"Scheduler Selector (Image Saver)": SchedulerSelector,
|
|
"Scheduler Selector (inspire) (Image Saver)": SchedulerSelectorInspire,
|
|
"Scheduler Selector (Eff.) (Image Saver)": SchedulerSelectorEfficiency,
|
|
"Input Parameters (Image Saver)": InputParameters,
|
|
"Any to String (Image Saver)": AnyToString,
|
|
"Workflow Input Value (Image Saver)": WorkflowInputValue,
|
|
"Seed Generator (Image Saver)": SeedGenerator,
|
|
"String Literal (Image Saver)": StringLiteral,
|
|
"Width/Height Literal (Image Saver)": SizeLiteral,
|
|
"Cfg Literal (Image Saver)": CfgLiteral,
|
|
"Int Literal (Image Saver)": IntLiteral,
|
|
"Float Literal (Image Saver)": FloatLiteral,
|
|
"Conditioning Concat Optional (Image Saver)": ConditioningConcatOptional,
|
|
"RandomShapeGenerator": RandomShapeGenerator,
|
|
"Civitai Hash Fetcher (Image Saver)": CivitaiHashFetcher,
|
|
"Random Tag Picker (Image Saver)": RandomTagPicker,
|
|
}
|
|
|
|
WEB_DIRECTORY = "js"
|
|
|
|
__all__ = ['NODE_CLASS_MAPPINGS', 'WEB_DIRECTORY']
|