[Bugfix] ComfyUI image-to-image DALL-E endpoint cases #2886 (#2980)

Signed-off-by: david6666666 <530634352@qq.com>
This commit is contained in:
WeiQing Chen authored and GitHub committed 2026-04-21 21:37:52 +08:00
1 parent 3f504b45d2
commit 0cdec8210f
3 files changed
+38 -3

No files matched your search

@@ -523,7 +523,6 @@ def api_server(unused_tcp_port_factory, server_case: ServerCase, mock_async_omni
"Qwen/Qwen-Image-Edit",
True,
id="image-to-image-dalle-endpoint",
marks=pytest.mark.skip(reason="Temporarily disabled due to failure."),
),
pytest.param(
ServerCase(
@@ -1061,6 +1061,27 @@ def test_image_edit_rejects_too_many_images_for_qwen_image_edit_2511_before_load
assert engine.captured_prompt is None
def test_image_edit_ignores_mock_like_multimodal_limit(async_omni_test_client):
engine = async_omni_test_client.app.state.engine_client
engine.get_diffusion_od_config = lambda: SimpleNamespace(
supports_multimodal_inputs=SimpleNamespace(),
max_multimodal_image_inputs=SimpleNamespace(),
)
response = async_omni_test_client.post(
"/v1/images/edits",
files=[("image", make_test_image_bytes((16, 16)))],
data={"prompt": "hello world."},
)
assert response.status_code == 200
captured_prompt = engine.captured_prompt
assert captured_prompt is not None
processed_images = captured_prompt["multi_modal_data"]["image"]
assert len(processed_images) == 1
assert processed_images[0].size == (16, 16)
def test_image_edit_parameter_pass(async_omni_test_client):
img_bytes_1 = make_test_image_bytes((16, 16))
+17 -2
View File
@@ -16,6 +16,7 @@ from argparse import Namespace
from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from http import HTTPStatus
from numbers import Integral
from typing import Annotated, Any, Literal, cast
import httpx
@@ -1826,10 +1827,24 @@ def _get_max_edit_input_images(raw_request: Request, engine_client: Any) -> int
# config is not exposed on the serving surface.
return None
if not bool(getattr(od_config, "supports_multimodal_inputs", False)):
supports_multimodal_inputs = getattr(od_config, "supports_multimodal_inputs", None)
if not isinstance(supports_multimodal_inputs, bool):
# Older serving surfaces and mocked engines may expose a placeholder
# object instead of a real diffusion config. Treat that as "unknown"
# so existing single-image flows keep working.
return None
if not supports_multimodal_inputs:
return 1
return getattr(od_config, "max_multimodal_image_inputs", None)
max_input_images = getattr(od_config, "max_multimodal_image_inputs", None)
if max_input_images is None:
return None
if isinstance(max_input_images, bool) or not isinstance(max_input_images, Integral):
return None
if max_input_images < 1:
return None
return int(max_input_images)
def _get_lora_from_json_str(lora_body):