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: Returns a list of all enabled adapters.
  
  Returns:
      A list of str names of each enabled adapter(s).
docstr_tok: ["Returns","a","list","of","all","enabled","adapters",".","Returns",":","A","list","of","str","names","of","each","enabled","adapter","(","s",")","."]
code: def get_enabled_adapters(self) -> List[str]:
      """
      Returns a list of all enabled adapters.
  
      Returns:
          A list of str names of each enabled adapter(s).
      """
      enabled_adapters = super().get_enabled_adapters()
  
      # Check if encoder adapters should be used or are enabled
      if hasattr(self, "encoder") and isinstance(
          self.encoder, AdapterModuleMixin
      ):
          enabled_adapters.extend(self.encoder.get_enabled_adapters())
  
      if hasattr(self, "decoder") and isinstance(
          self.decoder, AdapterModuleMixin
      ):
          enabled_adapters.extend(self.decoder.get_enabled_adapters())
  
      if hasattr(self, "joint") and isinstance(
          self.joint, AdapterModuleMixin
      ):
          enabled_adapters.extend(self.joint.get_enabled_adapters())
  
      enabled_adapters = list(sorted(list(set(enabled_adapters))))
  
      return enabled_adapters
  
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 5 for calling the ASRAdapterModelMixin obj's underlying member method code with example usage: obj.get_enabled_adapters() and returns: enabled_adapters