






"""simple docstring"""


from typing import TYPE_CHECKING

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


_UpperCamelCase :    str      =			{
    """auto_factory""": ["""get_values"""],
    """configuration_auto""": ["""ALL_PRETRAINED_CONFIG_ARCHIVE_MAP""", """CONFIG_MAPPING""", """MODEL_NAMES_MAPPING""", """AutoConfig"""],
    """feature_extraction_auto""": ["""FEATURE_EXTRACTOR_MAPPING""", """AutoFeatureExtractor"""],
    """image_processing_auto""": ["""IMAGE_PROCESSOR_MAPPING""", """AutoImageProcessor"""],
    """processing_auto""": ["""PROCESSOR_MAPPING""", """AutoProcessor"""],
    """tokenization_auto""": ["""TOKENIZER_MAPPING""", """AutoTokenizer"""],
}

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _UpperCamelCase :    Union[str, Any]      =			[
       """MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING""",
       """MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING""",
       """MODEL_FOR_AUDIO_XVECTOR_MAPPING""",
       """MODEL_FOR_BACKBONE_MAPPING""",
       """MODEL_FOR_CAUSAL_IMAGE_MODELING_MAPPING""",
       """MODEL_FOR_CAUSAL_LM_MAPPING""",
       """MODEL_FOR_CTC_MAPPING""",
       """MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING""",
       """MODEL_FOR_DEPTH_ESTIMATION_MAPPING""",
       """MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING""",
       """MODEL_FOR_IMAGE_SEGMENTATION_MAPPING""",
       """MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING""",
       """MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING""",
       """MODEL_FOR_MASKED_LM_MAPPING""",
       """MODEL_FOR_MASK_GENERATION_MAPPING""",
       """MODEL_FOR_MULTIPLE_CHOICE_MAPPING""",
       """MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING""",
       """MODEL_FOR_OBJECT_DETECTION_MAPPING""",
       """MODEL_FOR_PRETRAINING_MAPPING""",
       """MODEL_FOR_QUESTION_ANSWERING_MAPPING""",
       """MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING""",
       """MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING""",
       """MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING""",
       """MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING""",
       """MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING""",
       """MODEL_FOR_TEXT_ENCODING_MAPPING""",
       """MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING""",
       """MODEL_FOR_UNIVERSAL_SEGMENTATION_MAPPING""",
       """MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING""",
       """MODEL_FOR_VISION_2_SEQ_MAPPING""",
       """MODEL_FOR_VISUAL_QUESTION_ANSWERING_MAPPING""",
       """MODEL_MAPPING""",
       """MODEL_WITH_LM_HEAD_MAPPING""",
       """MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING""",
       """MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING""",
       """AutoModel""",
       """AutoBackbone""",
       """AutoModelForAudioClassification""",
       """AutoModelForAudioFrameClassification""",
       """AutoModelForAudioXVector""",
       """AutoModelForCausalLM""",
       """AutoModelForCTC""",
       """AutoModelForDepthEstimation""",
       """AutoModelForImageClassification""",
       """AutoModelForImageSegmentation""",
       """AutoModelForInstanceSegmentation""",
       """AutoModelForMaskGeneration""",
       """AutoModelForTextEncoding""",
       """AutoModelForMaskedImageModeling""",
       """AutoModelForMaskedLM""",
       """AutoModelForMultipleChoice""",
       """AutoModelForNextSentencePrediction""",
       """AutoModelForObjectDetection""",
       """AutoModelForPreTraining""",
       """AutoModelForQuestionAnswering""",
       """AutoModelForSemanticSegmentation""",
       """AutoModelForSeq2SeqLM""",
       """AutoModelForSequenceClassification""",
       """AutoModelForSpeechSeq2Seq""",
       """AutoModelForTableQuestionAnswering""",
       """AutoModelForTokenClassification""",
       """AutoModelForUniversalSegmentation""",
       """AutoModelForVideoClassification""",
       """AutoModelForVision2Seq""",
       """AutoModelForVisualQuestionAnswering""",
       """AutoModelForDocumentQuestionAnswering""",
       """AutoModelWithLMHead""",
       """AutoModelForZeroShotImageClassification""",
       """AutoModelForZeroShotObjectDetection""",
   ]

