




'''simple docstring'''



from typing import TYPE_CHECKING

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


UpperCAmelCase_    :					Any					      =						{
    '''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_    :					Dict					      =						[
         '''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_    :					Union[str, Any]					      =						[
         '''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_    :					Optional[int]					      =						[
         '''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_    :					Union[str, Any]					      =						_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)











'''simple docstring'''



import inspect

from diffusers.utils import is_flax_available
from diffusers.utils.testing_utils import require_flax


if is_flax_available():
     import jax





@require_flax
class       lowerCAmelCase				:


       def  lowerCAmelCase (				self					) ->					int:



            '''simple docstring'''




            __snake_case   ,      __snake_case         =					self.prepare_init_args_and_inputs_for_common()

            __snake_case         =					self.model_class(**__SCREAMING_SNAKE_CASE					)
            __snake_case         =					model.init(inputs_dict['''prng_key''']      ,					inputs_dict['''sample''']					)
            jax.lax.stop_gradient(__SCREAMING_SNAKE_CASE					)

            __snake_case         =					model.apply(__SCREAMING_SNAKE_CASE      ,					inputs_dict['''sample''']					)

            if isinstance(__SCREAMING_SNAKE_CASE      ,					__SCREAMING_SNAKE_CASE					):
                 __snake_case         =					output.sample

            self.assertIsNotNone(__SCREAMING_SNAKE_CASE					)
            __snake_case         =					inputs_dict['''sample'''].shape
            self.assertEqual(output.shape      ,					__SCREAMING_SNAKE_CASE      ,					'''Input and output shapes do not match'''					)


       def  lowerCAmelCase (				self					) ->					Tuple:



            '''simple docstring'''




            __snake_case   ,      __snake_case         =					self.prepare_init_args_and_inputs_for_common()

            __snake_case         =					16
            __snake_case         =					(16, 32)

            __snake_case         =					self.model_class(**__SCREAMING_SNAKE_CASE					)
            __snake_case         =					model.init(inputs_dict['''prng_key''']      ,					inputs_dict['''sample''']					)
            jax.lax.stop_gradient(__SCREAMING_SNAKE_CASE					)

            __snake_case         =					model.apply(__SCREAMING_SNAKE_CASE      ,					inputs_dict['''sample''']					)

            if isinstance(__SCREAMING_SNAKE_CASE      ,					__SCREAMING_SNAKE_CASE					):
                 __snake_case         =					output.sample

            self.assertIsNotNone(__SCREAMING_SNAKE_CASE					)
            __snake_case         =					inputs_dict['''sample'''].shape
            self.assertEqual(output.shape      ,					__SCREAMING_SNAKE_CASE      ,					'''Input and output shapes do not match'''					)




       def  lowerCAmelCase (				self					) ->					str:



            '''simple docstring'''




            __snake_case         =					'''kwargs''' in inspect.signature(self.model_class.__init__					).parameters
            __snake_case         =					len(self.model_class._deprecated_kwargs					) > 0

            if has_kwarg_in_model_class and not has_deprecated_kwarg:
                 raise ValueError(
                     F'''{self.model_class} has `**kwargs` in its __init__ method but has not defined any deprecated kwargs'''
                     ''' under the `_deprecated_kwargs` class attribute. Make sure to either remove `**kwargs` if there are'''
                     ''' no deprecated arguments or add the deprecated argument with `_deprecated_kwargs ='''
                     ''' [<deprecated_argument>]`'''					)

            if not has_kwarg_in_model_class and has_deprecated_kwarg:
                 raise ValueError(
                     F'''{self.model_class} doesn\'t have `**kwargs` in its __init__ method but has defined deprecated kwargs'''
                     ''' under the `_deprecated_kwargs` class attribute. Make sure to either add the `**kwargs` argument to'''
                     F''' {self.model_class}.__init__ if there are deprecated arguments or remove the deprecated argument'''
                     ''' from `_deprecated_kwargs = [<deprecated_argument>]`'''					)






