





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

snake_case								=							logging.get_logger(__name__)

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

# fmt: off
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
]
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						):







       """simple docstring"""





       SCREAMING_SNAKE_CASE_   :			int  			=	'''whisper'''
       SCREAMING_SNAKE_CASE_   :			str  			=	['''past_key_values''']
       SCREAMING_SNAKE_CASE_   :			Any  			=	{'''num_attention_heads''': '''encoder_attention_heads''', '''hidden_size''': '''d_model'''}







       def __init__(     self						:						int    ,__A						:						Dict=5_1865    ,__A						:						List[str]=80    ,__A						:						str=6    ,__A						:						List[str]=4    ,__A						:						int=6    ,__A						:						Optional[Any]=4    ,__A						:						int=1536    ,__A						:						List[str]=1536    ,__A						:						Optional[Any]=0.0    ,__A						:						Union[str, Any]=0.0    ,__A						:						int=5_0257    ,__A						:						Dict=True    ,__A						:						int=True    ,__A						:						int="gelu"    ,__A						:						Union[str, Any]=256    ,__A						:						Optional[int]=0.0    ,__A						:						Any=0.0    ,__A						:						Optional[int]=0.0    ,__A						:						List[Any]=0.02    ,__A						:						Optional[int]=False    ,__A						:						int=1500    ,__A						:						Union[str, Any]=448    ,__A						:						Optional[Any]=5_0256    ,__A						:						List[str]=5_0256    ,__A						:						Dict=5_0256    ,__A						:						int=None    ,__A						:						Optional[Any]=[220, 5_0256]    ,__A						:						Optional[Any]=False    ,__A						:						Dict=256    ,__A						:						Tuple=False    ,__A						:						Union[str, Any]=0.05    ,__A						:						Optional[Any]=10    ,__A						:						int=2    ,__A						:						Optional[int]=0.0    ,__A						:						Optional[int]=10    ,__A						:						Any=0    ,__A						:						Optional[int]=7    ,**__A						:						str    ,)    ->       List[Any]:
         _lowercase						    =			vocab_size
         _lowercase						    =			num_mel_bins
         _lowercase						    =			d_model
         _lowercase						    =			encoder_layers
         _lowercase						    =			encoder_attention_heads
         _lowercase						    =			decoder_layers
         _lowercase						    =			decoder_attention_heads
         _lowercase						    =			decoder_ffn_dim
         _lowercase						    =			encoder_ffn_dim
         _lowercase						    =			dropout
         _lowercase						    =			attention_dropout
         _lowercase						    =			activation_dropout
         _lowercase						    =			activation_function
         _lowercase						    =			init_std
         _lowercase						    =			encoder_layerdrop
         _lowercase						    =			decoder_layerdrop
         _lowercase						    =			use_cache
         _lowercase						    =			encoder_layers
         _lowercase						    =			scale_embedding  # scale factor will be sqrt(d_model) if True
         _lowercase						    =			max_source_positions
         _lowercase						    =			max_target_positions

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

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

         _lowercase						    =			median_filter_width

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





class 					A_					(   UpperCAmelCase						):







       """simple docstring"""





       @property
       def  __UpperCAmelCase			(     self						:						int	)    ->       Mapping[str, Mapping[int, str]]:
         _lowercase						    =			OrderedDict(
             [
                 ('input_features', {0: 'batch', 1: 'feature_size', 2: 'encoder_sequence'}),
             ]	)
         if self.use_past:
           _lowercase						    =			{0: 'batch'}
         else:
           _lowercase						    =			{0: 'batch', 1: 'decoder_sequence'}

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

         return common_inputs







       def  __UpperCAmelCase			(     self						:						Tuple    ,__A						:						Union["PreTrainedTokenizerBase", "FeatureExtractionMixin"]    ,__A						:						int = -1    ,__A						:						int = -1    ,__A						:						bool = False    ,__A						:						Optional["TensorType"] = None    ,__A						:						int = 2_2050    ,__A						:						float = 5.0    ,__A						:						int = 220    ,)    ->       Mapping[str, Any]:
         _lowercase						    =			OrderedDict()
         _lowercase						    =			OnnxConfig.generate_dummy_inputs(
             self    ,preprocessor=preprocessor.feature_extractor    ,batch_size=__A    ,framework=__A    ,sampling_rate=__A    ,time_duration=__A    ,frequency=__A    ,)
         _lowercase						    =			encoder_inputs['input_features'].shape[2]
         _lowercase						    =			encoder_sequence_length // 2 if self.use_past else seq_length

         _lowercase						    =			super().generate_dummy_inputs(
             preprocessor.tokenizer    ,__A    ,__A    ,__A    ,__A	)

         _lowercase						    =			encoder_inputs.pop('input_features'	)
         _lowercase						    =			decoder_inputs.pop('decoder_input_ids'	)

         if "past_key_values" in decoder_inputs:
           _lowercase						    =			decoder_inputs.pop('past_key_values'	)

         return dummy_inputs







       @property
       def  __UpperCAmelCase			(     self						:						Union[str, Any]	)    ->       float:
         return 1e-3

