






"""simple docstring"""



from typing import TYPE_CHECKING

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


_lowerCAmelCase     :     str            =	{
    """configuration_big_bird""": ["""BIG_BIRD_PRETRAINED_CONFIG_ARCHIVE_MAP""", """BigBirdConfig""", """BigBirdOnnxConfig"""],
}

try:
 if not is_sentencepiece_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _lowerCAmelCase     :     int            =	["""BigBirdTokenizer"""]

try:
 if not is_tokenizers_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _lowerCAmelCase     :     Tuple            =	["""BigBirdTokenizerFast"""]

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _lowerCAmelCase     :     List[str]            =	[
     """BIG_BIRD_PRETRAINED_MODEL_ARCHIVE_LIST""",
     """BigBirdForCausalLM""",
     """BigBirdForMaskedLM""",
     """BigBirdForMultipleChoice""",
     """BigBirdForPreTraining""",
     """BigBirdForQuestionAnswering""",
     """BigBirdForSequenceClassification""",
     """BigBirdForTokenClassification""",
     """BigBirdLayer""",
     """BigBirdModel""",
     """BigBirdPreTrainedModel""",
     """load_tf_weights_in_big_bird""",
 ]

try:
 if not is_flax_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _lowerCAmelCase     :     Tuple            =	[
     """FlaxBigBirdForCausalLM""",
     """FlaxBigBirdForMaskedLM""",
     """FlaxBigBirdForMultipleChoice""",
     """FlaxBigBirdForPreTraining""",
     """FlaxBigBirdForQuestionAnswering""",
     """FlaxBigBirdForSequenceClassification""",
     """FlaxBigBirdForTokenClassification""",
     """FlaxBigBirdModel""",
     """FlaxBigBirdPreTrainedModel""",
 ]

if TYPE_CHECKING:
 from .configuration_big_bird import BIG_BIRD_PRETRAINED_CONFIG_ARCHIVE_MAP, BigBirdConfig, BigBirdOnnxConfig

 try:
  if not is_sentencepiece_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .tokenization_big_bird import BigBirdTokenizer

 try:
  if not is_tokenizers_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .tokenization_big_bird_fast import BigBirdTokenizerFast

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_big_bird import (
      BIG_BIRD_PRETRAINED_MODEL_ARCHIVE_LIST,
      BigBirdForCausalLM,
      BigBirdForMaskedLM,
      BigBirdForMultipleChoice,
      BigBirdForPreTraining,
      BigBirdForQuestionAnswering,
      BigBirdForSequenceClassification,
      BigBirdForTokenClassification,
      BigBirdLayer,
      BigBirdModel,
      BigBirdPreTrainedModel,
      load_tf_weights_in_big_bird,
  )

 try:
  if not is_flax_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_flax_big_bird import (
      FlaxBigBirdForCausalLM,
      FlaxBigBirdForMaskedLM,
      FlaxBigBirdForMultipleChoice,
      FlaxBigBirdForPreTraining,
      FlaxBigBirdForQuestionAnswering,
      FlaxBigBirdForSequenceClassification,
      FlaxBigBirdForTokenClassification,
      FlaxBigBirdModel,
      FlaxBigBirdPreTrainedModel,
  )

else:
 import sys

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



"""simple docstring"""


import copy

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


a							=logging.get_logger(__name__)






class    __UpperCAmelCase						(	__lowerCAmelCase	):
				A__      :   Any  							=       '''hybrid-clip'''
				A__      :   Optional[Any]  							=       True

				def __init__(      self	, _lowerCamelCase=512	, **_lowerCamelCase      ):
										super().__init__(**_lowerCamelCase      )

										if "text_config" not in kwargs:
																raise ValueError("`text_config` can not be `None`."      )

										if "vision_config" not in kwargs:
																raise ValueError("`vision_config` can not be `None`."      )

										lowerCamelCase__					=kwargs.pop("text_config"      )
										lowerCamelCase__					=kwargs.pop("vision_config"      )

										lowerCamelCase__					=text_config.pop("model_type"      )
										lowerCamelCase__					=vision_config.pop("model_type"      )

										from transformers import AutoConfig

										lowerCamelCase__					=AutoConfig.for_model(_lowerCamelCase	, **_lowerCamelCase      )

										if vision_model_type == "clip":
																lowerCamelCase__					=AutoConfig.for_model(_lowerCamelCase	, **_lowerCamelCase      ).vision_config
										elif vision_model_type == "clip_vision_model":
																from transformers import CLIPVisionConfig

																lowerCamelCase__					=CLIPVisionConfig(**_lowerCamelCase      )
										else:
																lowerCamelCase__					=AutoConfig.for_model(_lowerCamelCase	, **_lowerCamelCase      )

										lowerCamelCase__					=projection_dim
										lowerCamelCase__					=1.0

				@classmethod
				def 		_a	(      cls	, _lowerCamelCase	, _lowerCamelCase	, **_lowerCamelCase      ):
										return cls(text_config=text_config.to_dict()	, vision_config=vision_config.to_dict()	, **_lowerCamelCase      )






				def 		_a	(      self      ):
										lowerCamelCase__					=copy.deepcopy(self.__dict__      )
										lowerCamelCase__					=self.text_config.to_dict()
										lowerCamelCase__					=self.vision_config.to_dict()
										lowerCamelCase__					=self.__class__.model_type
										return output


