






'''simple docstring'''

from collections import OrderedDict
from typing import TYPE_CHECKING, Any, Mapping, Optional, Union

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig, OnnxSeqaSeqConfigWithPast
from ...utils import logging


if TYPE_CHECKING:
     from ...feature_extraction_utils import FeatureExtractionMixin
     from ...tokenization_utils_base import PreTrainedTokenizerBase
     from ...utils import TensorType

SCREAMING_SNAKE_CASE__      =   logging.get_logger(__name__)

SCREAMING_SNAKE_CASE__      =   {
    'openai/whisper-base': 'https://huggingface.co/openai/whisper-base/resolve/main/config.json',
}

# fmt: off
SCREAMING_SNAKE_CASE__      =   [
    1, 2, 7, 8, 9, 1_0, 1_4, 2_5,
    2_6, 2_7, 2_8, 2_9, 3_1, 5_8, 5_9, 6_0, 6_1, 6_2,
    6_3, 9_0, 9_1, 9_2, 9_3, 3_5_7, 3_6_6, 4_3_8, 5_3_2, 6_8_5,
    7_0_5, 7_9_6, 9_3_0, 1_0_5_8, 1_2_2_0, 1_2_6_7, 1_2_7_9, 1_3_0_3, 1_3_4_3, 1_3_7_7,
    1_3_9_1, 1_6_3_5, 1_7_8_2, 1_8_7_5, 2_1_6_2, 2_3_6_1, 2_4_8_8, 3_4_6_7, 4_0_0_8, 4_2_1_1,
    4_6_0_0, 4_8_0_8, 5_2_9_9, 5_8_5_5, 6_3_2_9, 7_2_0_3, 9_6_0_9, 9_9_5_9, 1_0_5_6_3, 1_0_7_8_6,
    1_1_4_2_0, 1_1_7_0_9, 1_1_9_0_7, 1_3_1_6_3, 1_3_6_9_7, 1_3_7_0_0, 1_4_8_0_8, 1_5_3_0_6, 1_6_4_1_0, 1_6_7_9_1,
    1_7_9_9_2, 1_9_2_0_3, 1_9_5_1_0, 2_0_7_2_4, 2_2_3_0_5, 2_2_9_3_5, 2_7_0_0_7, 3_0_1_0_9, 3_0_4_2_0, 3_3_4_0_9,
    3_4_9_4_9, 4_0_2_8_3, 4_0_4_9_3, 4_0_5_4_9, 4_7_2_8_2, 4_9_1_4_6, 5_0_2_5_7, 5_0_3_5_9, 5_0_3_6_0, 5_0_3_6_1
]
SCREAMING_SNAKE_CASE__      =   [
    1, 2, 7, 8, 9, 1_0, 1_4, 2_5,
    2_6, 2_7, 2_8, 2_9, 3_1, 5_8, 5_9, 6_0, 6_1, 6_2,
    6_3, 9_0, 9_1, 9_2, 9_3, 3_5_9, 5_0_3, 5_2_2, 5_4_2, 8_7_3,
    8_9_3, 9_0_2, 9_1_8, 9_2_2, 9_3_1, 1_3_5_0, 1_8_5_3, 1_9_8_2, 2_4_6_0, 2_6_2_7,
    3_2_4_6, 3_2_5_3, 3_2_6_8, 3_5_3_6, 3_8_4_6, 3_9_6_1, 4_1_8_3, 4_6_6_7, 6_5_8_5, 6_6_4_7,
    7_2_7_3, 9_0_6_1, 9_3_8_3, 1_0_4_2_8, 1_0_9_2_9, 1_1_9_3_8, 1_2_0_3_3, 1_2_3_3_1, 1_2_5_6_2, 1_3_7_9_3,
    1_4_1_5_7, 1_4_6_3_5, 1_5_2_6_5, 1_5_6_1_8, 1_6_5_5_3, 1_6_6_0_4, 1_8_3_6_2, 1_8_9_5_6, 2_0_0_7_5, 2_1_6_7_5,
    2_2_5_2_0, 2_6_1_3_0, 2_6_1_6_1, 2_6_4_3_5, 2_8_2_7_9, 2_9_4_6_4, 3_1_6_5_0, 3_2_3_0_2, 3_2_4_7_0, 3_6_8_6_5,
    4_2_8_6_3, 4_7_4_2_5, 4_9_8_7_0, 5_0_2_5_4, 5_0_2_5_8, 5_0_3_6_0, 5_0_3_6_1, 5_0_3_6_2
]






