
    bi)                         d dl Z d dlmZ d dlmZmZmZmZ e G d d             Ze G d d             Z	 G d d	      Z
 G d
 d      Zd Zd Zd Zd ZeZeZeZeZy)    N)	dataclass)AnyCallableDictTypec                   $    e Zd ZU eegef   ed<   y)AttentionProcessorMetadataskip_processor_output_fnN)__name__
__module____qualname__r   r   __annotations__     S/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/diffusers/hooks/_helpers.pyr	   r	      s    &ucz22r   r	   c                   ^    e Zd ZU dZeed<   dZeed<   dZeed<   dZ	e
eef   ed<   ddefdZy)	TransformerBlockMetadataNreturn_hidden_states_index"return_encoder_hidden_states_index_cls_cached_parameter_indices
identifierc                 0   |xs i }||v r||   S | j                   || j                   |      S | j                  t        d      t        t	        j
                  | j                  j                        j                  j                               }|dd  }t        |      D ci c]  \  }}||
 c}}| _         || j                   vrt        d| d      | j                   |   }|t        |      k\  rt        d| dt        |       d      ||   S c c}}w )Nz$Model class is not set for metadata.   zParameter 'z4' not found in function signature but was requested.z	Expected z arguments but got .)r   r   
ValueErrorlistinspect	signatureforward
parameterskeys	enumeratelen)selfr   argskwargsr!   iparamindexs           r   _get_parameter_from_args_kwargsz8TransformerBlockMetadata._get_parameter_from_args_kwargs!   s   2*%%))566zBCC99CDD'++DII,=,=>IINNPQ
^
CLZCX)Yxq%%()Y&T;;;{:,6jkll..z:CIy/B3t9+QOPPE{ *Zs   "D)r   N)r   r   r   r   intr   r   r   r   r   r   strr+   r   r   r   r   r      sA    &**.2&2D$04tCH~4# r   r   c                   X    e Zd Zi ZdZededefd       Zededefd       Z	ed        Z
y)	AttentionProcessorRegistryFmodel_classmetadatac                 B    | j                          || j                  |<   y N)	_register	_registryclsr0   r1   s      r   registerz#AttentionProcessorRegistry.register;   s    %-k"r   returnc                 z    | j                          || j                  vrt        d| d      | j                  |   S NzModel class z not registered.r4   r5   r   r7   r0   s     r   getzAttentionProcessorRegistry.get@   ;    cmm+|K=8HIJJ}}[))r   c                 @    | j                   ry d| _         t                y NT)_is_registered'_register_attention_processors_metadatar7   s    r   r4   z$AttentionProcessorRegistry._registerG   s    !/1r   N)r   r   r   r5   rB   classmethodr   r	   r8   r>   r4   r   r   r   r/   r/   4   sf    I N.4 .3M . . *d *'A * * 2 2r   r/   c                   X    e Zd Zi ZdZededefd       Zededefd       Z	ed        Z
y)	TransformerBlockRegistryFr0   r1   c                 P    | j                          ||_        || j                  |<   y r3   )r4   r   r5   r6   s      r   r8   z!TransformerBlockRegistry.registerV   s     #%-k"r   r9   c                 z    | j                          || j                  vrt        d| d      | j                  |   S r;   r<   r=   s     r   r>   zTransformerBlockRegistry.get\   r?   r   c                 @    | j                   ry d| _         t                y rA   )rB   %_register_transformer_blocks_metadatarD   s    r   r4   z"TransformerBlockRegistry._registerc   s    !-/r   N)r   r   r   r5   rB   rE   r   r   r8   r>   r4   r   r   r   rG   rG   O   sf    I N.4 .3K . .
 *d *'? * * 0 0r   rG   c                  \   ddl m}  ddlm} ddlm} ddlm} t        j                  | t        t                     t        j                  |t        t                     t        j                  |t        t                     t        j                  |t        t                     y )N   )AttnProcessor2_0)CogView4AttnProcessor)FluxAttnProcessor)WanAttnProcessor2_0)r
   r0   r1   )models.attention_processorrN   (models.transformers.transformer_cogview4rO   $models.transformers.transformer_fluxrP   #models.transformers.transformer_wanrQ   r/   r8   r	   /_skip_proc_output_fn_Attention_AttnProcessor2_04_skip_proc_output_fn_Attention_CogView4AttnProcessor2_skip_proc_output_fn_Attention_WanAttnProcessor2_00_skip_proc_output_fn_Attention_FluxAttnProcessor)rN   rO   rP   rQ   s       r   rC   rC   k   s    =PHI ''$+%T
 (  '')+%Y
 (  '''+%W
 (  ''%+Euv ( r   c                     ddl m}  ddlm} ddlm} ddlm}m} ddl	m
}m}m}m} ddlm}	 ddlm}
 dd	lm} dd
lm} t,        j/                  | t1        dd              t,        j/                  |t1        dd             t,        j/                  |t1        dd             t,        j/                  |t1        dd             t,        j/                  |t1        dd             t,        j/                  |t1        dd             t,        j/                  |t1        dd             t,        j/                  |t1        dd             t,        j/                  |t1        dd             t,        j/                  |	t1        dd              t,        j/                  |
t1        dd             t,        j/                  |t1        dd              t,        j/                  |t1        dd             y )NrM   )BasicTransformerBlock)CogVideoXBlock)CogView4TransformerBlock)FluxSingleTransformerBlockFluxTransformerBlock)"HunyuanVideoSingleTransformerBlock.HunyuanVideoTokenReplaceSingleTransformerBlock(HunyuanVideoTokenReplaceTransformerBlockHunyuanVideoTransformerBlock)LTXVideoTransformerBlock)MochiTransformerBlock)QwenImageTransformerBlock)WanTransformerBlockr   )r   r   rR   r   )models.attentionr\   ,models.transformers.cogvideox_transformer_3dr]   rT   r^   rU   r_   r`   -models.transformers.transformer_hunyuan_videora   rb   rc   rd   #models.transformers.transformer_ltxre   %models.transformers.transformer_mochirf   )models.transformers.transformer_qwenimagerg   rV   rh   rG   r8   r   )r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   s                r   rK   rK      s   8MSg  OMUI %%))'(/3
 &  %%")'(/0
 &  %%,)'(/0
 &  %%()'(/0
 &  %%.)'(/0
 &  %%0)'(/0
 &  %%6)'(/0
 &  %%<)'(/0
 &  %%B)'(/0
 &  %%,)'(/3
 &  %%))'(/0
 &  %%')'(/3
 &  %%-)'(/0
 & r   c                 T    |j                  dd       }|t        |      dkD  r|d   }|S )Nhidden_statesr   r>   r$   )r%   r&   r'   rp   s       r   %_skip_attention___ret___hidden_statesrr     s1    JJ5MTQQr   c                     |j                  dd       }|j                  dd       }|t        |      dkD  r|d   }|t        |      dkD  r|d   }||fS )Nrp   encoder_hidden_statesr   r   rq   )r%   r&   r'   rp   rt   s        r   =_skip_attention___ret___hidden_states___encoder_hidden_statesru     sc    JJ5M"JJ'>ETQQ$TQ $Q///r   )r   dataclassesr   typingr   r   r   r   r	   r   r/   rG   rC   rK   rr   ru   rW   rX   rY   rZ   r   r   r   <module>rx      s     ! , , 3 3 3   42 260 08"J{~0 3X /7t 45Z 23X 0r   