



'''simple docstring'''






from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_torch_available,
)


lowerCAmelCase: Optional[int]							=						{'configuration_unispeech': ['UNISPEECH_PRETRAINED_CONFIG_ARCHIVE_MAP', 'UniSpeechConfig']}

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     lowerCAmelCase: Optional[Any]							=						[
         'UNISPEECH_PRETRAINED_MODEL_ARCHIVE_LIST',
         'UniSpeechForCTC',
         'UniSpeechForPreTraining',
         'UniSpeechForSequenceClassification',
         'UniSpeechModel',
         'UniSpeechPreTrainedModel',
     ]

if TYPE_CHECKING:
     from .configuration_unispeech import UNISPEECH_PRETRAINED_CONFIG_ARCHIVE_MAP, UniSpeechConfig

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_unispeech import (
              UNISPEECH_PRETRAINED_MODEL_ARCHIVE_LIST,
              UniSpeechForCTC,
              UniSpeechForPreTraining,
              UniSpeechForSequenceClassification,
              UniSpeechModel,
              UniSpeechPreTrainedModel,
          )

else:
     import sys

     lowerCAmelCase: Optional[Any]							=						_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)




'''simple docstring'''






import copy

from ...configuration_utils import PretrainedConfig
from ...utils import logging


lowerCAmelCase: Any							=						logging.get_logger(__name__)

class 							a__( lowerCamelCase__     ):
    lowercase__			=   """encoder-decoder"""
    lowercase__			=   True







    def __init__(				self			:  Dict						,      **__snake_case			:  Union[str, Any]     ):
      super().__init__(**__snake_case     )
      assert (
          "encoder" in kwargs and "decoder" in kwargs
      ), "Config has to be initialized with encoder and decoder config"
      a						: List[str]					       =					kwargs.pop('encoder'     )
      a						: Optional[Any]					       =					encoder_config.pop('model_type'     )
      a						: Tuple					       =					kwargs.pop('decoder'     )
      a						: Optional[int]					       =					decoder_config.pop('model_type'     )

      from ..auto.configuration_auto import AutoConfig

      a						: Any					       =					AutoConfig.for_model(__snake_case						,      **__snake_case     )
      a						: Optional[int]					       =					AutoConfig.for_model(__snake_case						,      **__snake_case     )
      a						: Tuple					       =					True







    @classmethod
    def       lowercase_	(				cls			:  int						,      __snake_case			:  PretrainedConfig						,      __snake_case			:  PretrainedConfig						,      **__snake_case			:  Union[str, Any]     ):
      logger.info('Set `config.is_decoder=True` and `config.add_cross_attention=True` for decoder_config'     )
      a						: List[Any]					       =					True
      a						: Tuple					       =					True

      return cls(encoder=encoder_config.to_dict()						,      decoder=decoder_config.to_dict()						,      **__snake_case     )







    def       lowercase_	(				self			:  List[Any]     ):
      a						: int					       =					copy.deepcopy(self.__dict__     )
      a						: List[str]					       =					self.encoder.to_dict()
      a						: Optional[int]					       =					self.decoder.to_dict()
      a						: Optional[Any]					       =					self.__class__.model_type
      return output