o
    Gi_	                     @   s    d dl Z G dd de jjZdS )    Nc                       s,   e Zd Zdeeejf f fddZ  ZS )AttnProcsLayers
state_dictc                    s   t    tj| _tt|	 _
dd t|	 D _ddg_dd }fdd  fd	d
}| j|dd d S )Nc                 S   s   i | ]\}}||qS  r   ).0kvr   r   K/home/ubuntu/.local/lib/python3.10/site-packages/diffusers/loaders/utils.py
<dictcomp>   s    z,AttnProcsLayers.__init__.<locals>.<dictcomp>z
.processorz
.self_attnc           	      _   sL   i }|  D ]\}}t|dd }|d| | j| }|||< q|S )N.   layers.)itemsintsplitreplacemapping)	moduler   argskwargsnew_state_dictkeyvaluenumnew_keyr   r   r   map_to   s   
z(AttnProcsLayers.__init__.<locals>.map_toc                    sP    j D ]}|| v r| |d |   S qtdt|  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   r   )selfr   r   	remap_key(   s   
 z+AttnProcsLayers.__init__.<locals>.remap_keyc                    sN   t | }|D ]} ||}||d| j|  }|| ||< ||= qd S )Nr   )listr   r   rev_mapping)r   r   r   r   all_keysr   replace_keyr   )r    r   r   map_from1   s   
z*AttnProcsLayers.__init__.<locals>.map_fromT)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   r%   	__class__)r    r   r   r(      s   

		
zAttnProcsLayers.__init__)	__name__
__module____qualname__r.   strr)   Tensorr(   __classcell__r   r   r2   r   r      s    $r   )r)   r*   Moduler   r   r   r   r   <module>   s   