diff --git a/fast_saver.py b/fast_saver.py index 06756bd..43c1a0d 100644 --- a/fast_saver.py +++ b/fast_saver.py @@ -202,7 +202,8 @@ class FastAbsoluteSaver: "hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"}, } - RETURN_TYPES = () + RETURN_TYPES = ("LATENT",) + RETURN_NAMES = ("latent",) FUNCTION = "save_images_fast" OUTPUT_NODE = True CATEGORY = "JSON Dynamic/io" @@ -546,7 +547,7 @@ class FastAbsoluteSaver: avg_score = (sum(scores_list) / len(scores_list)) if scores_list else None self._save_sidecar_png(img, png_path, avg_score, metadata_key, prompt, extra_pnginfo) print(f"xx- FastSaver: Metadata PNG sidecar saved to {png_path}") - return {"ui": {"images": []}} + return {"ui": {"images": []}, "result": (latent,)} if max_threads == 0: max_threads = os.cpu_count() or 4 @@ -623,7 +624,7 @@ class FastAbsoluteSaver: self._save_sidecar_png(img, png_path, first_score, metadata_key, prompt, extra_pnginfo) print(f"xx- FastSaver: Metadata PNG sidecar saved to {png_path}") - return {"ui": {"images": []}} + return {"ui": {"images": []}, "result": (latent,)} class JDL_LoadLatentAbsolute: diff --git a/tests/test_fast_saver_latent.py b/tests/test_fast_saver_latent.py index a50b923..7b301e1 100644 --- a/tests/test_fast_saver_latent.py +++ b/tests/test_fast_saver_latent.py @@ -45,6 +45,16 @@ def test_png_save_writes_matching_latent_sidecar(tmp_path): assert loaded["keep"] == {"value": 7} +def test_png_save_returns_latent_passthrough(tmp_path): + saver = FastAbsoluteSaver() + latent = {"samples": torch.ones((1, 1, 2, 2))} + + result = saver.save_images_fast(**_save_args(tmp_path, latent=latent)) + + assert result["result"] == (latent,) + assert result["result"][0] is latent + + def test_video_save_writes_latent_sidecar_next_to_video(tmp_path): saver = FastAbsoluteSaver() latent = {"samples": torch.arange(8, dtype=torch.float32).reshape(2, 1, 2, 2)}