



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

lowercase__		:				Dict          =	logging.get_logger(__name__)

lowercase__		:				Any          =	{
    """openai/whisper-base""": """https://huggingface.co/openai/whisper-base/resolve/main/config.json""",
}

# fmt: off
lowercase__		:				List[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
]
lowercase__		:				List[str]          =	[
    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       UpperCamelCase__   (	lowercase_  ):




      """simple docstring"""




      _SCREAMING_SNAKE_CASE  				=     """whisper"""
      _SCREAMING_SNAKE_CASE  				=     ["""past_key_values"""]
      _SCREAMING_SNAKE_CASE  				=     {"""num_attention_heads""": """encoder_attention_heads""", """hidden_size""": """d_model"""}



      def __init__(      self				:      int    ,			SCREAMING_SNAKE_CASE_				:      List[Any]=5_1_8_6_5    ,			SCREAMING_SNAKE_CASE_				:      str=8_0    ,			SCREAMING_SNAKE_CASE_				:      Optional[Any]=6    ,			SCREAMING_SNAKE_CASE_				:      Dict=4    ,			SCREAMING_SNAKE_CASE_				:      Optional[int]=6    ,			SCREAMING_SNAKE_CASE_				:      str=4    ,			SCREAMING_SNAKE_CASE_				:      Optional[int]=1_5_3_6    ,			SCREAMING_SNAKE_CASE_				:      Optional[int]=1_5_3_6    ,			SCREAMING_SNAKE_CASE_				:      Any=0.0    ,			SCREAMING_SNAKE_CASE_				:      List[str]=0.0    ,			SCREAMING_SNAKE_CASE_				:      Optional[int]=5_0_2_5_7    ,			SCREAMING_SNAKE_CASE_				:      Dict=True    ,			SCREAMING_SNAKE_CASE_				:      Optional[int]=True    ,			SCREAMING_SNAKE_CASE_				:      str="gelu"    ,			SCREAMING_SNAKE_CASE_				:      str=2_5_6    ,			SCREAMING_SNAKE_CASE_				:      Tuple=0.0    ,			SCREAMING_SNAKE_CASE_				:      Optional[Any]=0.0    ,			SCREAMING_SNAKE_CASE_				:      Any=0.0    ,			SCREAMING_SNAKE_CASE_				:      int=0.02    ,			SCREAMING_SNAKE_CASE_				:      Optional[Any]=False    ,			SCREAMING_SNAKE_CASE_				:      Union[str, Any]=1_5_0_0    ,			SCREAMING_SNAKE_CASE_				:      Optional[int]=4_4_8    ,			SCREAMING_SNAKE_CASE_				:      Tuple=5_0_2_5_6    ,			SCREAMING_SNAKE_CASE_				:      Any=5_0_2_5_6    ,			SCREAMING_SNAKE_CASE_				:      Optional[int]=5_0_2_5_6    ,			SCREAMING_SNAKE_CASE_				:      Optional[Any]=None    ,			SCREAMING_SNAKE_CASE_				:      str=[2_2_0, 5_0_2_5_6]    ,			SCREAMING_SNAKE_CASE_				:      List[Any]=False    ,			SCREAMING_SNAKE_CASE_				:      Dict=2_5_6    ,			SCREAMING_SNAKE_CASE_				:      str=False    ,			SCREAMING_SNAKE_CASE_				:      str=0.05    ,			SCREAMING_SNAKE_CASE_				:      Tuple=1_0    ,			SCREAMING_SNAKE_CASE_				:      Tuple=2    ,			SCREAMING_SNAKE_CASE_				:      Optional[int]=0.0    ,			SCREAMING_SNAKE_CASE_				:      Optional[int]=1_0    ,			SCREAMING_SNAKE_CASE_				:      Any=0    ,			SCREAMING_SNAKE_CASE_				:      Dict=7    ,			**SCREAMING_SNAKE_CASE_				:      List[Any]    ,			):
        lowerCAmelCase_   :				Dict								= vocab_size
        lowerCAmelCase_   :				Any								= num_mel_bins
        lowerCAmelCase_   :				Dict								= d_model
        lowerCAmelCase_   :				int								= encoder_layers
        lowerCAmelCase_   :				Optional[int]								= encoder_attention_heads
        lowerCAmelCase_   :				List[Any]								= decoder_layers
        lowerCAmelCase_   :				Optional[int]								= decoder_attention_heads
        lowerCAmelCase_   :				int								= decoder_ffn_dim
        lowerCAmelCase_   :				Any								= encoder_ffn_dim
        lowerCAmelCase_   :				Optional[Any]								= dropout
        lowerCAmelCase_   :				Dict								= attention_dropout
        lowerCAmelCase_   :				Dict								= activation_dropout
        lowerCAmelCase_   :				Union[str, Any]								= activation_function
        lowerCAmelCase_   :				int								= init_std
        lowerCAmelCase_   :				List[str]								= encoder_layerdrop
        lowerCAmelCase_   :				Union[str, Any]								= decoder_layerdrop
        lowerCAmelCase_   :				Optional[int]								= use_cache
        lowerCAmelCase_   :				List[str]								= encoder_layers
        lowerCAmelCase_   :				List[str]								= scale_embedding  # scale factor will be sqrt(d_model) if True
        lowerCAmelCase_   :				int								= max_source_positions
        lowerCAmelCase_   :				List[str]								= max_target_positions

        # Audio Classification-specific parameters. Feel free to ignore for other classes.
        lowerCAmelCase_   :				Tuple								= classifier_proj_size
        lowerCAmelCase_   :				int								= use_weighted_layer_sum

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

        lowerCAmelCase_   :				Tuple								= median_filter_width

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







class       UpperCamelCase__   (	lowercase_  ):




      """simple docstring"""




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

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

        return common_inputs



      def      SCREAMING_SNAKE_CASE__ (      self				:      Optional[int]    ,			SCREAMING_SNAKE_CASE_				:      Union["PreTrainedTokenizerBase", "FeatureExtractionMixin"]    ,			SCREAMING_SNAKE_CASE_				:      int = -1    ,			SCREAMING_SNAKE_CASE_				:      int = -1    ,			SCREAMING_SNAKE_CASE_				:      bool = False    ,			SCREAMING_SNAKE_CASE_				:      Optional["TensorType"] = None    ,			SCREAMING_SNAKE_CASE_				:      int = 2_2_0_5_0    ,			SCREAMING_SNAKE_CASE_				:      float = 5.0    ,			SCREAMING_SNAKE_CASE_				:      int = 2_2_0    ,			):
        lowerCAmelCase_   :				Any								= OrderedDict()
        lowerCAmelCase_   :				Optional[int]								= OnnxConfig.generate_dummy_inputs(
            self    ,			preprocessor=preprocessor.feature_extractor    ,			batch_size=SCREAMING_SNAKE_CASE_    ,			framework=SCREAMING_SNAKE_CASE_    ,			sampling_rate=SCREAMING_SNAKE_CASE_    ,			time_duration=SCREAMING_SNAKE_CASE_    ,			frequency=SCREAMING_SNAKE_CASE_    ,			)
        lowerCAmelCase_   :				List[Any]								= encoder_inputs['input_features'].shape[2]
        lowerCAmelCase_   :				str								= encoder_sequence_length // 2 if self.use_past else seq_length

        lowerCAmelCase_   :				Dict								= super().generate_dummy_inputs(
            preprocessor.tokenizer    ,			SCREAMING_SNAKE_CASE_    ,			SCREAMING_SNAKE_CASE_    ,			SCREAMING_SNAKE_CASE_    ,			SCREAMING_SNAKE_CASE_       )

        lowerCAmelCase_   :				Any								= encoder_inputs.pop('input_features'       )
        lowerCAmelCase_   :				Optional[int]								= decoder_inputs.pop('decoder_input_ids'       )

        if "past_key_values" in decoder_inputs:
          lowerCAmelCase_   :				Optional[Any]								= decoder_inputs.pop('past_key_values'       )

        return dummy_inputs





      @property
      def      SCREAMING_SNAKE_CASE__ (      self				:      Dict       ):
        return 1E-3










"""simple docstring"""







import random

def 				UpperCamelCase_    (    lowerCAmelCase__      :				int    ,   lowerCAmelCase__      :				float    ,   lowerCAmelCase__      :				bool = False						)						->   dict:

  """simple docstring"""




  lowerCAmelCase_   :				dict								= {i: [] for i in range(lowerCAmelCase__						)}

  # if probability is greater or equal than 1, then generate a complete graph
  if probability >= 1:
    return complete_graph(lowerCAmelCase__						)
  # if probability is lower or equal than 0, then return a graph without edges
  if probability <= 0:
    return graph

  # for each couple of nodes, add an edge from u to v
  # if the number randomly generated is greater than probability probability
  for i in range(lowerCAmelCase__						):
    for j in range(i + 1    ,   lowerCAmelCase__						):
      if random.random() < probability:
        graph[i].append(lowerCAmelCase__						)
        if not directed:
          # if the graph is undirected, add an edge in from j to i, either
          graph[j].append(lowerCAmelCase__						)
  return graph

def 				UpperCamelCase_    (    lowerCAmelCase__      :				int						)						->   dict:

  """simple docstring"""




  return {
      i: [j for j in range(lowerCAmelCase__						) if i != j] for i in range(lowerCAmelCase__						)
  }


if __name__ == "__main__":
     import doctest

     doctest.testmod()





