class_docstr: ASR Adapter Mixin that can augment any Encoder module with Adapter module support.
  
  This mixin class should be used only with a top level ModelPT subclass, that includes an `encoder` submodule.
  This mixin class adds several utility methods which are propagated to the `encoder`.
  
  An Adapter module is any Pytorch nn.Module that possess a few properties :
  
  - It's input and output dimension are the same, while the hidden dimension need not be the same.
  - The final layer of the Adapter module is zero-initialized, so that the residual connection to the adapter
      yields the original output.
  
  This mixin adds the following instance variables to the class this inherits it:
  
      -   `adapter_layer`: A torch.nn.ModuleDict(), whose keys are the names of the adapter (globally unique),
              and values are the Adapter nn.Module().
      -   `adapter_cfg`: A OmegaConf DictConfig object that holds the config of the adapters that are initialized.
      -   `adapter_global_cfg_key`: A str representing a key in the model config that can be provided by the user.
              The value resolves to `global_cfg`, and can be overridden via `model.cfg.adapters.global_cfg.*`.
  
  **Note**: This module **is** responsible for maintaining its config. At the ModelPT level, it will access and
      write Adapter config information to `self.cfg.adapters`.
class_docstr_tok: ["ASR","Adapter","Mixin","that","can","augment","any","Encoder","module","with","Adapter","module","support",".","This","mixin","class","should","be","used","only","with","a","top","level","ModelPT","subclass",",","that","includes","an","`","encoder","`","submodule",".","This","mixin","class","adds","several","utility","methods","which","are","propagated","to","the","`","encoder","`",".","An","Adapter","module","is","any","Pytorch","nn.Module","that","possess","a","few","properties",":","-","It","'s","input","and","output","dimension","are","the","same",",","while","the","hidden","dimension","need","not","be","the","same",".","-","The","final","layer","of","the","Adapter","module","is","zero-initialized",",","so","that","the","residual","connection","to","the","adapter","yields","the","original","output",".","This","mixin","adds","the","following","instance","variables","to","the","class","this","inherits","it",":","-","`","adapter_layer","`",":","A","torch.nn.ModuleDict","(",")",",","whose","keys","are","the","names","of","the","adapter","(","globally","unique",")",",","and","values","are","the","Adapter","nn.Module","(",")",".","-","`","adapter_cfg","`",":","A","OmegaConf","DictConfig","object","that","holds","the","config","of","the","adapters","that","are","initialized",".","-","`","adapter_global_cfg_key","`",":","A","str","representing","a","key","in","the","model","config","that","can","be","provided","by","the","user",".","The","value","resolves","to","`","global_cfg","`",",","and","can","be","overridden","via","`","model.cfg.adapters.global_cfg.","*","`",".","*","*","Note","*","*",":","This","module","*","*","is","*","*","responsible","for","maintaining","its","config",".","At","the","ModelPT","level",",","it","will","access","and","write","Adapter","config","information","to","`","self.cfg.adapters","`","."]
docstr: Utility method to resolve a given global/module adapter name to its components.
  Always returns a tuple representing (module_name, adapter_name). ":" is used as the
  delimiter for denoting the module name vs the adapter name.
  
  Will attempt to also resolve a given adapter_name alone back to (module_name, adapter_name)
  if the metadata config exists for access.
  
  Args:
      name: A global adapter, or a module adapter name (with structure module_name:adapter_name).
  
  Returns:
      A tuple representing (module_name, adapter_name). If a global adapter is provided,
      module_name is set to ''.
docstr_tok: ["Utility","method","to","resolve","a","given","global\/module","adapter","name","to","its","components",".","Always","returns","a","tuple","representing","(","module_name",",","adapter_name",")",".","``",":","''","is","used","as","the","delimiter","for","denoting","the","module","name","vs","the","adapter","name",".","Will","attempt","to","also","resolve","a","given","adapter_name","alone","back","to","(","module_name",",","adapter_name",")","if","the","metadata","config","exists","for","access",".","Args",":","name",":","A","global","adapter",",","or","a","module","adapter","name","(","with","structure","module_name",":","adapter_name",")",".","Returns",":","A","tuple","representing","(","module_name",",","adapter_name",")",".","If","a","global","adapter","is","provided",",","module_name","is","set","to","``","."]
code: def resolve_adapter_module_name_(self, name: str) -> Tuple[str, str]:
      """
      Utility method to resolve a given global/module adapter name to its components.
      Always returns a tuple representing (module_name, adapter_name). ":" is used as the
      delimiter for denoting the module name vs the adapter name.
  
      Will attempt to also resolve a given adapter_name alone back to (module_name, adapter_name)
      if the metadata config exists for access.
  
      Args:
          name: A global adapter, or a module adapter name (with structure module_name:adapter_name).
  
      Returns:
          A tuple representing (module_name, adapter_name). If a global adapter is provided,
          module_name is set to ''.
      """
      module_name, adapter_name = super().resolve_adapter_module_name_(
          name
      )
  
      # Use + as a splitter, in order to share one name across multiple modules
      if "+" in module_name:
          module_names = module_name.split("+")
      else:
          module_names = [module_name]
  
      # resolve name and module only for valid modules
      valid_module_names = self.adapter_module_names
  
      for mod_name in module_names:
          if mod_name not in valid_module_names:
              raise ValueError(
                  f"Provided module name `{mod_name}` is not in valid list : {valid_module_names}"
              )
  
      return (module_name, adapter_name)
  
file_path: NeMo/nemo/collections/asr/parts/mixins/asr_adapter_mixins.py
imports: from typing import List, Optional, Tuple
  from omegaconf import DictConfig, open_dict
  from nemo.core.classes.mixins.adapter_mixins import AdapterModelPTMixin, AdapterModuleMixin
  from nemo.utils import logging, logging_mode
label_desc: Use image node_id 7 for calling the ASRAdapterModelMixin obj's underlying member method code with example usage: obj.resolve_adapter_module_name_(name) and returns: module_name,  adapter_name