# Copyright 2025 The HuggingFace Team. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from diffusers.utils import logging from diffusers.modular_pipelines import SequentialPipelineBlocks from diffusers.modular_pipelines.modular_pipeline_utils import InsertableDict from .before_denoise import ( MatrixGameWanActionInputStep, MatrixGameWanPrepareImageMaskLatentsStep, MatrixGameWanPrepareLatentsStep, MatrixGameWanSetTimestepsStep, ) from .decoders import MatrixGameWanDecodeStep from .encoders import MatrixGameWanImageEncoderStep from .denoise import MatrixGameWanDenoiseStep logger = logging.get_logger(__name__) # pylint: disable=invalid-name class MatrixGameWanBeforeDenoiseStep(SequentialPipelineBlocks): block_classes = [ MatrixGameWanActionInputStep, MatrixGameWanSetTimestepsStep, MatrixGameWanPrepareLatentsStep, MatrixGameWanPrepareImageMaskLatentsStep, ] block_names = ["action_input", "set_timesteps", "prepare_latents", "prepare_mask_latents"] @property def description(self): return ( "Before denoise step that prepare the inputs for the denoise step.\n" + "This is a sequential pipeline blocks:\n" + " - `MatrixGameWanInputStep` is used to adjust the batch size of the model inputs\n" + " - `MatrixGameWanSetTimestepsStep` is used to set the timesteps\n" + " - `MatrixGameWanPrepareLatentsStep` is used to prepare the latents\n" ) ACTION2VIDEO_BLOCKS = InsertableDict( [ ("action_input", MatrixGameWanActionInputStep), ("image_encoder", MatrixGameWanImageEncoderStep), ("set_timesteps", MatrixGameWanSetTimestepsStep), ("prepare_latents", MatrixGameWanPrepareLatentsStep), ("prepare_masked_latents", MatrixGameWanPrepareImageMaskLatentsStep), ("denoise", MatrixGameWanDenoiseStep), ("decode", MatrixGameWanDecodeStep), ] ) ALL_BLOCKS = { "action2video": ACTION2VIDEO_BLOCKS, }