try:
   if not is_tf_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _UpperCamelCase :    List[str]      =			[
       """TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING""",
       """TF_MODEL_FOR_CAUSAL_LM_MAPPING""",
       """TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING""",
       """TF_MODEL_FOR_MASK_GENERATION_MAPPING""",
       """TF_MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING""",
       """TF_MODEL_FOR_MASKED_LM_MAPPING""",
       """TF_MODEL_FOR_MULTIPLE_CHOICE_MAPPING""",
       """TF_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING""",
       """TF_MODEL_FOR_PRETRAINING_MAPPING""",
       """TF_MODEL_FOR_QUESTION_ANSWERING_MAPPING""",
       """TF_MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING""",
       """TF_MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING""",
       """TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING""",
       """TF_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING""",
       """TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING""",
       """TF_MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING""",
       """TF_MODEL_FOR_TEXT_ENCODING_MAPPING""",
       """TF_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING""",
       """TF_MODEL_FOR_VISION_2_SEQ_MAPPING""",
       """TF_MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING""",
       """TF_MODEL_MAPPING""",
       """TF_MODEL_WITH_LM_HEAD_MAPPING""",
       """TFAutoModel""",
       """TFAutoModelForAudioClassification""",
       """TFAutoModelForCausalLM""",
       """TFAutoModelForImageClassification""",
       """TFAutoModelForMaskedImageModeling""",
       """TFAutoModelForMaskedLM""",
       """TFAutoModelForMaskGeneration""",
       """TFAutoModelForMultipleChoice""",
       """TFAutoModelForNextSentencePrediction""",
       """TFAutoModelForPreTraining""",
       """TFAutoModelForDocumentQuestionAnswering""",
       """TFAutoModelForQuestionAnswering""",
       """TFAutoModelForSemanticSegmentation""",
       """TFAutoModelForSeq2SeqLM""",
       """TFAutoModelForSequenceClassification""",
       """TFAutoModelForSpeechSeq2Seq""",
       """TFAutoModelForTableQuestionAnswering""",
       """TFAutoModelForTextEncoding""",
       """TFAutoModelForTokenClassification""",
       """TFAutoModelForVision2Seq""",
       """TFAutoModelForZeroShotImageClassification""",
       """TFAutoModelWithLMHead""",
   ]

try:
   if not is_flax_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _UpperCamelCase :    str      =			[
       """FLAX_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING""",
       """FLAX_MODEL_FOR_CAUSAL_LM_MAPPING""",
       """FLAX_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING""",
       """FLAX_MODEL_FOR_MASKED_LM_MAPPING""",
       """FLAX_MODEL_FOR_MULTIPLE_CHOICE_MAPPING""",
       """FLAX_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING""",
       """FLAX_MODEL_FOR_PRETRAINING_MAPPING""",
       """FLAX_MODEL_FOR_QUESTION_ANSWERING_MAPPING""",
       """FLAX_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING""",
       """FLAX_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING""",
       """FLAX_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING""",
       """FLAX_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING""",
       """FLAX_MODEL_FOR_VISION_2_SEQ_MAPPING""",
       """FLAX_MODEL_MAPPING""",
       """FlaxAutoModel""",
       """FlaxAutoModelForCausalLM""",
       """FlaxAutoModelForImageClassification""",
       """FlaxAutoModelForMaskedLM""",
       """FlaxAutoModelForMultipleChoice""",
       """FlaxAutoModelForNextSentencePrediction""",
       """FlaxAutoModelForPreTraining""",
       """FlaxAutoModelForQuestionAnswering""",
       """FlaxAutoModelForSeq2SeqLM""",
       """FlaxAutoModelForSequenceClassification""",
       """FlaxAutoModelForSpeechSeq2Seq""",
       """FlaxAutoModelForTokenClassification""",
       """FlaxAutoModelForVision2Seq""",
   ]


