



'''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

lowerCAmelCase:					Union[str, Any]						       =						logging.get_logger(__name__)

lowerCAmelCase:					List[str]						       =						{
    'openai/whisper-base': 'https://huggingface.co/openai/whisper-base/resolve/main/config.json',
}

# fmt: off
lowerCAmelCase:					Optional[Any]						       =						[
    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
]
lowerCAmelCase:					Tuple						       =						[
    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__(					lowerCAmelCase_	):
    lowercase__ =    "whisper"
    lowercase__ =    ["past_key_values"]
    lowercase__ =    {"num_attention_heads": "encoder_attention_heads", "hidden_size": "d_model"}







    def __init__(      self :  Union[str, Any]						,			__snake_case :  Union[str, Any]=5_18_65						,			__snake_case :  int=80						,			__snake_case :  List[str]=6						,			__snake_case :  Dict=4						,			__snake_case :  Optional[Any]=6						,			__snake_case :  Dict=4						,			__snake_case :  Tuple=15_36						,			__snake_case :  Optional[int]=15_36						,			__snake_case :  List[str]=0.0						,			__snake_case :  int=0.0						,			__snake_case :  List[str]=5_02_57						,			__snake_case :  str=True						,			__snake_case :  Optional[Any]=True						,			__snake_case :  Any="gelu"						,			__snake_case :  str=2_56						,			__snake_case :  str=0.0						,			__snake_case :  int=0.0						,			__snake_case :  Optional[Any]=0.0						,			__snake_case :  Dict=0.02						,			__snake_case :  Union[str, Any]=False						,			__snake_case :  str=15_00						,			__snake_case :  List[Any]=4_48						,			__snake_case :  Any=5_02_56						,			__snake_case :  Union[str, Any]=5_02_56						,			__snake_case :  List[Any]=5_02_56						,			__snake_case :  int=None						,			__snake_case :  List[str]=[2_20, 5_02_56]						,			__snake_case :  Optional[Any]=False						,			__snake_case :  Tuple=2_56						,			__snake_case :  List[Any]=False						,			__snake_case :  int=0.05						,			__snake_case :  Optional[int]=10						,			__snake_case :  str=2						,			__snake_case :  Tuple=0.0						,			__snake_case :  Optional[Any]=10						,			__snake_case :  int=0						,			__snake_case :  List[str]=7						,			**__snake_case :  List[str]						,			):
      a						:					str        =     vocab_size
      a						:					List[Any]        =     num_mel_bins
      a						:					List[Any]        =     d_model
      a						:					int        =     encoder_layers
      a						:					Any        =     encoder_attention_heads
      a						:					List[str]        =     decoder_layers
      a						:					Optional[Any]        =     decoder_attention_heads
      a						:					Tuple        =     decoder_ffn_dim
      a						:					Dict        =     encoder_ffn_dim
      a						:					Optional[Any]        =     dropout
      a						:					int        =     attention_dropout
      a						:					Union[str, Any]        =     activation_dropout
      a						:					Dict        =     activation_function
      a						:					Optional[int]        =     init_std
      a						:					Any        =     encoder_layerdrop
      a						:					Any        =     decoder_layerdrop
      a						:					Any        =     use_cache
      a						:					Tuple        =     encoder_layers
      a						:					Optional[Any]        =     scale_embedding  # scale factor will be sqrt(d_model) if True
      a						:					Optional[int]        =     max_source_positions
      a						:					Any        =     max_target_positions

      # Audio Classification-specific parameters. Feel free to ignore for other classes.
      a						:					Dict        =     classifier_proj_size
      a						:					Optional[Any]        =     use_weighted_layer_sum

      # fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
      a						:					Dict        =     apply_spec_augment
      a						:					List[Any]        =     mask_time_prob
      a						:					Union[str, Any]        =     mask_time_length
      a						:					List[str]        =     mask_time_min_masks
      a						:					Dict        =     mask_feature_prob
      a						:					List[str]        =     mask_feature_length
      a						:					Any        =     mask_feature_min_masks

      a						:					Dict        =     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__(					lowerCAmelCase_	):







    @property
    def 			lowercase_       (      self :  str	):
      a						:					List[Any]        =     OrderedDict(
          [
              ('input_features', {0: 'batch', 1: 'feature_size', 2: 'encoder_sequence'}),
          ]	)
      if self.use_past:
        a						:					int        =     {0: 'batch'}
      else:
        a						:					Union[str, Any]        =     {0: 'batch', 1: 'decoder_sequence'}

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

      return common_inputs







    def 			lowercase_       (      self :  str						,			__snake_case :  Union["PreTrainedTokenizerBase", "FeatureExtractionMixin"]						,			__snake_case :  int = -1						,			__snake_case :  int = -1						,			__snake_case :  bool = False						,			__snake_case :  Optional["TensorType"] = None						,			__snake_case :  int = 2_20_50						,			__snake_case :  float = 5.0						,			__snake_case :  int = 2_20						,			):
      a						:					Optional[Any]        =     OrderedDict()
      a						:					Optional[int]        =     OnnxConfig.generate_dummy_inputs(
          self						,			preprocessor=preprocessor.feature_extractor						,			batch_size=lowerCamelCase__						,			framework=lowerCamelCase__						,			sampling_rate=lowerCamelCase__						,			time_duration=lowerCamelCase__						,			frequency=lowerCamelCase__						,			)
      a						:					Union[str, Any]        =     encoder_inputs['input_features'].shape[2]
      a						:					Union[str, Any]        =     encoder_sequence_length // 2 if self.use_past else seq_length

      a						:					Optional[Any]        =     super().generate_dummy_inputs(
          preprocessor.tokenizer						,			lowerCamelCase__						,			lowerCamelCase__						,			lowerCamelCase__						,			lowerCamelCase__	)

      a						:					int        =     encoder_inputs.pop('input_features'	)
      a						:					int        =     decoder_inputs.pop('decoder_input_ids'	)

      if "past_key_values" in decoder_inputs:
        a						:					Optional[int]        =     decoder_inputs.pop('past_key_values'	)

      return dummy_inputs







    @property
    def 			lowercase_       (      self :  Tuple	):
      return 1e-3






import copy
import os
from typing import Union

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


SCREAMING_SNAKE_CASE_						   =       logging.get_logger(__name__)

SCREAMING_SNAKE_CASE_						   =       {
    """microsoft/git-base""": """https://huggingface.co/microsoft/git-base/resolve/main/config.json""",
}

class 		UpperCamelCase__ (      lowerCAmelCase_   ):



     '''simple docstring'''

     __snake_case    :	Dict			=			"git_vision_model"






     def __init__(							self						:    List[Any]						,lowerCamelCase__						:    Dict=768						,lowerCamelCase__						:    Union[str, Any]=3072						,lowerCamelCase__						:    Optional[int]=12						,lowerCamelCase__						:    Tuple=12						,lowerCamelCase__						:    Tuple=3						,lowerCamelCase__						:    Optional[Any]=224						,lowerCamelCase__						:    Union[str, Any]=16						,lowerCamelCase__						:    List[Any]="quick_gelu"						,lowerCamelCase__						:    Optional[Any]=1e-5						,lowerCamelCase__						:    str=0.0						,lowerCamelCase__						:    Optional[int]=0.02						,**lowerCamelCase__						:    Union[str, Any]						,)     ->		Optional[int]:




           '''simple docstring'''


           super().__init__(**lowerCamelCase__       )

           SCREAMING_SNAKE_CASE		=						hidden_size
           SCREAMING_SNAKE_CASE		=						intermediate_size
           SCREAMING_SNAKE_CASE		=						num_hidden_layers
           SCREAMING_SNAKE_CASE		=						num_attention_heads
           SCREAMING_SNAKE_CASE		=						num_channels
           SCREAMING_SNAKE_CASE		=						patch_size
           SCREAMING_SNAKE_CASE		=						image_size
           SCREAMING_SNAKE_CASE		=						initializer_range
           SCREAMING_SNAKE_CASE		=						attention_dropout
           SCREAMING_SNAKE_CASE		=						layer_norm_eps
           SCREAMING_SNAKE_CASE		=						hidden_act






     @classmethod
     def 				SCREAMING_SNAKE_CASE__  (							cls						:    Tuple						,lowerCamelCase__						:    Union[str, os.PathLike]						,**lowerCamelCase__						:    int       )     ->		"PretrainedConfig":




           '''simple docstring'''


           cls._set_token_in_kwargs(lowerCamelCase__       )

           SCREAMING_SNAKE_CASE,					SCREAMING_SNAKE_CASE		=						cls.get_config_dict(lowerCamelCase__						,**lowerCamelCase__       )

           # get the vision config dict if we are loading from GITConfig
           if config_dict.get("""model_type"""       ) == "git":
                 SCREAMING_SNAKE_CASE		=						config_dict["""vision_config"""]

           if "model_type" in config_dict and hasattr(cls						,"""model_type"""       ) and config_dict["model_type"] != cls.model_type:
                 logger.warning(
                     F"""You are using a model of type {config_dict['model_type']} to instantiate a model of type """
                     F"""{cls.model_type}. This is not supported for all configurations of models and can yield errors."""       )

           return cls.from_dict(lowerCamelCase__						,**lowerCamelCase__       )

class 		UpperCamelCase__ (      lowerCAmelCase_   ):



     '''simple docstring'''

     __snake_case    :	Dict			=			"git"






     def __init__(							self						:    Optional[int]						,lowerCamelCase__						:    int=None						,lowerCamelCase__						:    str=30522						,lowerCamelCase__						:    Tuple=768						,lowerCamelCase__						:    Union[str, Any]=6						,lowerCamelCase__						:    str=12						,lowerCamelCase__						:    List[str]=3072						,lowerCamelCase__						:    Dict="gelu"						,lowerCamelCase__						:    Tuple=0.1						,lowerCamelCase__						:    Any=0.1						,lowerCamelCase__						:    List[str]=1024						,lowerCamelCase__						:    List[str]=0.02						,lowerCamelCase__						:    str=1e-1_2						,lowerCamelCase__						:    Optional[int]=0						,lowerCamelCase__						:    Optional[int]="absolute"						,lowerCamelCase__						:    Optional[Any]=True						,lowerCamelCase__						:    str=False						,lowerCamelCase__						:    int=101						,lowerCamelCase__						:    int=102						,lowerCamelCase__						:    Dict=None						,**lowerCamelCase__						:    List[Any]						,)     ->		Optional[Any]:




           '''simple docstring'''


           super().__init__(bos_token_id=lowerCamelCase__						,eos_token_id=lowerCamelCase__						,pad_token_id=lowerCamelCase__						,**lowerCamelCase__       )

           if vision_config is None:
                 SCREAMING_SNAKE_CASE		=						{}
                 logger.info("""vision_config is None. initializing the GitVisionConfig with default values."""       )

           SCREAMING_SNAKE_CASE		=						GitVisionConfig(**lowerCamelCase__       )
           SCREAMING_SNAKE_CASE		=						vocab_size
           SCREAMING_SNAKE_CASE		=						hidden_size
           SCREAMING_SNAKE_CASE		=						num_hidden_layers
           SCREAMING_SNAKE_CASE		=						num_attention_heads
           SCREAMING_SNAKE_CASE		=						hidden_act
           SCREAMING_SNAKE_CASE		=						intermediate_size
           SCREAMING_SNAKE_CASE		=						hidden_dropout_prob
           SCREAMING_SNAKE_CASE		=						attention_probs_dropout_prob
           SCREAMING_SNAKE_CASE		=						max_position_embeddings
           SCREAMING_SNAKE_CASE		=						initializer_range
           SCREAMING_SNAKE_CASE		=						layer_norm_eps
           SCREAMING_SNAKE_CASE		=						position_embedding_type
           SCREAMING_SNAKE_CASE		=						use_cache
           SCREAMING_SNAKE_CASE		=						tie_word_embeddings
           SCREAMING_SNAKE_CASE		=						num_image_with_embedding

           SCREAMING_SNAKE_CASE		=						bos_token_id
           SCREAMING_SNAKE_CASE		=						eos_token_id






     def 				SCREAMING_SNAKE_CASE__  (							self						:    Dict       )     ->		Optional[int]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						copy.deepcopy(self.__dict__       )
           SCREAMING_SNAKE_CASE		=						self.vision_config.to_dict()
           SCREAMING_SNAKE_CASE		=						self.__class__.model_type
           return output


