
    (ti57                         d dl Z d dlmZ d dl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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__     g/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/diffusers/hooks/_helpers.pyr   r      s    &ucz22r   r   c                   l    e Zd ZU dZeed<   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hidden_stateshidden_states_argument_name_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)YCXxq%%(CX)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   strr   r   r   dictr,   r   r   r   r   r      sL    &**.2&2'66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clsr2   r3   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.r6   r7   r   r9   r2   s     r   getzAttentionProcessorRegistry.getA   ;    cmm+|K=8HIJJ}}[))r   c                 @    | j                   ry d| _         t                y NT)_is_registered'_register_attention_processors_metadatar9   s    r   r6   z$AttentionProcessorRegistry._registerH   s    !/1r   N)r
   r   r   r7   rD   classmethodr   r   r:   r@   r6   r   r   r   r1   r1   5   sf    I N.4 .3M . . *d *'A * * 2 2r   r1   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)	TransformerBlockRegistryFr2   r3   c                 P    | j                          ||_        || j                  |<   y r5   )r6   r   r7   r8   s      r   r:   z!TransformerBlockRegistry.registerW   s     #%-k"r   r;   c                 z    | j                          || j                  vrt        d| d      | j                  |   S r=   r>   r?   s     r   r@   zTransformerBlockRegistry.get]   rA   r   c                 @    | j                   ry d| _         t                y rC   )rD   %_register_transformer_blocks_metadatarF   s    r   r6   z"TransformerBlockRegistry._registerd   s    !-/r   N)r
   r   r   r7   rD   rG   r   r   r:   r@   r6   r   r   r   rI   rI   P   sf    I N.4 .3K . .
 *d *'? * * 0 0r   rI   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	   r2   r3   )models.attention_processorrP   (models.transformers.transformer_cogview4rQ   $models.transformers.transformer_fluxrR   ,models.transformers.transformer_hunyuanimagerS   )models.transformers.transformer_qwenimagerT   #models.transformers.transformer_wanrU   'models.transformers.transformer_z_imagerV   r1   r:   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)rP   rQ   rR   rS   rT   rU   rV   s          r   rE   rE   l   s
   =PHX\IT ''$+%T
 (  '')+%Y
 (  '''+%W
 (  ''%+Euv (  ''4+%d
 (  ''-+%]
 (  ''.+%^
 ( r   c                     ddl m} 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} ddlm} t@        jC                  | tE        dd              t@        jC                  |tE        dd              t@        jC                  |tE        dd             t@        jC                  |tE        dd             t@        jC                  |tE        dd             t@        jC                  |tE        dd             t@        jC                  |
tE        dd             t@        jC                  |tE        dd             t@        jC                  |	tE        dd             t@        jC                  |tE        dd             t@        jC                  |tE        dd              t@        jC                  |tE        dd             t@        jC                  |tE        dd              t@        jC                  |tE        dd             t@        jC                  |tE        dd             t@        jC                  |tE        dd             t@        jC                  |tE        dd              t@        jC                  |tE        dd             t@        jC                  |tE        dd d             y )NrO   )BasicTransformerBlockJointTransformerBlock)CogVideoXBlock)BriaTransformerBlock)CogView4TransformerBlock)FluxSingleTransformerBlockFluxTransformerBlock)"HunyuanVideoSingleTransformerBlock.HunyuanVideoTokenReplaceSingleTransformerBlock(HunyuanVideoTokenReplaceTransformerBlockHunyuanVideoTransformerBlock)"HunyuanImageSingleTransformerBlockHunyuanImageTransformerBlock)!Kandinsky5TransformerDecoderBlock)LTXVideoTransformerBlock)MochiTransformerBlock)QwenImageTransformerBlock)WanTransformerBlock)ZImageTransformerBlockr   )r   r   rW   r   visual_embed)r   r   r   )#models.attentionrg   rh   ,models.transformers.cogvideox_transformer_3dri   $models.transformers.transformer_briarj   rY   rk   rZ   rl   rm   -models.transformers.transformer_hunyuan_videorn   ro   rp   rq   r[   rr   rs   )models.transformers.transformer_kandinskyrt   #models.transformers.transformer_ltxru   %models.transformers.transformer_mochirv   r\   rw   r]   rx   r^   ry   rI   r:   r   )rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   s                      r   rM   rM      s
   OMKSg  ^N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
 &  %%))'(/0
 &  %%5)'(/3(6
 & r   c                 T    |j                  dd       }|t        |      dkD  r|d   }|S )Nr   r   r@   r%   )r&   r'   r(   r   s       r   %_skip_attention___ret___hidden_statesr   d  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   k  sc    JJ5M"JJ'>ETQQ$TQ $Q///r   )r   dataclassesr   typingr   r   r   r   r   r1   rI   rE   rM   r   r   r_   r`   ra   rb   rc   rd   re   r   r   r   <module>r      s     ! & & 3 3 3   62 260 08=@tp0 3X /7t 45Z 23X 0Bg ?;` 8<a 9r   