class 				a_						(			__UpperCAmelCase				):
  lowercase     		=      """whisper"""
  lowercase     		=      ["""past_key_values"""]
  lowercase     		=      {"""num_attention_heads""": """encoder_attention_heads""", """hidden_size""": """d_model"""}

  def __init__(      self			,		_SCREAMING_SNAKE_CASE=51865			,		_SCREAMING_SNAKE_CASE=80			,		_SCREAMING_SNAKE_CASE=6			,		_SCREAMING_SNAKE_CASE=4			,		_SCREAMING_SNAKE_CASE=6			,		_SCREAMING_SNAKE_CASE=4			,		_SCREAMING_SNAKE_CASE=1536			,		_SCREAMING_SNAKE_CASE=1536			,		_SCREAMING_SNAKE_CASE=0.0			,		_SCREAMING_SNAKE_CASE=0.0			,		_SCREAMING_SNAKE_CASE=50257			,		_SCREAMING_SNAKE_CASE=True			,		_SCREAMING_SNAKE_CASE=True			,		_SCREAMING_SNAKE_CASE="gelu"			,		_SCREAMING_SNAKE_CASE=256			,		_SCREAMING_SNAKE_CASE=0.0			,		_SCREAMING_SNAKE_CASE=0.0			,		_SCREAMING_SNAKE_CASE=0.0			,		_SCREAMING_SNAKE_CASE=0.0_2			,		_SCREAMING_SNAKE_CASE=False			,		_SCREAMING_SNAKE_CASE=1500			,		_SCREAMING_SNAKE_CASE=448			,		_SCREAMING_SNAKE_CASE=50256			,		_SCREAMING_SNAKE_CASE=50256			,		_SCREAMING_SNAKE_CASE=50256			,		_SCREAMING_SNAKE_CASE=None			,		_SCREAMING_SNAKE_CASE=[220, 50256]			,		_SCREAMING_SNAKE_CASE=False			,		_SCREAMING_SNAKE_CASE=256			,		_SCREAMING_SNAKE_CASE=False			,		_SCREAMING_SNAKE_CASE=0.0_5			,		_SCREAMING_SNAKE_CASE=10			,		_SCREAMING_SNAKE_CASE=2			,		_SCREAMING_SNAKE_CASE=0.0			,		_SCREAMING_SNAKE_CASE=10			,		_SCREAMING_SNAKE_CASE=0			,		_SCREAMING_SNAKE_CASE=7			,		**_SCREAMING_SNAKE_CASE			,		)  ->      Any:



        """simple docstring"""






        UpperCamelCase				  =					vocab_size
        UpperCamelCase				  =					num_mel_bins
        UpperCamelCase				  =					d_model
        UpperCamelCase				  =					encoder_layers
        UpperCamelCase				  =					encoder_attention_heads
        UpperCamelCase				  =					decoder_layers
        UpperCamelCase				  =					decoder_attention_heads
        UpperCamelCase				  =					decoder_ffn_dim
        UpperCamelCase				  =					encoder_ffn_dim
        UpperCamelCase				  =					dropout
        UpperCamelCase				  =					attention_dropout
        UpperCamelCase				  =					activation_dropout
        UpperCamelCase				  =					activation_function
        UpperCamelCase				  =					init_std
        UpperCamelCase				  =					encoder_layerdrop
        UpperCamelCase				  =					decoder_layerdrop
        UpperCamelCase				  =					use_cache
        UpperCamelCase				  =					encoder_layers
        UpperCamelCase				  =					scale_embedding  # scale factor will be sqrt(d_model) if True
        UpperCamelCase				  =					max_source_positions
        UpperCamelCase				  =					max_target_positions

        # Audio Classification-specific parameters. Feel free to ignore for other classes.
        UpperCamelCase				  =					classifier_proj_size
        UpperCamelCase				  =					use_weighted_layer_sum

        # fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
        UpperCamelCase				  =					apply_spec_augment
        UpperCamelCase				  =					mask_time_prob
        UpperCamelCase				  =					mask_time_length
        UpperCamelCase				  =					mask_time_min_masks
        UpperCamelCase				  =					mask_feature_prob
        UpperCamelCase				  =					mask_feature_length
        UpperCamelCase				  =					mask_feature_min_masks

        UpperCamelCase				  =					median_filter_width

        super().__init__(
            pad_token_id=lowerCamelCase__			,		bos_token_id=lowerCamelCase__			,		eos_token_id=lowerCamelCase__			,		is_encoder_decoder=lowerCamelCase__			,		decoder_start_token_id=lowerCamelCase__			,		suppress_tokens=lowerCamelCase__			,		begin_suppress_tokens=lowerCamelCase__			,		**lowerCamelCase__			,		)






