From 0179313751d4229cab5dc01de7187cb496a4c76e Mon Sep 17 00:00:00 2001 From: wunianze666-netizen Date: Wed, 10 Jun 2026 01:33:52 +0800 Subject: [PATCH] fix longcat positional id warnings and message typo --- .../longcat_image/pipeline_longcat_image.py | 6 +-- .../pipeline_longcat_image_edit.py | 6 +-- .../longcat_image/test_prepare_pos_ids.py | 45 +++++++++++++++++++ 3 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 tests/pipelines/longcat_image/test_prepare_pos_ids.py diff --git a/src/diffusers/pipelines/longcat_image/pipeline_longcat_image.py b/src/diffusers/pipelines/longcat_image/pipeline_longcat_image.py index 4eaa858e41c1..3935918b0562 100644 --- a/src/diffusers/pipelines/longcat_image/pipeline_longcat_image.py +++ b/src/diffusers/pipelines/longcat_image/pipeline_longcat_image.py @@ -110,7 +110,7 @@ def prepare_pos_ids(modality_id=0, type="text", start=(0, 0), num_token=None, he if type == "text": assert num_token if height or width: - print('Warning: The parameters of height and width will be ignored in "text" type.') + logger.warning('The parameters `height` and `width` are ignored when `type="text"`.') pos_ids = torch.zeros(num_token, 3) pos_ids[..., 0] = modality_id pos_ids[..., 1] = torch.arange(num_token) + start[0] @@ -118,14 +118,14 @@ def prepare_pos_ids(modality_id=0, type="text", start=(0, 0), num_token=None, he elif type == "image": assert height and width if num_token: - print('Warning: The parameter of num_token will be ignored in "image" type.') + logger.warning('The parameter `num_token` is ignored when `type="image"`.') pos_ids = torch.zeros(height, width, 3) pos_ids[..., 0] = modality_id pos_ids[..., 1] = pos_ids[..., 1] + torch.arange(height)[:, None] + start[0] pos_ids[..., 2] = pos_ids[..., 2] + torch.arange(width)[None, :] + start[1] pos_ids = pos_ids.reshape(height * width, 3) else: - raise KeyError(f'Unknow type {type}, only support "text" or "image".') + raise KeyError(f'Unknown type {type}, only support "text" or "image".') return pos_ids diff --git a/src/diffusers/pipelines/longcat_image/pipeline_longcat_image_edit.py b/src/diffusers/pipelines/longcat_image/pipeline_longcat_image_edit.py index 119de3946fbc..475034130f91 100644 --- a/src/diffusers/pipelines/longcat_image/pipeline_longcat_image_edit.py +++ b/src/diffusers/pipelines/longcat_image/pipeline_longcat_image_edit.py @@ -108,7 +108,7 @@ def prepare_pos_ids(modality_id=0, type="text", start=(0, 0), num_token=None, he if type == "text": assert num_token if height or width: - print('Warning: The parameters of height and width will be ignored in "text" type.') + logger.warning('The parameters `height` and `width` are ignored when `type="text"`.') pos_ids = torch.zeros(num_token, 3) pos_ids[..., 0] = modality_id pos_ids[..., 1] = torch.arange(num_token) + start[0] @@ -116,14 +116,14 @@ def prepare_pos_ids(modality_id=0, type="text", start=(0, 0), num_token=None, he elif type == "image": assert height and width if num_token: - print('Warning: The parameter of num_token will be ignored in "image" type.') + logger.warning('The parameter `num_token` is ignored when `type="image"`.') pos_ids = torch.zeros(height, width, 3) pos_ids[..., 0] = modality_id pos_ids[..., 1] = pos_ids[..., 1] + torch.arange(height)[:, None] + start[0] pos_ids[..., 2] = pos_ids[..., 2] + torch.arange(width)[None, :] + start[1] pos_ids = pos_ids.reshape(height * width, 3) else: - raise KeyError(f'Unknow type {type}, only support "text" or "image".') + raise KeyError(f'Unknown type {type}, only support "text" or "image".') return pos_ids diff --git a/tests/pipelines/longcat_image/test_prepare_pos_ids.py b/tests/pipelines/longcat_image/test_prepare_pos_ids.py new file mode 100644 index 000000000000..4e0123a70d49 --- /dev/null +++ b/tests/pipelines/longcat_image/test_prepare_pos_ids.py @@ -0,0 +1,45 @@ +import pytest + +from diffusers.pipelines.longcat_image.pipeline_longcat_image import ( + logger as base_logger, + prepare_pos_ids as prepare_pos_ids_base, +) +from diffusers.pipelines.longcat_image.pipeline_longcat_image_edit import ( + logger as edit_logger, + prepare_pos_ids as prepare_pos_ids_edit, +) +from ...testing_utils import CaptureLogger + + +@pytest.mark.parametrize( + ("prepare_pos_ids", "logger"), + ( + (prepare_pos_ids_base, base_logger), + (prepare_pos_ids_edit, edit_logger), + ), +) +def test_prepare_pos_ids_logs_ignored_text_dimensions(prepare_pos_ids, logger): + with CaptureLogger(logger) as captured: + prepare_pos_ids(type="text", num_token=4, height=8, width=8) + + assert 'ignored when `type="text"`' in captured.out + + +@pytest.mark.parametrize( + ("prepare_pos_ids", "logger"), + ( + (prepare_pos_ids_base, base_logger), + (prepare_pos_ids_edit, edit_logger), + ), +) +def test_prepare_pos_ids_logs_ignored_image_num_token(prepare_pos_ids, logger): + with CaptureLogger(logger) as captured: + prepare_pos_ids(type="image", num_token=4, height=2, width=3) + + assert 'ignored when `type="image"`' in captured.out + + +@pytest.mark.parametrize("prepare_pos_ids", (prepare_pos_ids_base, prepare_pos_ids_edit)) +def test_prepare_pos_ids_unknown_type_message(prepare_pos_ids): + with pytest.raises(KeyError, match='Unknown type audio'): + prepare_pos_ids(type="audio", num_token=4)