Files
JasonHoku-ComfyUI-Ultimate-…/tests/test_seedvr2_inline.py
T
Jason HokuandClaude Fable 5.1 85378c4e78 fix(upscale): inline SeedVR2 step after a latent step decoded with swapped args and mishandled the PIL result
decode_latent_with_vae(vae, samples) returns a PIL image; the step passed
(pipe_latent, vae) and then treated it as a tensor. Also: undefined `meta`
(use create_image_metadata like the Florence2 branch), manifest insert(0) +
upscale_produced (no duplicate base image), and chained re-encode no longer
movedims (VAE.encode takes BHWC).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-04 00:46:45 -08:00

44 lines
1.4 KiB
Python

"""Inline SeedVR2 step: decode_latent_with_vae(vae, samples) returns a PIL image and
the chained re-encode needs a BHWC float tensor (VAE.encode layout, no movedim)."""
import importlib.util
import inspect
import os
import re
import sys
import numpy as np
from PIL import Image
_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, _ROOT)
def _load_helper():
src = open(os.path.join(_ROOT, "image_generation.py"), encoding="utf-8").read()
m = re.search(r"^def pil_to_image_array\(.*?(?=^def )", src, re.S | re.M)
ns = {}
exec(m.group(0), ns)
return ns["pil_to_image_array"]
def test_pil_to_image_array_is_bhwc_float01():
f = _load_helper()
img = Image.new("RGB", (5, 3), (255, 0, 51))
arr = f(img)
assert arr.shape == (1, 3, 5, 3) and arr.dtype == np.float32
assert np.allclose(arr[0, 0, 0], [1.0, 0.0, 0.2])
def test_pil_to_image_array_converts_non_rgb():
arr = _load_helper()(Image.new("RGBA", (4, 2), (0, 255, 0, 128)))
assert arr.shape == (1, 2, 4, 3)
def test_orchestrator_seedvr2_branch_call_shape():
src = open(os.path.join(_ROOT, "generation_orchestrator.py"), encoding="utf-8").read()
i = src.index('if mode == "seedvr2":')
branch = src[i:i + 6000]
assert 'decode_latent_with_vae(loaded_vae, pipe_latent["samples"])' in branch
assert "movedim" not in branch
assert "dict(meta)" not in branch