import random
import unittest

import torch

from diffusers import IFInpaintingSuperResolutionPipeline
from diffusers.utils import floats_tensor
from diffusers.utils.import_utils import is_xformers_available
from diffusers.utils.testing_utils import skip_mps, torch_device

from ..pipeline_params import (
    TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS,
    TEXT_GUIDED_IMAGE_INPAINTING_PARAMS,
)
from ..test_pipelines_common import PipelineTesterMixin
from . import IFPipelineTesterMixin

@skip_mps
class 							_UpperCamelCase					(       _A  ,							_A  ,							unittest.TestCase	):






			'''simple docstring'''

			__UpperCamelCase   :    str          =			IFInpaintingSuperResolutionPipeline
			__UpperCamelCase   :    str          =			TEXT_GUIDED_IMAGE_INPAINTING_PARAMS - {"""width""", """height"""}
			__UpperCamelCase   :    Optional[Any]          =			TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS.union({"""original_image"""}	)
			__UpperCamelCase   :    Dict          =			PipelineTesterMixin.required_optional_params - {"""latents"""}

			def    lowerCAmelCase__						(							self			:							Union[str, Any]   ):
							return self._get_superresolution_dummy_components()

			def    lowerCAmelCase__						(							self			:							Dict    ,						snake_case_			:							Optional[int]    ,						snake_case_			:							str=0   ):
							if str(snake_case_   ).startswith("""mps"""   ):
											UpperCamelCase_:				Union[str, Any]						=    torch.manual_seed(snake_case_   )
							else:
											UpperCamelCase_:				Tuple						=    torch.Generator(device=snake_case_   ).manual_seed(snake_case_   )

							UpperCamelCase_:				Dict						=    floats_tensor((1, 3, 16, 16)    ,						rng=random.Random(snake_case_   )   ).to(snake_case_   )
							UpperCamelCase_:				int						=    floats_tensor((1, 3, 32, 32)    ,						rng=random.Random(snake_case_   )   ).to(snake_case_   )
							UpperCamelCase_:				str						=    floats_tensor((1, 3, 32, 32)    ,						rng=random.Random(snake_case_   )   ).to(snake_case_   )

							UpperCamelCase_:				Dict						=    {
							    """prompt""": """A painting of a squirrel eating a burger""",
							    """image""": image,
							    """original_image""": original_image,
							    """mask_image""": mask_image,
							    """generator""": generator,
							    """num_inference_steps""": 2,
							    """output_type""": """numpy""",
							}

							return inputs

			@unittest.skipIf(
			    torch_device != """cuda""" or not is_xformers_available()    ,						reason="""XFormers attention is only available with CUDA and `xformers` installed"""    ,						)
			def    lowerCAmelCase__						(							self			:							Tuple   ):
							self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1e-3   )

			def    lowerCAmelCase__						(							self			:							Union[str, Any]   ):
							self._test_save_load_optional_components()

			@unittest.skipIf(torch_device != """cuda"""    ,						reason="""float16 requires CUDA"""   )
			def    lowerCAmelCase__						(							self			:							List[Any]   ):
							# Due to non-determinism in save load of the hf-internal-testing/tiny-random-t5 text encoder
							super().test_save_load_floataa(expected_max_diff=1e-1   )

			def    lowerCAmelCase__						(							self			:							str   ):
							self._test_attention_slicing_forward_pass(expected_max_diff=1e-2   )

			def    lowerCAmelCase__						(							self			:							str   ):
							self._test_save_load_local()




			def    lowerCAmelCase__						(							self			:							Union[str, Any]   ):
							self._test_inference_batch_single_identical(
							    expected_max_diff=1e-2    ,						)






