
    biw	                     V    d dl mZ d dlZ G d dej                  j                        Zy)    )DictNc                   B     e Zd Zdeeej                  f   f fdZ xZS )AttnProcsLayers
state_dictc                     t                    t        j                  j	                  |j                                _        t        t        |j                                      _
        t        |j                               D ci c]  \  }}||
 c}} _        ddg _        d } fdfd} j                  |        j                  |d       y c c}}w )Nz
.processorz
.self_attnc                     i }|j                         D ]I  \  }}t        |j                  d      d         }|j                  d| | j                  |         }|||<   K |S )N.   layers.)itemsintsplitreplacemapping)	moduler   argskwargsnew_state_dictkeyvaluenumnew_keys	            R/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/diffusers/loaders/utils.pymap_toz(AttnProcsLayers.__init__.<locals>.map_to    sk    N(..0 0
U#))C.+,++uov~~c7JK*/w'0
 "!    c           	          j                   D ]  }|| v s| j                  |      d   |z   c S  t        dt        |j	                                d|  dj                    d      )Nr   z1There seems to be a problem with the state_dict: z. z has to have one of r	   )
split_keysr   
ValueErrorsetkeys)r   r   kselfs      r   	remap_keyz+AttnProcsLayers.__init__.<locals>.remap_key)   s    __ /899Q<?Q../ CC
HYDZC[[]^a]bbvw{  xG  xG  wH  HI  J r   c                     t        |j                               }|D ]8  } ||      }|j                  |d| j                  |          }||   ||<   ||= : y )Nr   )listr    r   rev_mapping)	r   r   r   r   all_keysr   replace_keyr   r#   s	           r   map_fromz*AttnProcsLayers.__init__.<locals>.map_from2   sh    JOO-.H $'Z8++kWV=O=OP[=\<]3^_&0o
7#sO	$r   T)with_module)super__init__torchnn
ModuleListvalueslayersdict	enumerater    r   r&   r   _register_state_dict_hook"_register_load_state_dict_pre_hook)r"   r   r!   vr   r)   r#   	__class__s   `     @r   r,   zAttnProcsLayers.__init__   s    hh))**;*;*=>Ijoo&789-6z7H-IJTQAqDJ (6	"		$ 	&&v.//d/KE Ks   C)	__name__
__module____qualname__r   strr-   Tensorr,   __classcell__)r7   s   @r   r   r      s%    &L4U\\(9#: &L &Lr   r   )typingr   r-   r.   Moduler    r   r   <module>rA      s#     'Lehhoo 'Lr   