o
    }oiz                     @   st   d dl mZ d dlZd dlmZmZ d dlmZ dZdZ	dZ
dZd	Zd
ZdefddZdejjdedefddZdS )    )is_dataclassN)
DictConfig	OmegaConf)loggingz;nemo.collections.common.parts.adapter_modules.LinearAdapterzlnemo.collections.asr.parts.submodules.adapters.multi_head_attention_adapter_module.MultiHeadAttentionAdapterzwnemo.collections.asr.parts.submodules.adapters.multi_head_attention_adapter_module.RelPositionMultiHeadAttentionAdapterzlnemo.collections.asr.parts.submodules.adapters.multi_head_attention_adapter_module.PositionalEncodingAdapterzonemo.collections.asr.parts.submodules.adapters.multi_head_attention_adapter_module.RelPositionalEncodingAdapterznemo.collections.asr.parts.submodules.adapters.transformer_multi_head_attention_adapter_module.TransformerMultiHeadAttentionAdaptercfgc                 C   s(   t | r	t| } t| tst| } | S )N)r   r   
structured
isinstancer   )r    r	   b/home/ubuntu/.local/lib/python3.10/site-packages/nemo/collections/asr/parts/utils/adapter_utils.py"convert_adapter_cfg_to_dict_config)   s
   

r   module
module_dimc                C   s   t |}g d}d}|D ]
}||v r|} nq|du r(td| dt| || }||krBtd| jj d| d|  |}|||< |S )a  
    Update the input dimension of the provided adapter config with some default value.

    Args:
        module: The module that implements AdapterModuleMixin.
        cfg: A DictConfig or a Dataclass representing the adapter config.
        module_dim: A default module dimension, used if cfg has an incorrect input dimension.

    Returns:
        A DictConfig representing the adapter's config.
    )in_featuresn_feathidden_sizeNzKFailed to infer the input dimension of the Adapter cfg. 
Expected one of : z.
Provided config : 
z	Updating z Adapter input dim from z to )r   
ValueErrorr   to_yamlr   info	__class____name__)r   r   r   input_dim_valid_keys	input_keykey	input_dimr	   r	   r
   update_adapter_cfg_input_dim4   s(    r   )dataclassesr   torch	omegaconfr   r   
nemo.utilsr   LINEAR_ADAPTER_CLASSPATHMHA_ADAPTER_CLASSPATHRELMHA_ADAPTER_CLASSPATHPOS_ENCODING_ADAPTER_CLASSPATH"REL_POS_ENCODING_ADAPTER_CLASSPATH!TRANSFORMER_MHA_ADAPTER_CLASSPATHr   nnModuleintr   r	   r	   r	   r
   <module>   s   