class 				a_						(			__UpperCAmelCase				):

  @property
  def   A__						(      self      )  ->      Dict:



        """simple docstring"""






        UpperCamelCase				  =					OrderedDict(
            [
                ("""input_features""", {0: """batch""", 1: """feature_size""", 2: """encoder_sequence"""}),
            ]      )
        if self.use_past:
              UpperCamelCase				  =					{0: """batch"""}
        else:
              UpperCamelCase				  =					{0: """batch""", 1: """decoder_sequence"""}

        if self.use_past:
              self.fill_with_past_key_values_(lowerCamelCase__			,		direction="""inputs"""      )

        return common_inputs

  def   A__						(      self			,		_SCREAMING_SNAKE_CASE			,		_SCREAMING_SNAKE_CASE = -1			,		_SCREAMING_SNAKE_CASE = -1			,		_SCREAMING_SNAKE_CASE = False			,		_SCREAMING_SNAKE_CASE = None			,		_SCREAMING_SNAKE_CASE = 22050			,		_SCREAMING_SNAKE_CASE = 5.0			,		_SCREAMING_SNAKE_CASE = 220			,		)  ->      Optional[Any]:



        """simple docstring"""






        UpperCamelCase				  =					OrderedDict()
        UpperCamelCase				  =					OnnxConfig.generate_dummy_inputs(
            self			,		preprocessor=preprocessor.feature_extractor			,		batch_size=lowerCamelCase__			,		framework=lowerCamelCase__			,		sampling_rate=lowerCamelCase__			,		time_duration=lowerCamelCase__			,		frequency=lowerCamelCase__			,		)
        UpperCamelCase				  =					encoder_inputs["""input_features"""].shape[2]
        UpperCamelCase				  =					encoder_sequence_length // 2 if self.use_past else seq_length

        UpperCamelCase				  =					super().generate_dummy_inputs(
            preprocessor.tokenizer			,		lowerCamelCase__			,		lowerCamelCase__			,		lowerCamelCase__			,		lowerCamelCase__      )

        UpperCamelCase				  =					encoder_inputs.pop("""input_features"""      )
        UpperCamelCase				  =					decoder_inputs.pop("""decoder_input_ids"""      )

        if "past_key_values" in decoder_inputs:
              UpperCamelCase				  =					decoder_inputs.pop("""past_key_values"""      )

        return dummy_inputs


  @property
  def   A__						(      self      )  ->      Optional[Any]:



        """simple docstring"""






        return 1e-3

"""simple docstring"""






import os
import sys
import unittest


lowerCAmelCase__  :  Tuple						     =	os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
sys.path.append(os.path.join(git_repo_path, 'utils'))

import get_test_info  # noqa: E402
from get_test_info import (  # noqa: E402
    get_model_to_test_mapping,
    get_model_to_tester_mapping,
    get_test_to_tester_mapping,
)


