
    i                         d dl mZmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ  e	j                  e      Z G d d	eee      Zy
)    )AnyDictOptional   )WanLoraLoaderMixin)StableDiffusionMixin)logging   )ModularPipelinec                   
   e Zd ZdZdZdeeeef      dee   fdZ	e
d        Ze
d        Ze
d        Ze
d	        Ze
d
        Ze
d        Ze
d        Ze
d        Ze
d        Ze
d        Ze
d        Ze
d        Ze
d        Zy)WanModularPipelinez
    A ModularPipeline for Wan.

    > [!WARNING] > This is an experimental feature and is likely to change in the future.
    WanAutoBlocksconfig_dictreturnc                     |
d|v r|d   yy)Nboundary_ratioWan22AutoBlocksr    )selfr   s     z/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/diffusers/modular_pipelines/wan/modular_pipeline.pyget_default_blocks_namez*WanModularPipeline.get_default_blocks_name)   s!    "'7;'F;WgKhKt$"    c                 4    | j                   | j                  z  S N)default_sample_heightvae_scale_factor_spatialr   s    r   default_heightz!WanModularPipeline.default_height/   s    ))D,I,IIIr   c                 4    | j                   | j                  z  S r   )default_sample_widthr   r   s    r   default_widthz WanModularPipeline.default_width3   s    ((4+H+HHHr   c                 @    | j                   dz
  | j                  z  dz   S )N   )default_sample_num_framesvae_scale_factor_temporalr   s    r   default_num_framesz%WanModularPipeline.default_num_frames7   s$    ..2d6T6TTWXXXr   c                      y)N<   r   r   s    r   r   z(WanModularPipeline.default_sample_height;       r   c                      y)Nh   r   r   s    r   r    z'WanModularPipeline.default_sample_width?   s    r   c                      y)N   r   r   s    r   r$   z,WanModularPipeline.default_sample_num_framesC   r)   r   c                     d}t        | d      r/| j                  #| j                  j                  j                  d   }|S )Nr
   transformerr#   )hasattrr/   config
patch_size)r   patch_size_spatials     r   r3   z%WanModularPipeline.patch_size_spatialG   s@    4'D,<,<,H!%!1!1!8!8!C!CA!F!!r   c                 ~    d}t        | d      r.| j                  "dt        | j                  j                        z  }|S )N   vaer
   )r0   r6   lentemperal_downsampler   vae_scale_factors     r   r   z+WanModularPipeline.vae_scale_factor_spatialN   ;    4DHH$8 C(D(D$EEr   c                 ~    d}t        | d      r.| j                  "dt        | j                  j                        z  }|S )N   r6   r
   )r0   r6   sumr8   r9   s     r   r%   z,WanModularPipeline.vae_scale_factor_temporalU   r;   r   c                 z    d}t        | d      r,| j                   | j                  j                  j                  }|S )N   r/   )r0   r/   r1   in_channels)r   num_channels_transformers     r   rB   z+WanModularPipeline.num_channels_transformer\   s;    #% 4'D,<,<,H'+'7'7'>'>'J'J$''r   c                 z    d}t        | d      r,| j                   | j                  j                  j                  }|S )Nr@   r6   )r0   r6   r1   z_dim)r   num_channels_latentss     r   rE   z'WanModularPipeline.num_channels_latentsc   s5    !4DHH$8#'88??#8#8 ##r   c                     d}t        | d      r=| j                  1| j                  j                  xr | j                  j                  dkD  }|S )NFguiderr#   )r0   rG   _enablednum_conditions)r   requires_unconditional_embedss     r   rJ   z0WanModularPipeline.requires_unconditional_embedsj   sF    (-%4"t{{'>,0KK,@,@,cT[[E_E_bcEc),,r   c                 z    d}t        | d      r,| j                   | j                  j                  j                  }|S )Ni  	scheduler)r0   rL   r1   num_train_timesteps)r   rM   s     r   rM   z&WanModularPipeline.num_train_timestepss   s7    "4%$..*D"&.."7"7"K"K""r   N)__name__
__module____qualname____doc__default_blocks_namer   r   strr   r   propertyr   r!   r&   r   r    r$   r3   r   r%   rB   rE   rJ   rM   r   r   r   r   r      s@   
 *#8DcN3K #PXY\P] # J J I I Y Y       " "         ( ( $ $ - - # #r   r   N)typingr   r   r   loadersr   pipelines.pipeline_utilsr   utilsr	   modular_pipeliner   
get_loggerrN   loggerr   r   r   r   <module>r\      sB     ' & ) <  . 
		H	%]#]#r   