'''simple docstring'''




from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


_A										= {
    'configuration_markuplm': ['MARKUPLM_PRETRAINED_CONFIG_ARCHIVE_MAP', 'MarkupLMConfig'],
    'feature_extraction_markuplm': ['MarkupLMFeatureExtractor'],
    'processing_markuplm': ['MarkupLMProcessor'],
    'tokenization_markuplm': ['MarkupLMTokenizer'],
}

try:
 if not is_tokenizers_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _A										= ['MarkupLMTokenizerFast']

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _A										= [
     'MARKUPLM_PRETRAINED_MODEL_ARCHIVE_LIST',
     'MarkupLMForQuestionAnswering',
     'MarkupLMForSequenceClassification',
     'MarkupLMForTokenClassification',
     'MarkupLMModel',
     'MarkupLMPreTrainedModel',
 ]


if TYPE_CHECKING:
 from .configuration_markuplm import MARKUPLM_PRETRAINED_CONFIG_ARCHIVE_MAP, MarkupLMConfig
 from .feature_extraction_markuplm import MarkupLMFeatureExtractor
 from .processing_markuplm import MarkupLMProcessor
 from .tokenization_markuplm import MarkupLMTokenizer

 try:
  if not is_tokenizers_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .tokenization_markuplm_fast import MarkupLMTokenizerFast

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_markuplm import (
      MARKUPLM_PRETRAINED_MODEL_ARCHIVE_LIST,
      MarkupLMForQuestionAnswering,
      MarkupLMForSequenceClassification,
      MarkupLMForTokenClassification,
      MarkupLMModel,
      MarkupLMPreTrainedModel,
  )


else:
 import sys

 _A										= _LazyModule(__name__, globals()['__file__'], _import_structure)












import copy

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


__UpperCAmelCase      =				logging.get_logger(__name__)
class 	a_(		lowercase__	):



     """simple docstring"""



     __snake_case		:				Union[str, Any]  					='''speech-encoder-decoder'''
     __snake_case		:				List[Any]  					=True





     def __init__(		self					:	Any  ,  **lowerCAmelCase__					:	List[Any])							->	Tuple:

      """simple docstring"""
      super().__init__(**lowerCAmelCase__)
      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}''')

      SCREAMING_SNAKE_CASE				    =		kwargs.pop('encoder')
      SCREAMING_SNAKE_CASE				    =		encoder_config.pop('model_type')
      SCREAMING_SNAKE_CASE				    =		kwargs.pop('decoder')
      SCREAMING_SNAKE_CASE				    =		decoder_config.pop('model_type')

      SCREAMING_SNAKE_CASE				    =		AutoConfig.for_model(lowerCAmelCase__  ,  **lowerCAmelCase__)
      SCREAMING_SNAKE_CASE				    =		AutoConfig.for_model(lowerCAmelCase__  ,  **lowerCAmelCase__)
      SCREAMING_SNAKE_CASE				    =		True





     @classmethod
     def     __UpperCamelCase						(		cls					:	str  ,  lowerCAmelCase__					:	PretrainedConfig  ,  lowerCAmelCase__					:	PretrainedConfig  ,  **lowerCAmelCase__					:	List[str])							->	PretrainedConfig:

      """simple docstring"""
      logger.info('Setting `config.is_decoder=True` and `config.add_cross_attention=True` for decoder_config')
      SCREAMING_SNAKE_CASE				    =		True
      SCREAMING_SNAKE_CASE				    =		True

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





     def     __UpperCamelCase						(		self					:	str)							->	Union[str, Any]:

      """simple docstring"""
      SCREAMING_SNAKE_CASE				    =		copy.deepcopy(self.__dict__)
      SCREAMING_SNAKE_CASE				    =		self.encoder.to_dict()
      SCREAMING_SNAKE_CASE				    =		self.decoder.to_dict()
      SCREAMING_SNAKE_CASE				    =		self.__class__.model_type
      return output




