






"""simple docstring"""


from typing import TYPE_CHECKING

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


_UpperCamelCase				:    List[str]     =						{
    'configuration_deberta_v2': ['DEBERTA_V2_PRETRAINED_CONFIG_ARCHIVE_MAP', 'DebertaV2Config', 'DebertaV2OnnxConfig'],
    'tokenization_deberta_v2': ['DebertaV2Tokenizer'],
}

try:
   if not is_tokenizers_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _UpperCamelCase				:    List[str]     =						['DebertaV2TokenizerFast']

try:
   if not is_tf_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _UpperCamelCase				:    Optional[int]     =						[
       'TF_DEBERTA_V2_PRETRAINED_MODEL_ARCHIVE_LIST',
       'TFDebertaV2ForMaskedLM',
       'TFDebertaV2ForQuestionAnswering',
       'TFDebertaV2ForSequenceClassification',
       'TFDebertaV2ForTokenClassification',
       'TFDebertaV2Model',
       'TFDebertaV2PreTrainedModel',
   ]

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _UpperCamelCase				:    str     =						[
       'DEBERTA_V2_PRETRAINED_MODEL_ARCHIVE_LIST',
       'DebertaV2ForMaskedLM',
       'DebertaV2ForMultipleChoice',
       'DebertaV2ForQuestionAnswering',
       'DebertaV2ForSequenceClassification',
       'DebertaV2ForTokenClassification',
       'DebertaV2Model',
       'DebertaV2PreTrainedModel',
   ]


if TYPE_CHECKING:
   from .configuration_deberta_va import (
       DEBERTA_V2_PRETRAINED_CONFIG_ARCHIVE_MAP,
       DebertaVaConfig,
       DebertaVaOnnxConfig,
   )
   from .tokenization_deberta_va import DebertaVaTokenizer

   try:
      if not is_tokenizers_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .tokenization_deberta_va_fast import DebertaVaTokenizerFast

   try:
      if not is_tf_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_tf_deberta_va import (
          TF_DEBERTA_V2_PRETRAINED_MODEL_ARCHIVE_LIST,
          TFDebertaVaForMaskedLM,
          TFDebertaVaForQuestionAnswering,
          TFDebertaVaForSequenceClassification,
          TFDebertaVaForTokenClassification,
          TFDebertaVaModel,
          TFDebertaVaPreTrainedModel,
      )

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_deberta_va import (
          DEBERTA_V2_PRETRAINED_MODEL_ARCHIVE_LIST,
          DebertaVaForMaskedLM,
          DebertaVaForMultipleChoice,
          DebertaVaForQuestionAnswering,
          DebertaVaForSequenceClassification,
          DebertaVaForTokenClassification,
          DebertaVaModel,
          DebertaVaPreTrainedModel,
      )

else:
   import sys

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












"""simple docstring"""


import copy

from ...configuration_utils import PretrainedConfig
from ...utils import logging
from ..auto.configuration_auto import AutoConfig


_UpperCamelCase				:    Optional[int]     =						logging.get_logger(__name__)






class 						snake_case  (  UpperCAmelCase       ):
    __magic_name__         =     '''speech-encoder-decoder'''
    __magic_name__         =     True





    def __init__(							self	:					Optional[Any]				,		**A	:					List[Any]			):


      '''simple docstring'''




      super().__init__(**A			)
      if "encoder" not in kwargs or "decoder" not in kwargs:
        raise ValueError(
            F'''A configuraton of type {self.model_type} cannot be instantiated because not both `encoder` and'''
            F''' `decoder` sub-configurations are passed, but only {kwargs}'''			)

      a     :			Optional[int]				=   kwargs.pop('encoder'			)
      a     :			Any				=   encoder_config.pop('model_type'			)
      a     :			Optional[Any]				=   kwargs.pop('decoder'			)
      a     :			str				=   decoder_config.pop('model_type'			)

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





    @classmethod
    def 				lowerCamelCase__      (							cls	:					List[Any]				,		A	:					PretrainedConfig				,		A	:					PretrainedConfig				,		**A	:					str			):


      '''simple docstring'''




      logger.info('Setting `config.is_decoder=True` and `config.add_cross_attention=True` for decoder_config'			)
      a     :			Any				=   True
      a     :			List[str]				=   True

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





    def 				lowerCamelCase__      (							self	:					Optional[int]			):


      '''simple docstring'''




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




