o
    ۷i#                     @   s   d dl mZ d dlmZ d dlmZ ddlmZ ee	Z
G dd deeeZG dd	 d	eZG d
d deZG dd deZdS )   )WanLoraLoaderMixin)StableDiffusionMixin)logging   )ModularPipelinec                   @   s   e Zd ZdZdZedd Zedd Zedd Zed	d
 Z	edd Z
edd Zedd Zedd Zedd Zedd Zedd Zedd Zedd ZdS )WanModularPipelinez
    A ModularPipeline for Wan2.1 text2video.

    > [!WARNING] > This is an experimental feature and is likely to change in the future.
    	WanBlocksc                 C      | j | j S N)default_sample_heightvae_scale_factor_spatialself r   f/home/ubuntu/vllm_env/lib/python3.10/site-packages/diffusers/modular_pipelines/wan/modular_pipeline.pydefault_height&      z!WanModularPipeline.default_heightc                 C   r	   r
   )default_sample_widthr   r   r   r   r   default_width*   r   z WanModularPipeline.default_widthc                 C   s   | j d | j d S )N   )default_sample_num_framesvae_scale_factor_temporalr   r   r   r   default_num_frames.   s   z%WanModularPipeline.default_num_framesc                 C      dS )N<   r   r   r   r   r   r   2      z(WanModularPipeline.default_sample_heightc                 C   r   )Nh   r   r   r   r   r   r   6   r   z'WanModularPipeline.default_sample_widthc                 C   r   )N   r   r   r   r   r   r   :   r   z,WanModularPipeline.default_sample_num_framesc                 C   s*   d}t | dr| jd ur| jjjd }|S )Nr   transformerr   )hasattrr   config
patch_size)r   patch_size_spatialr   r   r   r"   >   s   z%WanModularPipeline.patch_size_spatialc                 C   ,   d}t | dr| jd urdt| jj }|S )N   vaer   )r   r%   lentemperal_downsampler   vae_scale_factorr   r   r   r   E      z+WanModularPipeline.vae_scale_factor_spatialc                 C   r#   )N   r%   r   )r   r%   sumr'   r(   r   r   r   r   L   r*   z,WanModularPipeline.vae_scale_factor_temporalc                 C   &   d}t | dr| jd ur| jjj}|S )N   r   )r   r   r    in_channels)r   num_channels_transformerr   r   r   r0   S      
z+WanModularPipeline.num_channels_transformerc                 C   r-   )Nr.   r%   )r   r%   r    z_dim)r   num_channels_latentsr   r   r   r3   Z   r1   z'WanModularPipeline.num_channels_latentsc                 C   s0   d}t | dr| jd ur| jjo| jjdk}|S )NFguiderr   )r   r4   _enablednum_conditions)r   requires_unconditional_embedsr   r   r   r7   a   s   z0WanModularPipeline.requires_unconditional_embedsc                 C   r-   )Ni  	scheduler)r   r8   r    num_train_timesteps)r   r9   r   r   r   r9   j   r1   z&WanModularPipeline.num_train_timestepsN)__name__
__module____qualname____doc__default_blocks_namepropertyr   r   r   r   r   r   r"   r   r   r0   r3   r7   r9   r   r   r   r   r      s:    











r   c                   @      e Zd ZdZdZdS )WanImage2VideoModularPipelinez
    A ModularPipeline for Wan2.1 image2video (both I2V and FLF2V).

    > [!WARNING] > This is an experimental feature and is likely to change in the future.
    WanImage2VideoAutoBlocksNr:   r;   r<   r=   r>   r   r   r   r   rA   r       rA   c                   @   r@   )Wan22ModularPipelinez
    A ModularPipeline for Wan2.2 text2video.

    > [!WARNING] > This is an experimental feature and is likely to change in the future.
    Wan22BlocksNrC   r   r   r   r   rE   |   rD   rE   c                   @   r@   )Wan22Image2VideoModularPipelinez
    A ModularPipeline for Wan2.2 image2video.

    > [!WARNING] > This is an experimental feature and is likely to change in the future.
    Wan22Image2VideoBlocksNrC   r   r   r   r   rG      rD   rG   N)loadersr   pipelines.pipeline_utilsr   utilsr   modular_pipeliner   
get_loggerr:   loggerr   rA   rE   rG   r   r   r   r   <module>   s   

Y

