
    +h)                         S SK r S SKJr  S SKJrJrJrJr  \ " S S5      5       r\ " S S5      5       r	 " S S	5      r
 " S
 S5      rS rS rS rS r\r\r\r\rg)    N)	dataclass)AnyCallableDictTypec                   ,    \ rS rSr% \\/\4   \S'   Srg)AttentionProcessorMetadata   skip_processor_output_fn N)__name__
__module____qualname____firstlineno__r   r   __annotations____static_attributes__r       R/home/james-whalen/.local/lib/python3.13/site-packages/diffusers/hooks/_helpers.pyr	   r	      s    &ucz22r   r	   c                   j    \ rS rSr% Sr\\S'   Sr\\S'   Sr\	\S'   Sr
\\\4   \S'   S
S\4S jjrS	rg)TransformerBlockMetadata   Nreturn_hidden_states_index"return_encoder_hidden_states_index_cls_cached_parameter_indices
identifierc                 B   U=(       d    0 nX;   a  X1   $ U R                   b  X R                   U      $ U R                  c  [        S5      e[        [        R
                  " U R                  R                  5      R                  R                  5       5      nUSS  n[        U5       VVs0 s H  u  pVXe_M	     snnU l         XR                   ;  a  [        SU S35      eU R                   U   nU[        U5      :  a  [        SU S[        U5       S35      eX'   $ s  snnf )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_kwargs8TransformerBlockMetadata._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&;;;{:,6jkll..z:CIy/B3t9+QOPP{ *Zs   )D)r   )r   N)r   r   r   r   r   intr   r   r   r   r   r   strr/   r   r   r   r   r   r      sF    &**.2&2D$04tCH~4#  r   r   c                   d    \ rS rSr0 rSr\S\S\4S j5       r	\S\S\4S j5       r
\S 5       rS	rg
)AttentionProcessorRegistry4   Fmodel_classmetadatac                 @    U R                  5         X R                  U'   g N)	_register	_registryclsr6   r7   s      r   register#AttentionProcessorRegistry.register;   s    %-k"r   returnc                 |    U R                  5         XR                  ;  a  [        SU S35      eU R                  U   $ NzModel class z not registered.r:   r;   r    r=   r6   s     r   getAttentionProcessorRegistry.get@   9    mm+|K=8HIJJ}}[))r   c                 J    U R                   (       a  g SU l         [        5         g NT)_is_registered'_register_attention_processors_metadatar=   s    r   r:   $AttentionProcessorRegistry._registerG   s    !/1r   r   N)r   r   r   r   r;   rJ   classmethodr   r	   r>   rE   r:   r   r   r   r   r4   r4   4   sf    I N.4 .3M . . *d *'A * * 2 2r   r4   c                   d    \ rS rSr0 rSr\S\S\4S j5       r	\S\S\4S j5       r
\S 5       rS	rg
)TransformerBlockRegistryO   Fr6   r7   c                 L    U R                  5         Xl        X R                  U'   g r9   )r:   r   r;   r<   s      r   r>   !TransformerBlockRegistry.registerV   s    #%-k"r   r@   c                 |    U R                  5         XR                  ;  a  [        SU S35      eU R                  U   $ rB   rC   rD   s     r   rE   TransformerBlockRegistry.get\   rG   r   c                 J    U R                   (       a  g SU l         [        5         g rI   )rJ   %_register_transformer_blocks_metadatarL   s    r   r:   "TransformerBlockRegistry._registerc   s    !-/r   r   N)r   r   r   r   r;   rJ   rN   r   r   r>   rE   r:   r   r   r   r   rP   rP   O   sf    I N.4 .3K . .
 *d *'? * * 0 0r   rP   c                  ,   SSK Jn   SSKJn  SSKJn  SSKJn  [        R                  U [        [        S9S9  [        R                  U[        [        S9S9  [        R                  U[        [        S9S9  [        R                  U[        [        S9S9  g )N   )AttnProcessor2_0)CogView4AttnProcessor)FluxAttnProcessor)WanAttnProcessor2_0)r   r6   r7   )models.attention_processorr[   (models.transformers.transformer_cogview4r\   $models.transformers.transformer_fluxr]   #models.transformers.transformer_wanr^   r4   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)r[   r\   r]   r^   s       r   rK   rK   k   s    =PHI ''$+%T
 (  '')+%Y
 (  '''+%W
 (  ''%+Euv ( r   c                  X   SSK Jn   SSKJn  SSKJn  SSKJnJn  SSK	J
nJnJnJn  SSKJn	  SSKJn
  SS	KJn  SS
KJn  [,        R/                  U [1        SS S9S9  [,        R/                  U[1        SSS9S9  [,        R/                  U[1        SSS9S9  [,        R/                  U[1        SSS9S9  [,        R/                  U[1        SSS9S9  [,        R/                  U[1        SSS9S9  [,        R/                  U[1        SSS9S9  [,        R/                  U[1        SSS9S9  [,        R/                  U[1        SSS9S9  [,        R/                  U	[1        SS S9S9  [,        R/                  U
[1        SSS9S9  [,        R/                  U[1        SS S9S9  [,        R/                  U[1        SSS9S9  g )NrZ   )BasicTransformerBlock)CogVideoXBlock)CogView4TransformerBlock)FluxSingleTransformerBlockFluxTransformerBlock)"HunyuanVideoSingleTransformerBlock.HunyuanVideoTokenReplaceSingleTransformerBlock(HunyuanVideoTokenReplaceTransformerBlockHunyuanVideoTransformerBlock)LTXVideoTransformerBlock)MochiTransformerBlock)QwenImageTransformerBlock)WanTransformerBlockr   )r   r   r_   r   )models.attentionri   ,models.transformers.cogvideox_transformer_3drj   ra   rk   rb   rl   rm   -models.transformers.transformer_hunyuan_videorn   ro   rp   rq   #models.transformers.transformer_ltxrr   %models.transformers.transformer_mochirs   )models.transformers.transformer_qwenimagert   rc   ru   rP   r>   r   )ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   s                r   rW   rW      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                 X    UR                  SS 5      nUc  [        U5      S:  a  US   nU$ )Nhidden_statesr   rE   r(   )r)   r*   r+   r}   s       r   %_skip_attention___ret___hidden_statesr     s1    JJ5MTQQr   c                     UR                  SS 5      nUR                  SS 5      nUc  [        U5      S:  a  US   nUc  [        U5      S:  a  US   nX44$ )Nr}   encoder_hidden_statesr   r   r~   )r)   r*   r+   r}   r   s        r   =_skip_attention___ret___hidden_states___encoder_hidden_statesr     s`    JJ5M"JJ'>ETQQ$TQ $Q//r   )r"   dataclassesr   typingr   r   r   r   r	   r   r4   rP   rK   rW   r   r   rd   re   rf   rg   r   r   r   <module>r      s     ! , , 3 3 3   42 260 08"J{~0 3X /7t 45Z 23X 0r   