if TYPE_CHECKING:
   from .auto_factory import get_values
   from .configuration_auto import ALL_PRETRAINED_CONFIG_ARCHIVE_MAP, CONFIG_MAPPING, MODEL_NAMES_MAPPING, AutoConfig
   from .feature_extraction_auto import FEATURE_EXTRACTOR_MAPPING, AutoFeatureExtractor
   from .image_processing_auto import IMAGE_PROCESSOR_MAPPING, AutoImageProcessor
   from .processing_auto import PROCESSOR_MAPPING, AutoProcessor
   from .tokenization_auto import TOKENIZER_MAPPING, AutoTokenizer

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_auto import (
          MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
          MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING,
          MODEL_FOR_AUDIO_XVECTOR_MAPPING,
          MODEL_FOR_BACKBONE_MAPPING,
          MODEL_FOR_CAUSAL_IMAGE_MODELING_MAPPING,
          MODEL_FOR_CAUSAL_LM_MAPPING,
          MODEL_FOR_CTC_MAPPING,
          MODEL_FOR_DEPTH_ESTIMATION_MAPPING,
          MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING,
          MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
          MODEL_FOR_IMAGE_SEGMENTATION_MAPPING,
          MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING,
          MODEL_FOR_MASK_GENERATION_MAPPING,
          MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING,
          MODEL_FOR_MASKED_LM_MAPPING,
          MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
          MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
          MODEL_FOR_OBJECT_DETECTION_MAPPING,
          MODEL_FOR_PRETRAINING_MAPPING,
          MODEL_FOR_QUESTION_ANSWERING_MAPPING,
          MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING,
          MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
          MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
          MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
          MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
          MODEL_FOR_TEXT_ENCODING_MAPPING,
          MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
          MODEL_FOR_UNIVERSAL_SEGMENTATION_MAPPING,
          MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING,
          MODEL_FOR_VISION_2_SEQ_MAPPING,
          MODEL_FOR_VISUAL_QUESTION_ANSWERING_MAPPING,
          MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING,
          MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING,
          MODEL_MAPPING,
          MODEL_WITH_LM_HEAD_MAPPING,
          AutoBackbone,
          AutoModel,
          AutoModelForAudioClassification,
          AutoModelForAudioFrameClassification,
          AutoModelForAudioXVector,
          AutoModelForCausalLM,
          AutoModelForCTC,
          AutoModelForDepthEstimation,
          AutoModelForDocumentQuestionAnswering,
          AutoModelForImageClassification,
          AutoModelForImageSegmentation,
          AutoModelForInstanceSegmentation,
          AutoModelForMaskedImageModeling,
          AutoModelForMaskedLM,
          AutoModelForMaskGeneration,
          AutoModelForMultipleChoice,
          AutoModelForNextSentencePrediction,
          AutoModelForObjectDetection,
          AutoModelForPreTraining,
          AutoModelForQuestionAnswering,
          AutoModelForSemanticSegmentation,
          AutoModelForSeqaSeqLM,
          AutoModelForSequenceClassification,
          AutoModelForSpeechSeqaSeq,
          AutoModelForTableQuestionAnswering,
          AutoModelForTextEncoding,
          AutoModelForTokenClassification,
          AutoModelForUniversalSegmentation,
          AutoModelForVideoClassification,
          AutoModelForVisionaSeq,
          AutoModelForVisualQuestionAnswering,
          AutoModelForZeroShotImageClassification,
          AutoModelForZeroShotObjectDetection,
          AutoModelWithLMHead,
      )

   try:
      if not is_tf_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_tf_auto import (
          TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
          TF_MODEL_FOR_CAUSAL_LM_MAPPING,
          TF_MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING,
          TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
          TF_MODEL_FOR_MASK_GENERATION_MAPPING,
          TF_MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING,
          TF_MODEL_FOR_MASKED_LM_MAPPING,
          TF_MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
          TF_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
          TF_MODEL_FOR_PRETRAINING_MAPPING,
          TF_MODEL_FOR_QUESTION_ANSWERING_MAPPING,
          TF_MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING,
          TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
          TF_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
          TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
          TF_MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
          TF_MODEL_FOR_TEXT_ENCODING_MAPPING,
          TF_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
          TF_MODEL_FOR_VISION_2_SEQ_MAPPING,
          TF_MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING,
          TF_MODEL_MAPPING,
          TF_MODEL_WITH_LM_HEAD_MAPPING,
          TFAutoModel,
          TFAutoModelForAudioClassification,
          TFAutoModelForCausalLM,
          TFAutoModelForDocumentQuestionAnswering,
          TFAutoModelForImageClassification,
          TFAutoModelForMaskedImageModeling,
          TFAutoModelForMaskedLM,
          TFAutoModelForMaskGeneration,
          TFAutoModelForMultipleChoice,
          TFAutoModelForNextSentencePrediction,
          TFAutoModelForPreTraining,
          TFAutoModelForQuestionAnswering,
          TFAutoModelForSemanticSegmentation,
          TFAutoModelForSeqaSeqLM,
          TFAutoModelForSequenceClassification,
          TFAutoModelForSpeechSeqaSeq,
          TFAutoModelForTableQuestionAnswering,
          TFAutoModelForTextEncoding,
          TFAutoModelForTokenClassification,
          TFAutoModelForVisionaSeq,
          TFAutoModelForZeroShotImageClassification,
          TFAutoModelWithLMHead,
      )

   try:
      if not is_flax_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_flax_auto import (
          FLAX_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
          FLAX_MODEL_FOR_CAUSAL_LM_MAPPING,
          FLAX_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
          FLAX_MODEL_FOR_MASKED_LM_MAPPING,
          FLAX_MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
          FLAX_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
          FLAX_MODEL_FOR_PRETRAINING_MAPPING,
          FLAX_MODEL_FOR_QUESTION_ANSWERING_MAPPING,
          FLAX_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
          FLAX_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
          FLAX_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
          FLAX_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
          FLAX_MODEL_FOR_VISION_2_SEQ_MAPPING,
          FLAX_MODEL_MAPPING,
          FlaxAutoModel,
          FlaxAutoModelForCausalLM,
          FlaxAutoModelForImageClassification,
          FlaxAutoModelForMaskedLM,
          FlaxAutoModelForMultipleChoice,
          FlaxAutoModelForNextSentencePrediction,
          FlaxAutoModelForPreTraining,
          FlaxAutoModelForQuestionAnswering,
          FlaxAutoModelForSeqaSeqLM,
          FlaxAutoModelForSequenceClassification,
          FlaxAutoModelForSpeechSeqaSeq,
          FlaxAutoModelForTokenClassification,
          FlaxAutoModelForVisionaSeq,
      )

else:
   import sys

   _UpperCamelCase :    Dict      =			_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)













"""simple docstring"""


import importlib.metadata
import subprocess
import sys




def 					a			(  UpperCamelCase_				:					bool = False		)	->		Optional[Any]:
 __A						:							List[Any]      =						False
 if "IPython" in sys.modules:
  __A						:							List[Any]      =						'google.colab' in str(sys.modules['IPython'].get_ipython()		)

 if in_colab:
  if upgrade:
   __A						:							Dict      =						['pip', 'install', '-U', 'torch']
   subprocess.run(UpperCamelCase_  ,						check=UpperCamelCase_		)
  # get the current version of torch
  __A						:							int      =						importlib.metadata.version('torch'		)
  __A						:							int      =						torch_version[: torch_version.rindex('.'		)]
  __A						:							Any      =						F"https://storage.googleapis.com/tpu-pytorch/wheels/colab/torch_xla-{torch_version_trunc}-cp37-cp37m-linux_x86_64.whl"
  __A						:							int      =						['pip', 'install', xla_wheel]
  subprocess.run(UpperCamelCase_  ,						check=UpperCamelCase_		)
 else:
  raise RuntimeError('`install_xla` utility works only on google colab.'		)