lowerCAmelCase__  :  Tuple						     =	os.path.join('tests', 'models', 'bert', 'test_modeling_bert.py')
lowerCAmelCase__  :  Optional[Any]						     =	os.path.join('tests', 'models', 'blip', 'test_modeling_blip.py')
class 				snake_case       ( unittest.TestCase				):




					"""simple docstring"""

					def 		__lowerCAmelCase						(				self   :	List[str]			):
									UpperCAmelCase__             =							get_test_to_tester_mapping(lowerCamelCase__			)
									UpperCAmelCase__             =							get_test_to_tester_mapping(lowerCamelCase__			)

									UpperCAmelCase__             =							{'BertModelTest': 'BertModelTester'}

									UpperCAmelCase__             =							{
									    'BlipModelTest': 'BlipModelTester',
									    'BlipTextImageModelTest': 'BlipTextImageModelsModelTester',
									    'BlipTextModelTest': 'BlipTextModelTester',
									    'BlipTextRetrievalModelTest': 'BlipTextRetrievalModelTester',
									    'BlipVQAModelTest': 'BlipVQAModelTester',
									    'BlipVisionModelTest': 'BlipVisionModelTester',
									}

									self.assertEqual(get_test_info.to_json(lowerCamelCase__			)    ,lowerCamelCase__			)
									self.assertEqual(get_test_info.to_json(lowerCamelCase__			)    ,lowerCamelCase__			)







					def 		__lowerCAmelCase						(				self   :	Optional[Any]			):
									UpperCAmelCase__             =							get_model_to_test_mapping(lowerCamelCase__			)
									UpperCAmelCase__             =							get_model_to_test_mapping(lowerCamelCase__			)

									UpperCAmelCase__             =							{
									    'BertForMaskedLM': ['BertModelTest'],
									    'BertForMultipleChoice': ['BertModelTest'],
									    'BertForNextSentencePrediction': ['BertModelTest'],
									    'BertForPreTraining': ['BertModelTest'],
									    'BertForQuestionAnswering': ['BertModelTest'],
									    'BertForSequenceClassification': ['BertModelTest'],
									    'BertForTokenClassification': ['BertModelTest'],
									    'BertLMHeadModel': ['BertModelTest'],
									    'BertModel': ['BertModelTest'],
									}

									UpperCAmelCase__             =							{
									    'BlipForConditionalGeneration': ['BlipTextImageModelTest'],
									    'BlipForImageTextRetrieval': ['BlipTextRetrievalModelTest'],
									    'BlipForQuestionAnswering': ['BlipVQAModelTest'],
									    'BlipModel': ['BlipModelTest'],
									    'BlipTextModel': ['BlipTextModelTest'],
									    'BlipVisionModel': ['BlipVisionModelTest'],
									}

									self.assertEqual(get_test_info.to_json(lowerCamelCase__			)    ,lowerCamelCase__			)
									self.assertEqual(get_test_info.to_json(lowerCamelCase__			)    ,lowerCamelCase__			)







					def 		__lowerCAmelCase						(				self   :	int			):
									UpperCAmelCase__             =							get_model_to_tester_mapping(lowerCamelCase__			)
									UpperCAmelCase__             =							get_model_to_tester_mapping(lowerCamelCase__			)

									UpperCAmelCase__             =							{
									    'BertForMaskedLM': ['BertModelTester'],
									    'BertForMultipleChoice': ['BertModelTester'],
									    'BertForNextSentencePrediction': ['BertModelTester'],
									    'BertForPreTraining': ['BertModelTester'],
									    'BertForQuestionAnswering': ['BertModelTester'],
									    'BertForSequenceClassification': ['BertModelTester'],
									    'BertForTokenClassification': ['BertModelTester'],
									    'BertLMHeadModel': ['BertModelTester'],
									    'BertModel': ['BertModelTester'],
									}

									UpperCAmelCase__             =							{
									    'BlipForConditionalGeneration': ['BlipTextImageModelsModelTester'],
									    'BlipForImageTextRetrieval': ['BlipTextRetrievalModelTester'],
									    'BlipForQuestionAnswering': ['BlipVQAModelTester'],
									    'BlipModel': ['BlipModelTester'],
									    'BlipTextModel': ['BlipTextModelTester'],
									    'BlipVisionModel': ['BlipVisionModelTester'],
									}

									self.assertEqual(get_test_info.to_json(lowerCamelCase__			)    ,lowerCamelCase__			)
									self.assertEqual(get_test_info.to_json(lowerCamelCase__			)    ,lowerCamelCase__			)



