
    i:4                         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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__     b/home/obispo/Crisostomo_bridge/mision_env/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} 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(        	      
       t        j                  |t!        t*        	      
       t        j                  |t!        t,        	      
       t        j                  |t!        t.        	      
       y )N   )AttnProcessor2_0)CogView4AttnProcessor)FluxAttnProcessor)HunyuanImageAttnProcessor) QwenDoubleStreamAttnProcessor2_0)WanAttnProcessor2_0)ZSingleStreamAttnProcessor)r
   r0   r1   )models.attention_processorrN   (models.transformers.transformer_cogview4rO   $models.transformers.transformer_fluxrP   ,models.transformers.transformer_hunyuanimagerQ   )models.transformers.transformer_qwenimagerR   #models.transformers.transformer_wanrS   'models.transformers.transformer_z_imagerT   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?_skip_proc_output_fn_Attention_QwenDoubleStreamAttnProcessor2_08_skip_proc_output_fn_Attention_HunyuanImageAttnProcessor9_skip_proc_output_fn_Attention_ZSingleStreamAttnProcessor)rN   rO   rP   rQ   rR   rS   rT   s          r   rC   rC   k   s
   =PHX\IT ''$+%T
 (  '')+%Y
 (  '''+%W
 (  ''%+Euv (  ''4+%d
 (  ''-+%]
 (  ''.+%^
 ( r   c                  ,   ddl m}  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}
m} dd	lm} dd
lm} ddlm} ddlm} ddlm} t:        j=                  | t?        dd              t:        j=                  |t?        dd              t:        j=                  |t?        dd             t:        j=                  |t?        dd             t:        j=                  |t?        dd             t:        j=                  |t?        dd             t:        j=                  |	t?        dd             t:        j=                  |t?        dd             t:        j=                  |t?        dd             t:        j=                  |t?        dd             t:        j=                  |t?        dd              t:        j=                  |t?        dd             t:        j=                  |t?        dd              t:        j=                  |t?        dd             t:        j=                  |t?        dd             t:        j=                  |
t?        dd             t:        j=                  |t?        dd              y )NrM   )BasicTransformerBlock)CogVideoXBlock)BriaTransformerBlock)CogView4TransformerBlock)FluxSingleTransformerBlockFluxTransformerBlock)"HunyuanVideoSingleTransformerBlock.HunyuanVideoTokenReplaceSingleTransformerBlock(HunyuanVideoTokenReplaceTransformerBlockHunyuanVideoTransformerBlock)"HunyuanImageSingleTransformerBlockHunyuanImageTransformerBlock)LTXVideoTransformerBlock)MochiTransformerBlock)QwenImageTransformerBlock)WanTransformerBlock)ZImageTransformerBlockr   )r   r   rU   r   ) models.attentionre   ,models.transformers.cogvideox_transformer_3drf   $models.transformers.transformer_briarg   rW   rh   rX   ri   rj   -models.transformers.transformer_hunyuan_videork   rl   rm   rn   rY   ro   rp   #models.transformers.transformer_ltxrq   %models.transformers.transformer_mochirr   rZ   rs   r[   rt   r\   ru   rG   r8   r   )re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   s                    r   rK   rK      s   8MKSg  OMUIP %%))'(/3
 &  %%()'(/3
 &  %%")'(/0
 &  %%,)'(/0
 &  %%()'(/0
 &  %%.)'(/0
 &  %%0)'(/0
 &  %%6)'(/0
 &  %%<)'(/0
 &  %%B)'(/0
 &  %%,)'(/3
 &  %%))'(/0
 &  %%')'(/3
 &  %%-)'(/0
 &  %%0)'(/0
 &  %%6)'(/0
 &  %%*)'(/3
 & r   c                 T    |j                  dd       }|t        |      dkD  r|d   }|S )Nhidden_statesr   r>   r$   )r%   r&   r'   r}   s       r   %_skip_attention___ret___hidden_statesr   P  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 )Nr}   encoder_hidden_statesr   r   r~   )r%   r&   r'   r}   r   s        r   =_skip_attention___ret___hidden_states___encoder_hidden_statesr   W  sc    JJ5M"JJ'>ETQQ$TQ $Q///r   )r   dataclassesr   typingr   r   r   r   r	   r   r/   rG   rC   rK   r   r   r]   r^   r_   r`   ra   rb   rc   r   r   r   <module>r      s     ! , , 3 3 3   42 260 08=@aJ0 3X /7t 45Z 23X 0Bg ?;` 8<a 9r   